X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fioset.c;h=33622af1c55e39f19a298a2702444163d875b074;hb=HEAD;hp=30eb359f816bac41731e7c093146de7326379eec;hpb=b4caaa6cd7399af3254d80f6f82f33b28cbec029;p=srvx.git diff --git a/src/ioset.c b/src/ioset.c index 30eb359..33622af 100644 --- a/src/ioset.c +++ b/src/ioset.c @@ -131,7 +131,7 @@ ioq_grow(struct ioq *ioq) { ioq->get = 0; ioq->buf = new_buf; ioq->size = new_size; - return new_size - ioq->put; + return new_size - ioq->put - 1; } extern struct io_engine io_engine_kevent; @@ -220,18 +220,18 @@ struct io_fd *ioset_listen(struct sockaddr *local, unsigned int sa_size, void *d } if (local && sa_size) { + opt = 1; + res = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&opt, sizeof(opt)); + if (res < 0) { + log_module(MAIN_LOG, LOG_WARNING, "Unable to mark listener address as re-usable: %s", strerror(errno)); + } + res = bind(fd, local, sa_size); if (res < 0) { log_module(MAIN_LOG, LOG_ERROR, "Unable to bind listening socket %d: %s", fd, strerror(errno)); close(fd); return NULL; } - - opt = 1; - res = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&opt, sizeof(opt)); - if (res < 0) { - log_module(MAIN_LOG, LOG_WARNING, "Unable to mark listener address as re-usable: %s", strerror(errno)); - } } res = listen(fd, 1); @@ -439,7 +439,7 @@ ioset_find_line_length(struct io_fd *fd) { static void ioset_buffered_read(struct io_fd *fd) { - int put_avail, nbr, fdnum; + int put_avail, nbr; if (!(put_avail = ioq_put_avail(&fd->recv))) put_avail = ioq_grow(&fd->recv); @@ -474,7 +474,6 @@ ioset_buffered_read(struct io_fd *fd) { fd->recv.put += nbr; if (fd->recv.put == fd->recv.size) fd->recv.put = 0; - fdnum = fd->fd; while (fd->line_len > 0) { struct io_fd *old_active; int died = 0;