diff options
-rw-r--r-- | main.c | 4 | ||||
-rw-r--r-- | plop.c | 6 |
2 files changed, 8 insertions, 2 deletions
@@ -73,7 +73,7 @@ int main(int argc, char ** argv) for (int i = 0; i < nfds; ++i) { fds[i].fd = -1; - fds[i].events = POLLIN | POLLOUT; + fds[i].events = POLLIN; // TODO: Handle yielded writes data[i] = NULL; } const int server = open_server(NULL, service); @@ -91,7 +91,7 @@ int main(int argc, char ** argv) return 5; for (int i = 0; i < nfds; ++i) { - if (-1 == fds[i].fd) + if (-1 == fds[i].fd || 0 == fds[i].revents) continue; if (NULL == data[i]) { @@ -241,6 +241,12 @@ int plop_handle_server(const int server) } } + if (-1 == fcntl(client, F_SETFL, fcntl(client, F_GETFL, 0) | O_NONBLOCK)) + { + close(client); + return 0; // TODO: Revisit error handling in server. + } + struct connection * connection = connection_new(client); if (NULL == connection) return -1; |