Commit ab60a124 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Starting now, adding an easy handle to a multi stack that was already added

to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
parent 2d38e518
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,9 @@
                                  Changelog
                                  Changelog


Daniel (12 October 2006)
Daniel (12 October 2006)
- Starting now, adding an easy handle to a multi stack that was already added
  to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.

- Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
- Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
  and while doing so it became apparent that the current timeout system for
  and while doing so it became apparent that the current timeout system for
  the socket API really was a bit awkward since it become quite some work to
  the socket API really was a bit awkward since it become quite some work to
+1 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@ This release includes the following changes:


This release includes the following bugfixes:
This release includes the following bugfixes:


 o curl_multi_add_handle on an already added handle now fails gracefully
 o multi interface crash if bad function call order was used for cleanup
 o multi interface crash if bad function call order was used for cleanup
 o put a new URL in saved cookie jar files
 o put a new URL in saved cookie jar files
 o configure --with-gssapi-libs
 o configure --with-gssapi-libs
+3 −1
Original line number Original line Diff line number Diff line
@@ -219,7 +219,9 @@ Things are fine.
.IP "CURLM_BAD_HANDLE (1)"
.IP "CURLM_BAD_HANDLE (1)"
The passed-in handle is not a valid CURLM handle.
The passed-in handle is not a valid CURLM handle.
.IP "CURLM_BAD_EASY_HANDLE (2)"
.IP "CURLM_BAD_EASY_HANDLE (2)"
An easy handle was not good/valid.
An easy handle was not good/valid. It could mean that it isn't an easy handle
at all, or possibly that the handle already is in used by this or another
multi handle.
.IP "CURLM_OUT_OF_MEMORY (3)"
.IP "CURLM_OUT_OF_MEMORY (3)"
You are doomed.
You are doomed.
.IP "CURLM_INTERNAL_ERROR (4)"
.IP "CURLM_INTERNAL_ERROR (4)"
+4 −2
Original line number Original line Diff line number Diff line
@@ -373,8 +373,10 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
  if(!GOOD_EASY_HANDLE(easy_handle))
  if(!GOOD_EASY_HANDLE(easy_handle))
    return CURLM_BAD_EASY_HANDLE;
    return CURLM_BAD_EASY_HANDLE;


  /* TODO: add some kind of code that prevents a user from being able to
  /* Prevent users to add the same handle more than once! */
     add the same handle more than once! */
  if(((struct SessionHandle *)easy_handle)->multi)
    /* possibly we should create a new unique error code for this condition */
    return CURLM_BAD_EASY_HANDLE;


  /* Now, time to add an easy handle to the multi stack */
  /* Now, time to add an easy handle to the multi stack */
  easy = (struct Curl_one_easy *)calloc(sizeof(struct Curl_one_easy), 1);
  easy = (struct Curl_one_easy *)calloc(sizeof(struct Curl_one_easy), 1);