do not create redirect if client unexpectedly closes connection
Close the socket without creating the redirection, this client did not successfully downloaded the image file. Moreover, check for connection closed by client in all of the possible read states.master
							parent
							
								
									7bf3eebb98
								
							
						
					
					
						commit
						b18630a920
					
				
							
								
								
									
										13
									
								
								src/core.c
								
								
								
								
							
							
						
						
									
										13
									
								
								src/core.c
								
								
								
								
							|  | @ -121,8 +121,14 @@ static void tip_client_read_cb(struct ev_loop *loop, struct ev_io *io, int event | |||
| 	if (ret < 0) | ||||
| 		goto close; | ||||
| 
 | ||||
| 	if (cli->state != TIP_CLIENT_CLOSE_WAIT) | ||||
| 	if (cli->state != TIP_CLIENT_CLOSE_WAIT) { | ||||
| 		if (ret == 0) { | ||||
| 			syslog(LOG_ERR, "client %s:%hu unexpectedly closes connection\n", | ||||
| 			       inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); | ||||
| 			goto close; | ||||
| 		} | ||||
| 		ev_timer_again(loop, &cli->timer); | ||||
| 	} | ||||
| 
 | ||||
| 	cli->buf_len += ret; | ||||
| 	if (cli->buf_len >= sizeof(cli->buf)) { | ||||
|  | @ -168,11 +174,6 @@ static void tip_client_read_cb(struct ev_loop *loop, struct ev_io *io, int event | |||
| 		break; | ||||
| 	case TIP_CLIENT_PROCESSING_REQUEST_2: | ||||
| 	case TIP_CLIENT_PROCESSING_REQUEST_3: | ||||
| 		if (ret == 0) { | ||||
| 			syslog(LOG_ERR, "client %s:%hu unexpectedly closes connection\n", | ||||
| 			       inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); | ||||
| 			goto shutdown; | ||||
| 		} | ||||
| 		syslog(LOG_ERR, "unexpected read from client %s:%hu while in write state\n", | ||||
| 		       inet_ntoa(cli->addr.sin_addr), ntohs(cli->addr.sin_port)); | ||||
| 		goto close; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue