@@ -44,6 +44,7 @@ int Multi::cb_error(Reactor *reactor, Event *event) {
44
44
45
45
int Multi::handle_socket (CURL *easy, curl_socket_t s, int action, void *userp, void *socketp) {
46
46
Multi *multi = (Multi *) userp;
47
+ swoole_trace_log (SW_TRACE_CO_CURL, SW_ECHO_CYAN " action=%d, userp=%p, socketp=%p" , " [HANDLE_SOCKET]" , action, userp, socketp);
47
48
switch (action) {
48
49
case CURL_POLL_IN:
49
50
case CURL_POLL_OUT:
@@ -94,7 +95,7 @@ void Multi::del_event(CURL *cp, void *socket_ptr, curl_socket_t sockfd) {
94
95
Handle *handle = get_handle (cp);
95
96
handle->socket = nullptr ;
96
97
97
- swoole_trace_log (SW_TRACE_CO_CURL, SW_ECHO_RED " handle=%p, curl=%p, fd=%d" , " [DEL ]" , handle, cp, sockfd);
98
+ swoole_trace_log (SW_TRACE_CO_CURL, SW_ECHO_RED " handle=%p, curl=%p, fd=%d" , " [DEL_EVENT ]" , handle, cp, sockfd);
98
99
}
99
100
100
101
void Multi::set_event (CURL *cp, void *socket_ptr, curl_socket_t sockfd, int action) {
@@ -119,7 +120,7 @@ void Multi::set_event(CURL *cp, void *socket_ptr, curl_socket_t sockfd, int acti
119
120
handle->action = action;
120
121
121
122
swoole_trace_log (
122
- SW_TRACE_CO_CURL, SW_ECHO_GREEN " handle=%p, curl=%p, fd=%d, events=%d" , " [ADD ]" , handle, cp, sockfd, events);
123
+ SW_TRACE_CO_CURL, SW_ECHO_GREEN " handle=%p, curl=%p, fd=%d, events=%d" , " [ADD_EVENT ]" , handle, cp, sockfd, events);
123
124
}
124
125
125
126
CURLMcode Multi::add_handle (CURL *cp) {
@@ -132,6 +133,8 @@ CURLMcode Multi::add_handle(CURL *cp) {
132
133
curl_easy_setopt (cp, CURLOPT_PRIVATE, handle);
133
134
}
134
135
handle->multi = this ;
136
+ swoole_trace_log (
137
+ SW_TRACE_CO_CURL, SW_ECHO_GREEN " handle=%p, curl=%p" , " [ADD_HANDLE]" , handle, cp);
135
138
}
136
139
return retval;
137
140
}
@@ -143,6 +146,8 @@ CURLMcode Multi::remove_handle(CURL *cp) {
143
146
if (handle) {
144
147
handle->multi = nullptr ;
145
148
}
149
+ swoole_trace_log (
150
+ SW_TRACE_CO_CURL, SW_ECHO_RED " handle=%p, curl=%p" , " [REMOVE_HANDLE]" , handle, cp);
146
151
}
147
152
return retval;
148
153
}
@@ -233,6 +238,7 @@ CURLcode Multi::read_info() {
233
238
234
239
int Multi::handle_timeout (CURLM *mh, long timeout_ms, void *userp) {
235
240
Multi *multi = (Multi *) userp;
241
+ swoole_trace_log (SW_TRACE_CO_CURL, SW_ECHO_BLUE " timeout_ms=%d" , " [HANDLE_TIMEOUT]" , timeout_ms);
236
242
if (!swoole_event_is_available ()) {
237
243
return 0 ;
238
244
}
@@ -252,13 +258,20 @@ long Multi::select(php_curlm *mh, double timeout) {
252
258
return 0 ;
253
259
}
254
260
261
+ if (curl_multi_socket_all (multi_handle_, &running_handles_) != CURLM_OK) {
262
+ return CURLE_FAILED_INIT;
263
+ }
264
+
255
265
for (zend_llist_element *element = mh->easyh .head ; element; element = element->next ) {
256
266
zval *z_ch = (zval *) element->data ;
257
267
php_curl *ch;
258
268
if ((ch = swoole_curl_get_handle (z_ch, false )) == NULL ) {
259
269
continue ;
260
270
}
261
271
Handle *handle = get_handle (ch->cp );
272
+
273
+ swoole_trace_log (SW_TRACE_CO_CURL, " handle=%p, handle->socket=%p, handle->socket->removed=%d" , handle, handle ? handle->socket :nullptr );
274
+
262
275
if (handle && handle->socket && handle->socket ->removed ) {
263
276
if (swoole_event_add (handle->socket , get_event (handle->action )) == SW_OK) {
264
277
event_count_++;
@@ -278,6 +291,8 @@ long Multi::select(php_curlm *mh, double timeout) {
278
291
co->yield_ex (timeout);
279
292
co = nullptr ;
280
293
294
+ swoole_trace_log (SW_TRACE_CO_CURL, " yield timeout, count=%d" , zend_llist_count (&mh->easyh ));
295
+
281
296
auto count = selector->active_handles .size ();
282
297
283
298
for (zend_llist_element *element = mh->easyh .head ; element; element = element->next ) {
@@ -297,7 +312,7 @@ long Multi::select(php_curlm *mh, double timeout) {
297
312
298
313
if (selector->timer_callback ) {
299
314
selector->timer_callback = false ;
300
- curl_multi_socket_action (multi_handle_, - 1 , 0 , &running_handles_);
315
+ curl_multi_socket_action (multi_handle_, CURL_SOCKET_TIMEOUT , 0 , &running_handles_);
301
316
swoole_trace_log (SW_TRACE_CO_CURL, " socket_action[timer], running_handles=%d" , running_handles_);
302
317
}
303
318
0 commit comments