0
@@ -229,7 +229,7 @@ error:
0
-static void on_readable(struct ev_loop *loop, ev_io *watcher, int revents)
0
+static void on_client_readable(struct ev_loop *loop, ev_io *watcher, int revents)
0
ebb_client *client = (ebb_client*)(watcher->data);
0
@@ -244,8 +244,8 @@ static void on_readable(struct ev_loop *loop, ev_io *watcher, int revents)
0
, EBB_BUFFERSIZE - client->read
0
- if(read < 0) goto error; /* XXX is this the right action to take for read==0 ? */
0
+ if(read < 0) goto error;
0
+ if(read == 0) goto error; /* XXX is this the right action to take for read==0 ? */
0
ev_timer_again(loop, &client->timeout_watcher);
0
@@ -326,7 +326,7 @@ static client_init(ebb_server *server, ebb_client *client)
0
/* SETUP READ AND TIMEOUT WATCHERS */
0
client->read_watcher.data = client;
0
- ev_init(&client->read_watcher, on_readable);
0
+ ev_init(&client->read_watcher, on_client_readable);
0
ev_io_set(&client->read_watcher, client->fd, EV_READ | EV_ERROR);
0
ev_io_start(server->loop, &client->read_watcher);
0
@@ -436,21 +436,6 @@ void ebb_server_unlisten(ebb_server *server)
0
-static void server_listen(ebb_server *server)
0
- int r = listen(server->fd, EBB_MAX_CLIENTS);
0
- assert(server->open == FALSE);
0
- server->request_watcher.data = server;
0
- ev_init (&server->request_watcher, on_request);
0
- ev_io_set (&server->request_watcher, server->fd, EV_READ | EV_ERROR);
0
- ev_io_start (server->loop, &server->request_watcher);
0
int ebb_server_listen_on_port(ebb_server *server, const int port)
0
@@ -496,7 +481,14 @@ int ebb_server_listen_on_port(ebb_server *server, const int port)
0
server->port = malloc(sizeof(char)*8); /* for easy access to the port */
0
sprintf(server->port, "%d", port);
0
- server_listen(server);
0
+ assert(server->open == FALSE);
0
+ server->request_watcher.data = server;
0
+ ev_init (&server->request_watcher, on_request);
0
+ ev_io_set (&server->request_watcher, server->fd, EV_READ | EV_ERROR);
0
+ ev_io_start (server->loop, &server->request_watcher);
0
if(sfd > 0) close(sfd);
0
@@ -506,12 +498,12 @@ error:
0
int ebb_server_listen_on_socket(ebb_server *server, const char *socketpath)
0
- int fd = server_socket_unix(socketpath, 0755);
0
- server->socketpath = strdup(socketpath);
0
- server_listen(server);
0
+ // int fd = server_socket_unix(socketpath, 0755);
0
+ // if(fd < 0) return 0;
0
+ // server->socketpath = strdup(socketpath);
0
+ // server_listen(server);
0
@@ -576,6 +568,9 @@ static void on_client_writable(struct ev_loop *loop, ev_io *watcher, int revents
0
ebb_client_close(client);
0
+ } else if(sent == 0) {
0
+ g_message("Sent zero bytes? Closing connection");
0
+ ebb_client_close(client);
0
client->written += sent;
Comments
No one has commented yet.