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.
This commit is contained in:
Daniel Stenberg
2006-10-12 14:30:47 +00:00
parent 2d38e51867
commit ab60a12465
4 changed files with 11 additions and 3 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)"

View File

@@ -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);