diff --git a/server.c b/server.c index 7f2c13d..9996e2a 100644 --- a/server.c +++ b/server.c @@ -616,10 +616,14 @@ static int s3_set_data(threadtimer_t *timer) { while(remain > 0) { // printf("remain:%d\n", (int)remain); ssize_t n = recv(timer->accept_fd, timer->data, (remain>TIMERDATSZ)?TIMERDATSZ:remain, MSG_WAITALL); - if(n <= 0) { + if(n < 0) { *(uint32_t*)ret = *(uint32_t*)"erro"; goto S3_RETURN; } + else if(!n) { + usleep(10000); // 10 ms + continue; + } if(fwrite(timer->data, n, 1, timer->fp) != 1) { perror("fwrite"); *(uint32_t*)ret = *(uint32_t*)"erro";