http.c: Use curl_multi_fdset to select on curl fds instead of just sleeping
Instead of sleeping unconditionally for a 50ms, when no data can be read from the http connection(s), use curl_multi_fdset() to obtain the actual file descriptors of the open connections and use them in the select call. This way, the 50ms sleep is interrupted when new data arrives. Signed-off-by: Mika Fischer <mika.fischer@zoopnet.de> Helped-by: Daniel Stenberg <daniel@haxx.se> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Mika Fischer
					Mika Fischer
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							f696543dad
						
					
				
				
					commit
					6f9dd67ffe
				
			
							
								
								
									
										6
									
								
								http.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								http.c
									
									
									
									
									
								
							| @ -651,14 +651,14 @@ void run_active_slot(struct active_request_slot *slot) | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if (slot->in_use && !data_received) { | 		if (slot->in_use && !data_received) { | ||||||
| 			max_fd = 0; | 			max_fd = -1; | ||||||
| 			FD_ZERO(&readfds); | 			FD_ZERO(&readfds); | ||||||
| 			FD_ZERO(&writefds); | 			FD_ZERO(&writefds); | ||||||
| 			FD_ZERO(&excfds); | 			FD_ZERO(&excfds); | ||||||
|  | 			curl_multi_fdset(curlm, &readfds, &writefds, &excfds, &max_fd); | ||||||
| 			select_timeout.tv_sec = 0; | 			select_timeout.tv_sec = 0; | ||||||
| 			select_timeout.tv_usec = 50000; | 			select_timeout.tv_usec = 50000; | ||||||
| 			select(max_fd, &readfds, &writefds, | 			select(max_fd+1, &readfds, &writefds, &excfds, &select_timeout); | ||||||
| 			       &excfds, &select_timeout); |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| #else | #else | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user