From 05a7a386fa7805658a0772129bd008ef5c4c9886 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Wed, 8 Feb 2012 15:04:52 +0100 Subject: [PATCH] fixed some warnings --- src/interface/logger.c | 1 + src/server/run.c | 22 +++++++++++++++++++--- src/socket.c | 1 + src/socket/accept.c | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/interface/logger.c b/src/interface/logger.c index 011d90c..9bf407e 100644 --- a/src/interface/logger.c +++ b/src/interface/logger.c @@ -1,4 +1,5 @@ #include +#include #include #include "logger.h" diff --git a/src/server/run.c b/src/server/run.c index fb0958f..1b0189d 100644 --- a/src/server/run.c +++ b/src/server/run.c @@ -129,12 +129,28 @@ serverRun(Server this) * handle writes */ if (0 != ((this->fds)[i].revents & POLLOUT)) { - write( + int size; + + size = write( (this->fds)[i].fd, (this->conns)[fd].wbuf, strlen((this->conns)[fd].wbuf)); - (this->fds)[i].events = (this->fds)[i].events & ~POLLOUT; - serverCloseConn(this, i); + + if (size == strlen((this->conns)[fd].wbuf) || + -1 == size) { + if (-1 == size) { + loggerLog(this->logger, LOGGER_ERR, + "write error, closing connection"); + } + + (this->fds)[i].events = (this->fds)[i].events & ~POLLOUT; + serverCloseConn(this, i); + } + else { + memmove((this->conns)[fd].wbuf, + (this->conns)[fd].wbuf + size, + strlen((this->conns)[fd].wbuf) - size + 1); + } } } } diff --git a/src/socket.c b/src/socket.c index ac13e1a..e89c704 100644 --- a/src/socket.c +++ b/src/socket.c @@ -1,5 +1,6 @@ #include #include +#include #include "socket.h" #include "logger.h" diff --git a/src/socket/accept.c b/src/socket/accept.c index dc58484..0e2d0a0 100644 --- a/src/socket/accept.c +++ b/src/socket/accept.c @@ -1,4 +1,5 @@ #include /* for errno */ +#include #include "socket.h" #include "interface/class.h"