mirror of
https://github.com/fumiama/simple-kanban.git
synced 2026-07-02 09:00:27 +08:00
fix
This commit is contained in:
23
server.c
23
server.c
@@ -585,32 +585,27 @@ static int s3_set_data(threadtimer_t *timer) {
|
|||||||
uint32_t file_size = *(uint32_t*)(timer->data);
|
uint32_t file_size = *(uint32_t*)(timer->data);
|
||||||
#endif
|
#endif
|
||||||
printf("Set data size: %u\n", file_size);
|
printf("Set data size: %u\n", file_size);
|
||||||
int is_first_data = 0;
|
if((timer->numbytes = recv(timer->accept_fd, timer->data, TIMERDATSZ, 0)) < 0 && errno != EAGAIN) {
|
||||||
if(timer->numbytes == sizeof(uint32_t)) {
|
*(uint32_t*)ret = *(uint32_t*)"erro";
|
||||||
if((timer->numbytes = recv(timer->accept_fd, timer->data, TIMERDATSZ, MSG_DONTWAIT)) < 0) {
|
goto S3_RETURN;
|
||||||
*(uint32_t*)ret = *(uint32_t*)"erro";
|
|
||||||
goto S3_RETURN;
|
|
||||||
}
|
|
||||||
is_first_data = 1;
|
|
||||||
printf("Get data size: %d\n", (int)timer->numbytes);
|
|
||||||
}
|
}
|
||||||
size_t offset = (is_first_data?0:sizeof(uint32_t));
|
printf("Get data size: %d\n", (int)timer->numbytes);
|
||||||
if(file_size <= TIMERDATSZ - offset) {
|
if(file_size <= TIMERDATSZ) {
|
||||||
while(timer->numbytes != file_size - offset) {
|
while(timer->numbytes != file_size) {
|
||||||
ssize_t n = recv(timer->accept_fd, timer->data + timer->numbytes + offset, TIMERDATSZ - timer->numbytes - offset, MSG_WAITALL);
|
ssize_t n = recv(timer->accept_fd, timer->data + timer->numbytes, TIMERDATSZ - timer->numbytes, MSG_WAITALL);
|
||||||
if(n <= 0) {
|
if(n <= 0) {
|
||||||
*(uint32_t*)ret = *(uint32_t*)"erro";
|
*(uint32_t*)ret = *(uint32_t*)"erro";
|
||||||
goto S3_RETURN;
|
goto S3_RETURN;
|
||||||
}
|
}
|
||||||
timer->numbytes += n;
|
timer->numbytes += n;
|
||||||
}
|
}
|
||||||
if(fwrite(timer->data + offset, file_size, 1, timer->fp) != 1) {
|
if(fwrite(timer->data, file_size, 1, timer->fp) != 1) {
|
||||||
perror("fwrite");
|
perror("fwrite");
|
||||||
*(uint32_t*)ret = *(uint32_t*)"erro";
|
*(uint32_t*)ret = *(uint32_t*)"erro";
|
||||||
}
|
}
|
||||||
goto S3_RETURN;
|
goto S3_RETURN;
|
||||||
}
|
}
|
||||||
if(fwrite(timer->data + offset, timer->numbytes - offset, 1, timer->fp) != 1) {
|
if(timer->numbytes > 0 && fwrite(timer->data, timer->numbytes, 1, timer->fp) != 1) {
|
||||||
perror("fwrite");
|
perror("fwrite");
|
||||||
*(uint32_t*)ret = *(uint32_t*)"erro";
|
*(uint32_t*)ret = *(uint32_t*)"erro";
|
||||||
goto S3_RETURN;
|
goto S3_RETURN;
|
||||||
|
|||||||
Reference in New Issue
Block a user