]> git.pld-linux.org Git - packages/curl.git/blob - libcurl.fb-changes.diff
- added config patch to avoid errors when running `curl-config --cflags`
[packages/curl.git] / libcurl.fb-changes.diff
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,
6                                         int *max_fd);
7 + /* Name:    curl_multi_select()
8 +  *
9 +  * Desc:    Calls select() or poll() internally so app can call
10 +  *         curl_multi_perform() as soon as one of them is ready. This is to
11 +  *         fix FD_SETSIZE problem curl_multi_fdset() has.
12 +  *
13 +  * Returns: CURLMcode type, general multi error code.
14 +  */
15 +CURL_EXTERN CURLMcode curl_multi_select(CURLM *multi_handle,
16 +                                       int timeout_ms,
17 +                                       int *ret);
18  
19   /*
20    * Name:    curl_multi_perform()
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
23 @@ -42,6 +42,7 @@
24  #include "timeval.h"
25  #include "http.h"
26  #include "warnless.h"
27 +#include "select.h"
28  
29  #define _MPRINTF_REPLACE /* use our functions only */
30  #include <curl/mprintf.h>
31 @@ -930,6 +931,80 @@
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,
110                                   struct timeval now,
111                                   struct Curl_one_easy *easy)
This page took 0.087143 seconds and 3 git commands to generate.