Fixes bug #669059. We now extract the Content-Type better and more accurate.
authorDaniel Stenberg <daniel@haxx.se>
Thu, 30 Jan 2003 05:04:02 +0000 (05:04 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 30 Jan 2003 05:04:02 +0000 (05:04 +0000)
lib/transfer.c

index e8cad9e..d977013 100644 (file)
@@ -567,22 +567,29 @@ CURLcode Curl_readwrite(struct connectdata *conn,
                   *start && isspace((int)*start);
                   start++);
 
-              /* count all non-space letters following */
-              for(end=start, len=0;
-                  *end && !isspace((int)*end);
-                  end++, len++);
-
-              /* allocate memory of a cloned copy */
-              if(data->info.contenttype)
-                free(data->info.contenttype);
+              end = strchr(start, '\r');
+              if(!end)
+                end = strchr(start, '\n');
+
+              if(end) {
+                /* skip all trailing space letters */
+                for(; isspace(*end) && (end > start); end--);
+
+                /* get length of the type */
+                len = end-start+1;
               
-              data->info.contenttype = malloc(len + 1);
-              if (NULL == data->info.contenttype)
-                return CURLE_OUT_OF_MEMORY;
+                /* allocate memory of a cloned copy */
+                if(data->info.contenttype)
+                  free(data->info.contenttype);
+              
+                data->info.contenttype = malloc(len + 1);
+                if (NULL == data->info.contenttype)
+                  return CURLE_OUT_OF_MEMORY;
 
-              /* copy the content-type string */
-              memcpy(data->info.contenttype, start, len);
-              data->info.contenttype[len] = 0; /* zero terminate */
+                /* copy the content-type string */
+                memcpy(data->info.contenttype, start, len);
+                data->info.contenttype[len] = 0; /* zero terminate */
+              }
             }
             else if((k->httpversion == 10) &&
                     conn->bits.httpproxy &&