Commit 2db0744a authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

return CURLM_CALL_MULTI_PERFORM in one more case, and check return code

from malloc()
parent 2de00283
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -323,6 +323,10 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
      {
      {
        struct Curl_message *msg = (struct Curl_message *)
        struct Curl_message *msg = (struct Curl_message *)
          malloc(sizeof(struct Curl_message));
          malloc(sizeof(struct Curl_message));

        if(!msg)
          return CURLM_OUT_OF_MEMORY;

        msg->extmsg.msg = CURLMSG_DONE;
        msg->extmsg.msg = CURLMSG_DONE;
        msg->extmsg.easy_handle = easy->easy_handle;
        msg->extmsg.easy_handle = easy->easy_handle;
        msg->extmsg.data.result = easy->result;
        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 */
        multi->num_msgs++; /* increase message counter */
          
          
      }
      }
      result = CURLM_CALL_MULTI_PERFORM;
      break;
      break;

    case CURLM_STATE_COMPLETED:
    case CURLM_STATE_COMPLETED:
      /* this is a completed transfer, it is likely to still be connected */
      /* 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 */
    easy = easy->next; /* operate on next handle */
  }
  }

  return result;
  return result;
}
}