Index: docs/libcurl/curl_multi_add_handle.3
===================================================================
RCS file: /cvsroot/curl/curl/docs/libcurl/curl_multi_add_handle.3,v
retrieving revision 1.5
diff -u -w -p -r1.5 curl_multi_add_handle.3
--- docs/libcurl/curl_multi_add_handle.3	7 Jul 2006 23:08:03 -0000	1.5
+++ docs/libcurl/curl_multi_add_handle.3	22 May 2008 23:53:30 -0000
@@ -11,6 +11,8 @@ CURLMcode curl_multi_add_handle(CURLM *m
 .SH DESCRIPTION
 Adds a standard easy handle to the multi stack. This function call will make
 this \fImulti_handle\fP control the specified \fIeasy_handle\fP.
+Furthermore, libcurl now initiates the connection associated with the
+specified \fIeasy_handle\fP.
 
 When an easy handle has been added to a multi stack, you can not and you must
 not use \fIcurl_easy_perform(3)\fP on that handle!
Index: docs/libcurl/curl_multi_socket.3
===================================================================
RCS file: /cvsroot/curl/curl/docs/libcurl/curl_multi_socket.3,v
retrieving revision 1.12
diff -u -w -p -r1.12 curl_multi_socket.3
--- docs/libcurl/curl_multi_socket.3	6 Mar 2008 12:43:47 -0000	1.12
+++ docs/libcurl/curl_multi_socket.3	22 May 2008 23:53:30 -0000
@@ -46,9 +46,7 @@ socket callback function set with the CU
 previous time this function was called.
 
 Force libcurl to (re-)check all its internal sockets and transfers instead of
-just a single one by calling \fBcurl_multi_socket_all(3)\fP. This is typically
-done as the first function call before the application has any knowledge about
-what sockets libcurl uses.
+just a single one by calling \fBcurl_multi_socket_all(3)\fP.
 
 Get the timeout time - how long to wait for socket actions at most before
 doing the timeout action: call the \fBcurl_multi_socket(3)\fP function with
@@ -125,22 +123,20 @@ function returns OK.
 3. Set the timeout callback with CURLMOPT_TIMERFUNCTION, to get to know what
 timeout value to use when waiting for socket activities.
 
-4. Add easy handles
+4. Add easy handles with curl_multi_add_handle()
 
-5. Call curl_multi_socket_all() first once
-
-6. Provide some means to manage the sockets libcurl is using, so you can check
+5. Provide some means to manage the sockets libcurl is using, so you can check
 them for activity. This can be done through your application code, or by way
 of an external library such as libevent or glib.
 
-7. Wait for activity on any of libcurl's sockets, use the timeout value your
+6. Wait for activity on any of libcurl's sockets, use the timeout value your
 callback has been told
 
-8, When activity is detected, call curl_multi_socket_action() for the
+7, When activity is detected, call curl_multi_socket_action() for the
 socket(s) that got action. If no activity is detected and the timeout expires,
 call \fIcurl_multi_socket(3)\fP with \fICURL_SOCKET_TIMEOUT\fP
 
-9. Go back to step 7.
+8. Go back to step 6.
 .SH AVAILABILITY
 This function was added in libcurl 7.15.4, although deemed stable since
 7.16.0.
Index: include/curl/multi.h
===================================================================
RCS file: /cvsroot/curl/curl/include/curl/multi.h,v
retrieving revision 1.45
diff -u -w -p -r1.45 multi.h
--- include/curl/multi.h	20 May 2008 10:21:50 -0000	1.45
+++ include/curl/multi.h	22 May 2008 23:53:30 -0000
@@ -65,7 +65,8 @@ typedef enum {
   CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */
   CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */
   CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
-  CURLM_LAST
+  CURLM_LAST,
+  CURLM_EASY_HANDLE_EXISTS /* user tried to add same handle more than once */
 } CURLMcode;
 
 /* just to make code nicer when using curl_multi_socket() you can now check
Index: lib/multi.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/multi.c,v
retrieving revision 1.171
diff -u -w -p -r1.171 multi.c
--- lib/multi.c	19 May 2008 20:58:01 -0000	1.171
+++ lib/multi.c	22 May 2008 23:53:31 -0000
@@ -415,8 +415,7 @@ CURLMcode curl_multi_add_handle(CURLM *m
 
   /* Prevent users to 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;
+    return CURLM_EASY_HANDLE_EXISTS;
 
   /* Now, time to add an easy handle to the multi stack */
   easy = (struct Curl_one_easy *)calloc(sizeof(struct Curl_one_easy), 1);
Index: lib/strerror.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/strerror.c,v
retrieving revision 1.50
diff -u -w -p -r1.50 strerror.c
--- lib/strerror.c	12 May 2008 21:43:29 -0000	1.50
+++ lib/strerror.c	22 May 2008 23:53:31 -0000
@@ -333,6 +333,9 @@ curl_multi_strerror(CURLMcode error)
   case CURLM_UNKNOWN_OPTION:
     return "Unknown option";
 
+  case CURLM_EASY_HANDLE_EXISTS:
+    return "Easy handle already added to multi handle";
+
   case CURLM_LAST:
     break;
   }
