]> git.pld-linux.org Git - packages/curl.git/blame - libcurl.fb-changes.diff
- added config patch to avoid errors when running `curl-config --cflags`
[packages/curl.git] / libcurl.fb-changes.diff
CommitLineData
191fac58 1--- curl-7.21.3/include/curl/multi.h~ 2010-09-18 23:00:21.000000000 +0200
2+++ curl-7.21.3/include/curl/multi.h 2010-12-16 09:17:03.909735667 +0100
3@@ -132,6 +132,17 @@
4 fd_set *write_fd_set,
5 fd_set *exc_fd_set,
2e570606 6 int *max_fd);
191fac58 7+ /* Name: curl_multi_select()
2e570606
ER
8+ *
9+ * Desc: Calls select() or poll() internally so app can call
191fac58 10+ * curl_multi_perform() as soon as one of them is ready. This is to
11+ * fix FD_SETSIZE problem curl_multi_fdset() has.
2e570606
ER
12+ *
13+ * Returns: CURLMcode type, general multi error code.
14+ */
15+CURL_EXTERN CURLMcode curl_multi_select(CURLM *multi_handle,
191fac58 16+ int timeout_ms,
17+ int *ret);
18
19 /*
2e570606 20 * Name: curl_multi_perform()
191fac58 21--- curl-7.21.3/lib/multi.c~ 2010-12-15 10:04:43.000000000 +0100
22+++ curl-7.21.3/lib/multi.c 2010-12-16 09:20:29.652705567 +0100
2e570606 23@@ -42,6 +42,7 @@
2e570606
ER
24 #include "timeval.h"
25 #include "http.h"
191fac58 26 #include "warnless.h"
2e570606
ER
27+#include "select.h"
28
29 #define _MPRINTF_REPLACE /* use our functions only */
30 #include <curl/mprintf.h>
191fac58 31@@ -930,6 +931,80 @@
2e570606
ER
32 return CURLM_OK;
33 }
34
35+CURLMcode curl_multi_select(CURLM *multi_handle, int timeout_ms, int *ret) {
36+ struct Curl_multi *multi=(struct Curl_multi *)multi_handle;
37+ struct Curl_one_easy *easy;
38+ curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
39+ int bitmap;
40+ int i;
41+ unsigned int nfds = 0;
42+ struct pollfd *ufds;
43+ int nret = -1;
44+
45+ if(!GOOD_MULTI_HANDLE(multi))
46+ return CURLM_BAD_HANDLE;
47+
48+ easy=multi->easy.next;
49+ while(easy != &multi->easy) {
50+ bitmap = multi_getsock(easy, sockbunch, MAX_SOCKSPEREASYHANDLE);
51+
52+ for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
53+ curl_socket_t s = CURL_SOCKET_BAD;
54+
55+ if(bitmap & GETSOCK_READSOCK(i)) {
56+ ++nfds;
57+ s = sockbunch[i];
58+ }
59+ if(bitmap & GETSOCK_WRITESOCK(i)) {
60+ ++nfds;
61+ s = sockbunch[i];
62+ }
63+ if(s == CURL_SOCKET_BAD) {
64+ break;
65+ }
66+ }
67+
68+ easy = easy->next; /* check next handle */
69+ }
70+
71+ ufds = (struct pollfd *)malloc(nfds * sizeof(struct pollfd));
72+ nfds = 0;
73+
74+ easy=multi->easy.next;
75+ while(easy != &multi->easy) {
76+ bitmap = multi_getsock(easy, sockbunch, MAX_SOCKSPEREASYHANDLE);
77+
78+ for(i=0; i< MAX_SOCKSPEREASYHANDLE; i++) {
79+ curl_socket_t s = CURL_SOCKET_BAD;
80+
81+ if(bitmap & GETSOCK_READSOCK(i)) {
82+ ufds[nfds].fd = sockbunch[i];
83+ ufds[nfds].events = POLLIN;
84+ ++nfds;
85+ s = sockbunch[i];
86+ }
87+ if(bitmap & GETSOCK_WRITESOCK(i)) {
88+ ufds[nfds].fd = sockbunch[i];
89+ ufds[nfds].events = POLLOUT;
90+ ++nfds;
91+ s = sockbunch[i];
92+ }
93+ if(s == CURL_SOCKET_BAD) {
94+ break;
95+ }
96+ }
97+
98+ easy = easy->next; /* check next handle */
99+ }
100+
101+ nret = Curl_poll(ufds, nfds, timeout_ms);
102+ free(ufds);
103+ if (ret) {
104+ *ret = nret;
105+ }
106+ return CURLM_OK;
107+}
108+
109 static CURLMcode multi_runsingle(struct Curl_multi *multi,
191fac58 110 struct timeval now,
2e570606 111 struct Curl_one_easy *easy)
This page took 0.040599 seconds and 4 git commands to generate.