Minor refactoring
All checks were successful
Run Unit Tests / build-and-run-unit-tests (push) Successful in 2m1s

Accept connections until there are no more connections to accept in a
single iteration.
This commit is contained in:
Stephen Seo 2024-11-06 14:47:47 +09:00
parent 9ff991d907
commit a27930de85

View file

@ -560,11 +560,14 @@ int main(int argc, char **argv) {
} }
socket_len = sizeof(struct sockaddr_in6); socket_len = sizeof(struct sockaddr_in6);
while (1) {
ret = accept(tcp_socket, (struct sockaddr *)&peer_info, &socket_len); ret = accept(tcp_socket, (struct sockaddr *)&peer_info, &socket_len);
if (ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) { if (ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) {
// No connecting peers, do nothing. // No connecting peers, do nothing.
break;
} else if (ret == -1) { } else if (ret == -1) {
printf("WARNING: accept: errno %d\n", errno); printf("WARNING: accept: errno %d\n", errno);
break;
} else if (ret >= 0) { } else if (ret >= 0) {
// Received connection, handle it. // Received connection, handle it.
if ((args.flags & 1) == 0) { if ((args.flags & 1) == 0) {
@ -579,7 +582,8 @@ int main(int argc, char **argv) {
// Set non-blocking. // Set non-blocking.
ret = fcntl(connection_fd, F_SETFL, O_NONBLOCK); ret = fcntl(connection_fd, F_SETFL, O_NONBLOCK);
if (ret < 0) { if (ret < 0) {
fprintf(stderr, "ERROR Failed to set non-blocking on connection fd!\n"); fprintf(
stderr, "ERROR Failed to set non-blocking on connection fd!\n");
close(connection_fd); close(connection_fd);
continue; continue;
} }
@ -593,6 +597,8 @@ int main(int argc, char **argv) {
c_simple_http_cleanup_connection_item); c_simple_http_cleanup_connection_item);
} else { } else {
printf("WARNING: accept: Unknown invalid state!\n"); printf("WARNING: accept: Unknown invalid state!\n");
break;
}
} }
clock_gettime(CLOCK_MONOTONIC, &connection_context.current_time); clock_gettime(CLOCK_MONOTONIC, &connection_context.current_time);