From 340caf5da3344d8c603cd8ff33f569c6279a34dc Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 19 Mar 2002 10:16:12 +0000 Subject: multi interface overview and description --- docs/libcurl/libcurl-multi.3 | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/libcurl/libcurl-multi.3 (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 new file mode 100644 index 000000000..a07736de2 --- /dev/null +++ b/docs/libcurl/libcurl-multi.3 @@ -0,0 +1,80 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id$ +.\" +.TH libcurl-multi 5 "19 March 2001" "libcurl 7.9.5" "libcurl multi interface" +.SH NAME +libcurl-multi \- how to use the multi interface +.SH DESCRIPTION +This is an overview on how to use the libcurl multi interface in your C +programs. There are specific man pages for each function mentioned in +here. There's also the libcurl-the-guide document for a complete tutorial to +programming with libcurl and the \fIlibcurl(3)\fP man page for an overview of +the libcurl easy interface. + +All functions in the multi interface are prefixed with curl_multi. +.SH "OBJECTIVES" +The multi interface introduces several new abilities that the easy interface +refuses to offer. They are mainly: + +1. Enable a "pull" interface. The application that uses libcurl decides where +and when to ask libcurl to get/send data. + +2. Enable multiple simultaneous transfers in the same thread without making it +complicated for the application. + +3. Enable the application to select() on its own file descriptors and curl's +file descriptors simultaneous easily. +.SH "ONE MULTI HANDLE MANY EASY HANDLES" +To use the multi interface, you must first create a 'multi handle' with +\fIcurl_multi_init\fP. This handle is then used as input to all further +curl_multi_* functions. + +Each single transfer is built up with an easy handle. You must create them, +and setup the appropriate options for each easy handle, as outlined in the +\fIlibcurl(3)\fP man page. + +When the easy handle is setup for a transfer, then instead of using +\fIcurl_easy_perform\fP (as when using the easy interface for transfers), you +should instead add the easy handle to the multi handle using +\fIcurl_easy_add_handl\fP. The multi handle is sometimes referred to as a +\'multi stack\' because of the fact that it may hold a large amount of easy +handles. + +Should you change your mind, the easy handle is again removed from the multi +stack using \fIcurl_multi_remove_handle\fP. Once removed from the multi +handle, you can again use other easy interface functions like +curl_easy_perform or whatever you think is necessary. + +Adding the easy handles to the multi handle does not start any +transfer. Remember that one of the main ideas with this interface is to let +your application drive. You drive the transfers by invoking +\fIcurl_multi_perform\fP. libcurl will then transfer data if there is anything +available to transfer. It'll use the callbacks and everything else you have +setup in the individual easy handles. It'll transfer data on all current +transfers in the multi stack that are ready to transfer anything. It may be +all, it may be none. + +Your application can acquire knowledge from libcurl when it would like to get +invoked to transfer data, so that you don't have to busy-loop and call that +\fIcurl_multi_perform\fP like a mad man! \fIcurl_multi_fdset\fP offers an +interface using which you can extract fd_sets from libcurl to use in select() +or poll() calls in order to get to know when the transfers in the multi stack +might need attention. This also makes it very easy for your program to wait +for input on your own private file descriptors at the same time or perhaps +timeout every now and then, should you want that. + +\fIcurl_multi_perform\fP stores the number of still running transfers in one +of its input arguments, and by reading that you can figure out when all the +transfers in the multi handles are done. 'done' does not mean successful. One +or more of the transfers may have failed. + +To get information about completed transfers, to figure out success or not and +similar, \fIcurl_multi_info_read\fP should be called. It can return a message +about a current or previous transfer. Repeated invokes of the function get +more messages until the message queue is empty. + +When all transfers in the multi stack are done, cleanup the multi handle with +\fIcurl_multi_cleanup\fP. Be careful and please note that you \fBMUST\fP +invoke separate \fIcurl_easy_cleanup\fP calls on every single easy handle to +clean them up properly. -- cgit v1.2.1 From eb0f72781833542689076253da0a74e1991e6242 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 20 Mar 2002 10:11:50 +0000 Subject: newcomer notice added --- docs/libcurl/libcurl-multi.3 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index a07736de2..0dc3f6216 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -2,7 +2,7 @@ .\" nroff -man [file] .\" $Id$ .\" -.TH libcurl-multi 5 "19 March 2001" "libcurl 7.9.5" "libcurl multi interface" +.TH libcurl-multi 5 "20 March 2001" "libcurl 7.9.5" "libcurl multi interface" .SH NAME libcurl-multi \- how to use the multi interface .SH DESCRIPTION @@ -13,6 +13,11 @@ programming with libcurl and the \fIlibcurl(3)\fP man page for an overview of the libcurl easy interface. All functions in the multi interface are prefixed with curl_multi. +.SH "PLEASE NOTICE" +The multi interface is a rather new member of the libcurl family. It has not +yet been very widely used. It may still be a few more bugs lurking in there +than we are used to. That said, it might also just work in every aspect you +try it. Please report all bugs and oddities you see. .SH "OBJECTIVES" The multi interface introduces several new abilities that the easy interface refuses to offer. They are mainly: -- cgit v1.2.1 From bb8c8d273c77df63fc783b6d2557fcb8927f59b8 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 13 Oct 2002 10:18:10 +0000 Subject: added more info --- docs/libcurl/libcurl-multi.3 | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 0dc3f6216..3caa69d82 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -2,7 +2,7 @@ .\" nroff -man [file] .\" $Id$ .\" -.TH libcurl-multi 5 "20 March 2001" "libcurl 7.9.5" "libcurl multi interface" +.TH libcurl-multi 5 "13 Oct 2001" "libcurl 7.10.1" "libcurl multi interface" .SH NAME libcurl-multi \- how to use the multi interface .SH DESCRIPTION @@ -37,7 +37,7 @@ curl_multi_* functions. Each single transfer is built up with an easy handle. You must create them, and setup the appropriate options for each easy handle, as outlined in the -\fIlibcurl(3)\fP man page. +\fIlibcurl(3)\fP man page, using \fIcurl_easy_setopt(3)\fP. When the easy handle is setup for a transfer, then instead of using \fIcurl_easy_perform\fP (as when using the easy interface for transfers), you @@ -49,11 +49,11 @@ handles. Should you change your mind, the easy handle is again removed from the multi stack using \fIcurl_multi_remove_handle\fP. Once removed from the multi handle, you can again use other easy interface functions like -curl_easy_perform or whatever you think is necessary. +\fIcurl_easy_perform\fP on the handle or whatever you think is necessary. -Adding the easy handles to the multi handle does not start any -transfer. Remember that one of the main ideas with this interface is to let -your application drive. You drive the transfers by invoking +Adding the easy handle to the multi handle does not start the transfer. +Remember that one of the main ideas with this interface is to let your +application drive. You drive the transfers by invoking \fIcurl_multi_perform\fP. libcurl will then transfer data if there is anything available to transfer. It'll use the callbacks and everything else you have setup in the individual easy handles. It'll transfer data on all current @@ -62,24 +62,39 @@ all, it may be none. Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that -\fIcurl_multi_perform\fP like a mad man! \fIcurl_multi_fdset\fP offers an +\fIcurl_multi_perform\fP like crazy. \fIcurl_multi_fdset\fP offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. +A little note here about the return codes from the multi functions, and +especially the \fIcurl_multi_perform\fP: if you receive +\fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you should call +\fIcurlm_call_multi_perform\fP again, before you select() on more actions. You +don't have to do it immediately, but the return code means that libcurl may +have more data available to return or that there may be more data to send off +before it is "satisfied". + \fIcurl_multi_perform\fP stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean successful. One -or more of the transfers may have failed. +or more of the transfers may have failed. Tracking when this number changes, +you know when one or more transfers are done. To get information about completed transfers, to figure out success or not and similar, \fIcurl_multi_info_read\fP should be called. It can return a message about a current or previous transfer. Repeated invokes of the function get -more messages until the message queue is empty. +more messages until the message queue is empty. The information you receive +there includes an easy handle pointer which you may use to identify which easy +handle the information regards. When all transfers in the multi stack are done, cleanup the multi handle with \fIcurl_multi_cleanup\fP. Be careful and please note that you \fBMUST\fP invoke separate \fIcurl_easy_cleanup\fP calls on every single easy handle to clean them up properly. + +If you want to re-use an easy handle that was added to the multi handle for +transfer, you must first remove it from the multi stack and then re-add it +again (possbily after having altered some options at your own choice). -- cgit v1.2.1 From b097c2cfb0b64eb04bb45ef84a7fece187d49129 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 3 Dec 2002 12:40:12 +0000 Subject: clarified --- docs/libcurl/libcurl-multi.3 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 3caa69d82..7648ad2dd 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -72,9 +72,9 @@ timeout every now and then, should you want that. A little note here about the return codes from the multi functions, and especially the \fIcurl_multi_perform\fP: if you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you should call -\fIcurlm_call_multi_perform\fP again, before you select() on more actions. You -don't have to do it immediately, but the return code means that libcurl may -have more data available to return or that there may be more data to send off +\fIcurl_multi_perform\fP again, before you select() on more actions. You don't +have to do it immediately, but the return code means that libcurl may have +more data available to return or that there may be more data to send off before it is "satisfied". \fIcurl_multi_perform\fP stores the number of still running transfers in one -- cgit v1.2.1 From 065c8d7a95c6999870eb5acf749c004a31afaba0 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 6 Aug 2003 21:23:42 +0000 Subject: Domenico Andreoli fixed the section number in the main meta data --- docs/libcurl/libcurl-multi.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 7648ad2dd..0fdff2e0b 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -2,7 +2,7 @@ .\" nroff -man [file] .\" $Id$ .\" -.TH libcurl-multi 5 "13 Oct 2001" "libcurl 7.10.1" "libcurl multi interface" +.TH libcurl-multi 3 "13 Oct 2001" "libcurl 7.10.1" "libcurl multi interface" .SH NAME libcurl-multi \- how to use the multi interface .SH DESCRIPTION -- cgit v1.2.1 From 237ec68b0eb41e97193f9fad7fe3b436b897bd52 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 15 Mar 2004 10:26:08 +0000 Subject: better formatting of functions to get better links in the web version --- docs/libcurl/libcurl-multi.3 | 48 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 0fdff2e0b..aadc070ec 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -40,29 +40,29 @@ and setup the appropriate options for each easy handle, as outlined in the \fIlibcurl(3)\fP man page, using \fIcurl_easy_setopt(3)\fP. When the easy handle is setup for a transfer, then instead of using -\fIcurl_easy_perform\fP (as when using the easy interface for transfers), you -should instead add the easy handle to the multi handle using -\fIcurl_easy_add_handl\fP. The multi handle is sometimes referred to as a +\fIcurl_easy_perform(3)\fP (as when using the easy interface for transfers), +you should instead add the easy handle to the multi handle using +\fIcurl_easy_add_handle(3)\fP. The multi handle is sometimes referred to as a \'multi stack\' because of the fact that it may hold a large amount of easy handles. Should you change your mind, the easy handle is again removed from the multi -stack using \fIcurl_multi_remove_handle\fP. Once removed from the multi +stack using \fIcurl_multi_remove_handle(3)\fP. Once removed from the multi handle, you can again use other easy interface functions like \fIcurl_easy_perform\fP on the handle or whatever you think is necessary. Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your application drive. You drive the transfers by invoking -\fIcurl_multi_perform\fP. libcurl will then transfer data if there is anything -available to transfer. It'll use the callbacks and everything else you have -setup in the individual easy handles. It'll transfer data on all current -transfers in the multi stack that are ready to transfer anything. It may be -all, it may be none. +\fIcurl_multi_perform(3)\fP. libcurl will then transfer data if there is +anything available to transfer. It'll use the callbacks and everything else +you have setup in the individual easy handles. It'll transfer data on all +current transfers in the multi stack that are ready to transfer anything. It +may be all, it may be none. Your application can acquire knowledge from libcurl when it would like to get invoked to transfer data, so that you don't have to busy-loop and call that -\fIcurl_multi_perform\fP like crazy. \fIcurl_multi_fdset\fP offers an +\fIcurl_multi_perform(3)\fP like crazy. \fIcurl_multi_fdset(3)\fP offers an interface using which you can extract fd_sets from libcurl to use in select() or poll() calls in order to get to know when the transfers in the multi stack might need attention. This also makes it very easy for your program to wait @@ -70,30 +70,30 @@ for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. A little note here about the return codes from the multi functions, and -especially the \fIcurl_multi_perform\fP: if you receive +especially the \fIcurl_multi_perform(3)\fP: if you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you should call \fIcurl_multi_perform\fP again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". -\fIcurl_multi_perform\fP stores the number of still running transfers in one -of its input arguments, and by reading that you can figure out when all the -transfers in the multi handles are done. 'done' does not mean successful. One -or more of the transfers may have failed. Tracking when this number changes, -you know when one or more transfers are done. +\fIcurl_multi_perform(3)\fP stores the number of still running transfers in +one of its input arguments, and by reading that you can figure out when all +the transfers in the multi handles are done. 'done' does not mean +successful. One or more of the transfers may have failed. Tracking when this +number changes, you know when one or more transfers are done. To get information about completed transfers, to figure out success or not and -similar, \fIcurl_multi_info_read\fP should be called. It can return a message -about a current or previous transfer. Repeated invokes of the function get -more messages until the message queue is empty. The information you receive -there includes an easy handle pointer which you may use to identify which easy -handle the information regards. +similar, \fIcurl_multi_info_read(3)\fP should be called. It can return a +message about a current or previous transfer. Repeated invokes of the function +get more messages until the message queue is empty. The information you +receive there includes an easy handle pointer which you may use to identify +which easy handle the information regards. When all transfers in the multi stack are done, cleanup the multi handle with -\fIcurl_multi_cleanup\fP. Be careful and please note that you \fBMUST\fP -invoke separate \fIcurl_easy_cleanup\fP calls on every single easy handle to -clean them up properly. +\fIcurl_multi_cleanup(3)\fP. Be careful and please note that you \fBMUST\fP +invoke separate \fIcurl_easy_cleanup(3)\fP calls on every single easy handle +to clean them up properly. If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it -- cgit v1.2.1 From c79fa187b97ea6cf78e1162fdf04aedd32d51778 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 15 Mar 2004 11:26:53 +0000 Subject: more fixes --- docs/libcurl/libcurl-multi.3 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index aadc070ec..90b627329 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -42,14 +42,14 @@ and setup the appropriate options for each easy handle, as outlined in the When the easy handle is setup for a transfer, then instead of using \fIcurl_easy_perform(3)\fP (as when using the easy interface for transfers), you should instead add the easy handle to the multi handle using -\fIcurl_easy_add_handle(3)\fP. The multi handle is sometimes referred to as a +\fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a \'multi stack\' because of the fact that it may hold a large amount of easy handles. Should you change your mind, the easy handle is again removed from the multi stack using \fIcurl_multi_remove_handle(3)\fP. Once removed from the multi handle, you can again use other easy interface functions like -\fIcurl_easy_perform\fP on the handle or whatever you think is necessary. +\fIcurl_easy_perform(3)\fP on the handle or whatever you think is necessary. Adding the easy handle to the multi handle does not start the transfer. Remember that one of the main ideas with this interface is to let your @@ -72,9 +72,9 @@ timeout every now and then, should you want that. A little note here about the return codes from the multi functions, and especially the \fIcurl_multi_perform(3)\fP: if you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you should call -\fIcurl_multi_perform\fP again, before you select() on more actions. You don't -have to do it immediately, but the return code means that libcurl may have -more data available to return or that there may be more data to send off +\fIcurl_multi_perform(3)\fP again, before you select() on more actions. You +don't have to do it immediately, but the return code means that libcurl may +have more data available to return or that there may be more data to send off before it is "satisfied". \fIcurl_multi_perform(3)\fP stores the number of still running transfers in -- cgit v1.2.1 From 6dc8fac1229c7cb23995dd105f3cd5184d4bd6ca Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 15 Mar 2004 11:37:37 +0000 Subject: random formatting updates to look better in HTML version --- docs/libcurl/libcurl-multi.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 90b627329..13b6b84dc 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -32,7 +32,7 @@ complicated for the application. file descriptors simultaneous easily. .SH "ONE MULTI HANDLE MANY EASY HANDLES" To use the multi interface, you must first create a 'multi handle' with -\fIcurl_multi_init\fP. This handle is then used as input to all further +\fIcurl_multi_init(3)\fP. This handle is then used as input to all further curl_multi_* functions. Each single transfer is built up with an easy handle. You must create them, -- cgit v1.2.1 From 4b78b4124eee95c42f05e9c3df9ca798a0318db9 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 24 Mar 2004 21:40:45 +0000 Subject: Tor Arntsen's major ispell patch --- docs/libcurl/libcurl-multi.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 13b6b84dc..b97ac9856 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -71,7 +71,7 @@ timeout every now and then, should you want that. A little note here about the return codes from the multi functions, and especially the \fIcurl_multi_perform(3)\fP: if you receive -\fICURLM_CALL_MULTI_PERFORM\fP, this basicly means that you should call +\fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you should call \fIcurl_multi_perform(3)\fP again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off @@ -97,4 +97,4 @@ to clean them up properly. If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it -again (possbily after having altered some options at your own choice). +again (possibly after having altered some options at your own choice). -- cgit v1.2.1 From 0d259b898bf6cc09de17115e4c696c48c97b1bd4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 21 Jun 2004 08:28:18 +0000 Subject: updates --- docs/libcurl/libcurl-multi.3 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index b97ac9856..05e720359 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -8,9 +8,9 @@ libcurl-multi \- how to use the multi interface .SH DESCRIPTION This is an overview on how to use the libcurl multi interface in your C programs. There are specific man pages for each function mentioned in -here. There's also the libcurl-the-guide document for a complete tutorial to -programming with libcurl and the \fIlibcurl(3)\fP man page for an overview of -the libcurl easy interface. +here. There's also the \fIlibcurl-tutorial(3)f\P man page for a complete +tutorial to programming with libcurl and the \fIlibcurl-easy(3)\fP man page +for an overview of the libcurl easy interface. All functions in the multi interface are prefixed with curl_multi. .SH "PLEASE NOTICE" -- cgit v1.2.1 From 35618b4712ed45553020f5d509602d9faee5b3d1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 17 Jul 2004 08:22:50 +0000 Subject: minor format fix --- docs/libcurl/libcurl-multi.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 05e720359..7d08b1e23 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -8,7 +8,7 @@ libcurl-multi \- how to use the multi interface .SH DESCRIPTION This is an overview on how to use the libcurl multi interface in your C programs. There are specific man pages for each function mentioned in -here. There's also the \fIlibcurl-tutorial(3)f\P man page for a complete +here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete tutorial to programming with libcurl and the \fIlibcurl-easy(3)\fP man page for an overview of the libcurl easy interface. -- cgit v1.2.1 From 060b6ce1481d523d93532e07b4b924597d838c5c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 17 Jul 2004 08:24:22 +0000 Subject: the multi interface is not so new anymore! --- docs/libcurl/libcurl-multi.3 | 5 ----- 1 file changed, 5 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 7d08b1e23..955063a34 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -13,11 +13,6 @@ tutorial to programming with libcurl and the \fIlibcurl-easy(3)\fP man page for an overview of the libcurl easy interface. All functions in the multi interface are prefixed with curl_multi. -.SH "PLEASE NOTICE" -The multi interface is a rather new member of the libcurl family. It has not -yet been very widely used. It may still be a few more bugs lurking in there -than we are used to. That said, it might also just work in every aspect you -try it. Please report all bugs and oddities you see. .SH "OBJECTIVES" The multi interface introduces several new abilities that the easy interface refuses to offer. They are mainly: -- cgit v1.2.1 From 01f5f0be5aa534564a61fa3ea976dd72de7d2c0d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 26 Jun 2006 06:43:45 +0000 Subject: changed wording slightly, and added standard boiler-plate header --- docs/libcurl/libcurl-multi.3 | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 955063a34..b6d95b1d7 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -1,6 +1,25 @@ -.\" You can view this file with: -.\" nroff -man [file] -.\" $Id$ +.\" ************************************************************************** +.\" * _ _ ____ _ +.\" * Project ___| | | | _ \| | +.\" * / __| | | | |_) | | +.\" * | (__| |_| | _ <| |___ +.\" * \___|\___/|_| \_\_____| +.\" * +.\" * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. +.\" * +.\" * This software is licensed as described in the file COPYING, which +.\" * you should have received as part of this distribution. The terms +.\" * are also available at http://curl.haxx.se/docs/copyright.html. +.\" * +.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell +.\" * copies of the Software, and permit persons to whom the Software is +.\" * furnished to do so, under the terms of the COPYING file. +.\" * +.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +.\" * KIND, either express or implied. +.\" * +.\" * $Id$ +.\" ************************************************************************** .\" .TH libcurl-multi 3 "13 Oct 2001" "libcurl 7.10.1" "libcurl multi interface" .SH NAME @@ -14,8 +33,8 @@ for an overview of the libcurl easy interface. All functions in the multi interface are prefixed with curl_multi. .SH "OBJECTIVES" -The multi interface introduces several new abilities that the easy interface -refuses to offer. They are mainly: +The multi interface offers several abilities that the easy interface doesn't. +They are mainly: 1. Enable a "pull" interface. The application that uses libcurl decides where and when to ask libcurl to get/send data. @@ -23,8 +42,8 @@ and when to ask libcurl to get/send data. 2. Enable multiple simultaneous transfers in the same thread without making it complicated for the application. -3. Enable the application to select() on its own file descriptors and curl's -file descriptors simultaneous easily. +3. Enable the application to wait for action on its own file descriptors and +curl's file descriptors simultaneous easily. .SH "ONE MULTI HANDLE MANY EASY HANDLES" To use the multi interface, you must first create a 'multi handle' with \fIcurl_multi_init(3)\fP. This handle is then used as input to all further -- cgit v1.2.1 From 8f87c15bdac63b1128a56c89a85fd3d03828b8c6 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 3 Feb 2007 21:35:11 +0000 Subject: some additional info --- docs/libcurl/libcurl-multi.3 | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index b6d95b1d7..a3e579cbb 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -21,7 +21,7 @@ .\" * $Id$ .\" ************************************************************************** .\" -.TH libcurl-multi 3 "13 Oct 2001" "libcurl 7.10.1" "libcurl multi interface" +.TH libcurl-multi 3 "3 Feb 2007" "libcurl 7.16.0" "libcurl multi interface" .SH NAME libcurl-multi \- how to use the multi interface .SH DESCRIPTION @@ -112,3 +112,22 @@ to clean them up properly. If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). +.SH "MULTI_SOCKET" +Since 7.16.0, the \fIcurl_multi_socket(3)\fP function offers a way for +applications to not only avoid being forced to use select(), but it also +offers a much more high-performing API that will make a significant difference +for applications using large numbers of simultaneous connections. + +\fIcurl_multi_socket(3)\fP (and \fIcurl_multi_socket_all(3)\fP) is then used +instead of \fIcurl_multi_perform(3)\fP. +.SH "BLOCKING" +A few areas in the code are still using blocking code, even when used from the +multi interface. While we certainly want and intend for these to get fixed in +the future, you should be aware of the following current restrictions: + + - Name resolves on non-windows unless c-ares is used + - GnuTLS SSL connections + - Active FTP connections + - HTTP proxy CONNECT operations + - SCP and SFTP connections + - SFTP transfers -- cgit v1.2.1 From 61f19c6ca3b8fa75eeef5b32f9d7be64e1965f19 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 10 Feb 2007 12:07:46 +0000 Subject: file:// transfers are blocking --- docs/libcurl/libcurl-multi.3 | 1 + 1 file changed, 1 insertion(+) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index a3e579cbb..c9ef3c056 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -131,3 +131,4 @@ the future, you should be aware of the following current restrictions: - HTTP proxy CONNECT operations - SCP and SFTP connections - SFTP transfers + - file:// transfers -- cgit v1.2.1 From f2eb3c1f791599fce77c0f0e6a9cab5c622fb020 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 23 May 2007 12:51:52 +0000 Subject: fix the formatting of the trailing list --- docs/libcurl/libcurl-multi.3 | 2 ++ 1 file changed, 2 insertions(+) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index c9ef3c056..a7010fe4e 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -125,6 +125,7 @@ A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions: +.nf - Name resolves on non-windows unless c-ares is used - GnuTLS SSL connections - Active FTP connections @@ -132,3 +133,4 @@ the future, you should be aware of the following current restrictions: - SCP and SFTP connections - SFTP transfers - file:// transfers +.fi -- cgit v1.2.1 From 380e132da3557235e4eb9aa593e79c62100156ea Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 23 May 2007 12:59:12 +0000 Subject: TFTP transfers are also blocking --- docs/libcurl/libcurl-multi.3 | 1 + 1 file changed, 1 insertion(+) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index a7010fe4e..9afb107ed 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -132,5 +132,6 @@ the future, you should be aware of the following current restrictions: - HTTP proxy CONNECT operations - SCP and SFTP connections - SFTP transfers + - TFTP transfers - file:// transfers .fi -- cgit v1.2.1 From ebb5e1db4b0a3cb1061ac992d615ad0bdadf2fd7 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 26 May 2007 20:50:00 +0000 Subject: Clarify a bit about the fact that easy handles remain in the multi stack when transfers are done and need to be removed and closed or re-added. --- docs/libcurl/libcurl-multi.3 | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 9afb107ed..9b36212e1 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -104,6 +104,12 @@ get more messages until the message queue is empty. The information you receive there includes an easy handle pointer which you may use to identify which easy handle the information regards. +When a single transfer is completed, the easy handle is still left added to +the multi stack. You need to first remove the easy handle with +\fIcurl_multi_remove_handle(3)\fP and then close it with +\fIcurl_easy_cleanup(3)\fP, or possibly set new options to it and add it again +with \fIcurl_multi_add_handle(3)\fP to start another transfer. + When all transfers in the multi stack are done, cleanup the multi handle with \fIcurl_multi_cleanup(3)\fP. Be careful and please note that you \fBMUST\fP invoke separate \fIcurl_easy_cleanup(3)\fP calls on every single easy handle -- cgit v1.2.1 From ba5c71b79b13e6674a68bc511043b085ed156048 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 30 Jul 2007 21:47:56 +0000 Subject: less blocking these days --- docs/libcurl/libcurl-multi.3 | 2 -- 1 file changed, 2 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 9b36212e1..6e33581d1 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -136,8 +136,6 @@ the future, you should be aware of the following current restrictions: - GnuTLS SSL connections - Active FTP connections - HTTP proxy CONNECT operations - - SCP and SFTP connections - - SFTP transfers - TFTP transfers - file:// transfers .fi -- cgit v1.2.1 From f61cfc59314e4779c13312efc4845f580f0933b1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 28 Dec 2008 21:56:56 +0000 Subject: Anthony Bryan's man page cleanup in language and spelling --- docs/libcurl/libcurl-multi.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 6e33581d1..0b70ae943 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -121,7 +121,7 @@ again (possibly after having altered some options at your own choice). .SH "MULTI_SOCKET" Since 7.16.0, the \fIcurl_multi_socket(3)\fP function offers a way for applications to not only avoid being forced to use select(), but it also -offers a much more high-performing API that will make a significant difference +offers a much more high-performance API that will make a significant difference for applications using large numbers of simultaneous connections. \fIcurl_multi_socket(3)\fP (and \fIcurl_multi_socket_all(3)\fP) is then used -- cgit v1.2.1 From 197830a57ddac917a527cab50c25871b1cff3d62 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 11 May 2009 20:24:14 +0000 Subject: TELNET transfers and SOCKS handshakes are blocking too --- docs/libcurl/libcurl-multi.3 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 0b70ae943..0e75bde03 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -136,6 +136,8 @@ the future, you should be aware of the following current restrictions: - GnuTLS SSL connections - Active FTP connections - HTTP proxy CONNECT operations + - SOCKS proxy handshakes - TFTP transfers - file:// transfers + - TELNET transfers .fi -- cgit v1.2.1 From 78c674a6852a4ef6ccec2b13d2d1f655a8c18549 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 11 May 2009 20:31:17 +0000 Subject: curl_multi_socket_action() is the one we favor! --- docs/libcurl/libcurl-multi.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 0e75bde03..af2198498 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -124,7 +124,7 @@ applications to not only avoid being forced to use select(), but it also offers a much more high-performance API that will make a significant difference for applications using large numbers of simultaneous connections. -\fIcurl_multi_socket(3)\fP (and \fIcurl_multi_socket_all(3)\fP) is then used +\fIcurl_multi_socket_action(3)\fP is then used instead of \fIcurl_multi_perform(3)\fP. .SH "BLOCKING" A few areas in the code are still using blocking code, even when used from the -- cgit v1.2.1 From 7ae624e7004338683c659fe881c1847fe9ee708a Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 15 Jun 2009 20:49:23 +0000 Subject: curl_multi_socket_action() is the one to use nowadays, as Mohun Biswas pointed out! --- docs/libcurl/libcurl-multi.3 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index af2198498..17041f576 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -119,10 +119,10 @@ If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). .SH "MULTI_SOCKET" -Since 7.16.0, the \fIcurl_multi_socket(3)\fP function offers a way for +Since 7.16.0, the \fIcurl_multi_socket_action(3)\fP function offers a way for applications to not only avoid being forced to use select(), but it also -offers a much more high-performance API that will make a significant difference -for applications using large numbers of simultaneous connections. +offers a much more high-performance API that will make a significant +difference for applications using large numbers of simultaneous connections. \fIcurl_multi_socket_action(3)\fP is then used instead of \fIcurl_multi_perform(3)\fP. -- cgit v1.2.1 From b3e8cf539d0105c2d1cbcab6b0090d3d034fd8ae Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 11 Nov 2009 14:54:45 +0000 Subject: NSS SSL connections are also blocking --- docs/libcurl/libcurl-multi.3 | 1 + 1 file changed, 1 insertion(+) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 17041f576..df4416f3f 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -134,6 +134,7 @@ the future, you should be aware of the following current restrictions: .nf - Name resolves on non-windows unless c-ares is used - GnuTLS SSL connections + - NSS SSL connections - Active FTP connections - HTTP proxy CONNECT operations - SOCKS proxy handshakes -- cgit v1.2.1 From 9ac65581bb08dd6f67d249d59bb834a1673d3a89 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 21 Feb 2010 14:40:22 +0000 Subject: TFTP transfers are not blocking since 7.20.0 --- docs/libcurl/libcurl-multi.3 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index df4416f3f..4ff5f4924 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -138,7 +138,6 @@ the future, you should be aware of the following current restrictions: - Active FTP connections - HTTP proxy CONNECT operations - SOCKS proxy handshakes - - TFTP transfers - file:// transfers - TELNET transfers .fi -- cgit v1.2.1 From 2309b4e330b96bc2e1f8e36b6184015e59544037 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 24 Mar 2010 11:02:54 +0100 Subject: remove the CVSish $Id$ lines --- docs/libcurl/libcurl-multi.3 | 1 - 1 file changed, 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 4ff5f4924..d84bafcad 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -18,7 +18,6 @@ .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY .\" * KIND, either express or implied. .\" * -.\" * $Id$ .\" ************************************************************************** .\" .TH libcurl-multi 3 "3 Feb 2007" "libcurl 7.16.0" "libcurl multi interface" -- cgit v1.2.1 From 9f2f8d5122e1a88835bca132dab0d03fdec0da48 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 28 Sep 2011 13:53:59 +0200 Subject: multi docs: extended the multi_socket API description --- docs/libcurl/libcurl-multi.3 | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index d84bafcad..6cad56756 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -118,13 +118,32 @@ If you want to re-use an easy handle that was added to the multi handle for transfer, you must first remove it from the multi stack and then re-add it again (possibly after having altered some options at your own choice). .SH "MULTI_SOCKET" -Since 7.16.0, the \fIcurl_multi_socket_action(3)\fP function offers a way for -applications to not only avoid being forced to use select(), but it also -offers a much more high-performance API that will make a significant -difference for applications using large numbers of simultaneous connections. - -\fIcurl_multi_socket_action(3)\fP is then used -instead of \fIcurl_multi_perform(3)\fP. +\fIcurl_multi_socket_action(3)\fP function offers a way for applications to +not only avoid being forced to use select(), but it also offers a much more +high-performance API that will make a significant difference for applications +using large numbers of simultaneous connections. + +\fIcurl_multi_socket_action(3)\fP is then used instead of +\fIcurl_multi_perform(3)\fP. + +When using this API, you add easy handles to the multi handle just as with the +normal multi interface. Then you also set two callbacks with the +CURLMOPT_SOCKETFUNCTION and CURLMOPT_TIMERFUNCTION options to +\fIcurl_multi_setopt(3)\fP. + +The API is then designed to inform your application about which sockets +libcurl is currently using and for what activities (read and/or write) on +those sockets your application is expected to wait for. + +Your application must then make sure to receive all sockets informed about in +the CURLMOPT_SOCKETFUNCTION callback and make sure it reacts on the given +activity on them. When a socket has the given activity, you call +\fIcurl_multi_socket_action(3)\fP specifying which socket and action there +are. + +The CURLMOPT_TIMERFUNCTION callback is called to set a timeout. When that +timeout expires, your application should call the +\fIcurl_multi_socket_action(3)\fP function saying it was due to a timeout. .SH "BLOCKING" A few areas in the code are still using blocking code, even when used from the multi interface. While we certainly want and intend for these to get fixed in -- cgit v1.2.1 From adaa3f6e141ae4e721fb2d426a9b7a181ffb4fb8 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 20 Oct 2011 08:48:15 +0200 Subject: CURLM_CALL_MULTI_PERFORM: remove mention This return code has not been used since 7.20.0 so we can stop mentioning it for current libcurl. --- docs/libcurl/libcurl-multi.3 | 8 -------- 1 file changed, 8 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 6cad56756..21cf8218b 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -82,14 +82,6 @@ might need attention. This also makes it very easy for your program to wait for input on your own private file descriptors at the same time or perhaps timeout every now and then, should you want that. -A little note here about the return codes from the multi functions, and -especially the \fIcurl_multi_perform(3)\fP: if you receive -\fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you should call -\fIcurl_multi_perform(3)\fP again, before you select() on more actions. You -don't have to do it immediately, but the return code means that libcurl may -have more data available to return or that there may be more data to send off -before it is "satisfied". - \fIcurl_multi_perform(3)\fP stores the number of still running transfers in one of its input arguments, and by reading that you can figure out when all the transfers in the multi handles are done. 'done' does not mean -- cgit v1.2.1 From 120025b7f853562af685e6385794c518eccc28c4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 27 Oct 2011 09:22:15 +0200 Subject: libcurl-multi.3: update the list of areas still blocking --- docs/libcurl/libcurl-multi.3 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 21cf8218b..44cf54313 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -142,8 +142,7 @@ multi interface. While we certainly want and intend for these to get fixed in the future, you should be aware of the following current restrictions: .nf - - Name resolves on non-windows unless c-ares is used - - GnuTLS SSL connections + - Name resolves unless the c-ares or threaded-resolver backends are used - NSS SSL connections - Active FTP connections - HTTP proxy CONNECT operations -- cgit v1.2.1 From b06ed249d23a8d9bc5fe8a98e04a61f581443c0d Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 20 Dec 2011 20:32:31 +0100 Subject: libcurl-multi.3: active FTP is no longer blocking! --- docs/libcurl/libcurl-multi.3 | 1 - 1 file changed, 1 deletion(-) (limited to 'docs/libcurl/libcurl-multi.3') diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3 index 44cf54313..2af029961 100644 --- a/docs/libcurl/libcurl-multi.3 +++ b/docs/libcurl/libcurl-multi.3 @@ -144,7 +144,6 @@ the future, you should be aware of the following current restrictions: .nf - Name resolves unless the c-ares or threaded-resolver backends are used - NSS SSL connections - - Active FTP connections - HTTP proxy CONNECT operations - SOCKS proxy handshakes - file:// transfers -- cgit v1.2.1