diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-11-04 23:12:43 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-11-04 23:12:43 +0000 |
commit | b3c4956efeb62bae3c9ac64eab2371bb6384623a (patch) | |
tree | b1209f1fcb7185359eb6931600ecffd824a62da7 /server-client.c | |
parent | 6a6a42aa3a6ebfedc428288babfb9e0b856d5732 (diff) | |
download | rtmux-b3c4956efeb62bae3c9ac64eab2371bb6384623a.tar.gz rtmux-b3c4956efeb62bae3c9ac64eab2371bb6384623a.tar.bz2 rtmux-b3c4956efeb62bae3c9ac64eab2371bb6384623a.zip |
Don't reenlist the client imsg event every loop, instead have a small function
to it and call it after the event triggers or after a imsg is added.
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 28 |
1 files changed, 3 insertions, 25 deletions
diff --git a/server-client.c b/server-client.c index f839c305..2d5701f5 100644 --- a/server-client.c +++ b/server-client.c @@ -61,6 +61,7 @@ server_client_create(int fd) c = xcalloc(1, sizeof *c); c->references = 0; imsg_init(&c->ibuf, fd); + server_update_event(c); if (gettimeofday(&c->creation_time, NULL) != 0) fatal("gettimeofday failed"); @@ -150,30 +151,6 @@ server_client_lost(struct client *c) recalculate_sizes(); } -/* Register clients for poll. */ -void -server_client_prepare(void) -{ - struct client *c; - u_int i; - int events; - - for (i = 0; i < ARRAY_LENGTH(&clients); i++) { - if ((c = ARRAY_ITEM(&clients, i)) == NULL) - continue; - - events = 0; - if (!(c->flags & CLIENT_BAD)) - events |= EV_READ; - if (c->ibuf.w.queued > 0) - events |= EV_WRITE; - event_del(&c->event); - event_set(&c->event, - c->ibuf.fd, events, server_client_callback, c); - event_add(&c->event, NULL); - } -} - /* Process a single client event. */ void server_client_callback(int fd, short events, void *data) @@ -196,7 +173,8 @@ server_client_callback(int fd, short events, void *data) if (events & EV_READ && server_client_msg_dispatch(c) != 0) goto client_lost; } - + + server_update_event(c); return; client_lost: |