return CURLM_CALL_MULTI_PERFORM in one more case, and check return code
authorDaniel Stenberg <daniel@haxx.se>
Thu, 2 May 2002 22:12:14 +0000 (22:12 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 2 May 2002 22:12:14 +0000 (22:12 +0000)
from malloc()

lib/multi.c

index a1111cc..47bf1c0 100644 (file)
@@ -323,6 +323,10 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
       {
         struct Curl_message *msg = (struct Curl_message *)
           malloc(sizeof(struct Curl_message));
+
+        if(!msg)
+          return CURLM_OUT_OF_MEMORY;
+
         msg->extmsg.msg = CURLMSG_DONE;
         msg->extmsg.easy_handle = easy->easy_handle;
         msg->extmsg.data.result = easy->result;
@@ -339,7 +343,9 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
         multi->num_msgs++; /* increase message counter */
           
       }
+      result = CURLM_CALL_MULTI_PERFORM;
       break;
+
     case CURLM_STATE_COMPLETED:
       /* this is a completed transfer, it is likely to still be connected */
 
@@ -364,6 +370,7 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
 
     easy = easy->next; /* operate on next handle */
   }
+
   return result;
 }