1
0
mirror of https://github.com/fumiama/simple-kanban.git synced 2026-06-05 00:10:29 +08:00
This commit is contained in:
源文雨
2022-10-26 16:49:36 +08:00
parent a8dd86cd2e
commit fe5a799f79

View File

@@ -182,7 +182,12 @@ static void accept_client() {
timer->is_open = 0;
timer->fp = NULL;
timer->status = -1;
FD_SET(timer->accept_fd, &rdfds);
if(send_data(timer->accept_fd, "Welcome to simple kanban server.", 33) <= 0) {
puts("Send banner to new client failed");
clean_timer(timer);
goto HANDLE_CLIENTS;
}
FD_SET(timer->accept_fd, &tmpfds);
puts("Add new client into select list");
} else if(FD_ISSET(fd, &erfds)) { // 主套接字错误
int nfd = accept(fd, (struct sockaddr *)&client_addr, &struct_len);
@@ -325,8 +330,7 @@ static int close_file_and_send(threadtimer_t *timer, char *data, size_t numbytes
// handle_accept 初步解析指令,处理部分粘连
static int handle_accept(threadtimer_t* p) {
int r = 1;
printf("Recv data from client@%d\n", p->index);
if(!~((p)->status) && send_data(my_fd(p), "Welcome to simple kanban server.", 33) <= 0) return 0;
printf("Recv data from client@%d, ", p->index);
if((p)->status == 3) return s3_set_data(p);
while(((p)->numbytes = recv(my_fd(p), my_dat(p), TIMERDATSZ, MSG_DONTWAIT)) > 0) {
touch_timer(p);
@@ -343,7 +347,7 @@ static int handle_accept(threadtimer_t* p) {
if((p)->numbytes <= 0) break;
if(!(r = check_buffer((p)))) break;
}
if((p)->numbytes <= 0) {
if((p)->numbytes < 0) {
perror("recv");
r = r && errno == EWOULDBLOCK;
}