diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2014-11-18 14:34:55 +0100 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2014-11-18 14:47:15 +0100 | 
| commit | e04ccbd506b349e7841fe45c3e6e09e70a90ea3a (patch) | |
| tree | 9f7a52c75643962b935bb64b167bae6fb7ec1956 | |
| parent | 1342a96ecfe0d44c4ae977409799c370b836cfe3 (diff) | |
multi: make multi_runsingle loop internally
simplifies the use of this function at little cost.
| -rw-r--r-- | lib/multi.c | 19 | 
1 files changed, 6 insertions, 13 deletions
diff --git a/lib/multi.c b/lib/multi.c index e01baf332..c261a21ff 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -927,7 +927,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,    bool protocol_connect = FALSE;    bool dophase_done = FALSE;    bool done = FALSE; -  CURLMcode result = CURLM_OK; +  CURLMcode result;    struct SingleRequest *k;    long timeout_ms;    int control; @@ -936,9 +936,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,      return CURLM_BAD_EASY_HANDLE;    do { -    /* this is a single-iteration do-while loop just to allow a -       break to skip to the end of it */      bool disconnect_conn = FALSE; +    result = CURLM_OK;      /* Handle the case when the pipe breaks, i.e., the connection         we're using gets cleaned up and we're left with nothing. */ @@ -1752,7 +1751,7 @@ statemachine_end:          result = CURLM_CALL_MULTI_PERFORM;        }      } -  } WHILE_FALSE; /* just to break out from! */ +  } while(result == CURLM_CALL_MULTI_PERFORM);    if(CURLM_STATE_COMPLETED == data->mstate) {      /* now fill in the Curl_message with this info */ @@ -1797,9 +1796,7 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)      }      sigpipe_ignore(data, &pipe_st); -    do -      result = multi_runsingle(multi, now, data); -    while(CURLM_CALL_MULTI_PERFORM == result); +    result = multi_runsingle(multi, now, data);      sigpipe_restore(&pipe_st);      if(data->set.wildcardmatch) { @@ -2269,9 +2266,7 @@ static CURLMcode multi_socket(struct Curl_multi *multi,          data->easy_conn->cselect_bits = ev_bitmask;        sigpipe_ignore(data, &pipe_st); -      do -        result = multi_runsingle(multi, now, data); -      while(CURLM_CALL_MULTI_PERFORM == result); +      result = multi_runsingle(multi, now, data);        sigpipe_restore(&pipe_st);        if(data->easy_conn && @@ -2313,9 +2308,7 @@ static CURLMcode multi_socket(struct Curl_multi *multi,        SIGPIPE_VARIABLE(pipe_st);        sigpipe_ignore(data, &pipe_st); -      do -        result = multi_runsingle(multi, now, data); -      while(CURLM_CALL_MULTI_PERFORM == result); +      result = multi_runsingle(multi, now, data);        sigpipe_restore(&pipe_st);        if(CURLM_OK >= result)  | 
