@@ -393,7 +393,9 @@ fn perform(self: *Client, timeout_ms: c_int) !PerformStatus {
393393
394394 // We're potentially going to block for a while until we get data. Process
395395 // whatever messages we have waiting ahead of time.
396- try self .processMessages ();
396+ if (try self .processMessages ()) {
397+ return .normal ;
398+ }
397399
398400 var status = PerformStatus .normal ;
399401 if (self .extra_socket ) | s | {
@@ -411,12 +413,13 @@ fn perform(self: *Client, timeout_ms: c_int) !PerformStatus {
411413 try errorMCheck (c .curl_multi_poll (multi , null , 0 , timeout_ms , null ));
412414 }
413415
414- try self .processMessages ();
416+ _ = try self .processMessages ();
415417 return status ;
416418}
417419
418- fn processMessages (self : * Client ) ! void {
420+ fn processMessages (self : * Client ) ! bool {
419421 const multi = self .multi ;
422+ var processed = false ;
420423 var messages_count : c_int = 0 ;
421424 while (c .curl_multi_info_read (multi , & messages_count )) | msg_ | {
422425 const msg : * c.CURLMsg = @ptrCast (msg_ );
@@ -475,10 +478,12 @@ fn processMessages(self: *Client) !void {
475478 .transfer = transfer ,
476479 });
477480 }
481+ processed = true ;
478482 } else | err | {
479483 self .requestFailed (transfer , err );
480484 }
481485 }
486+ return processed ;
482487}
483488
484489fn endTransfer (self : * Client , transfer : * Transfer ) void {
0 commit comments