From 74216ee392238a401b4c8c044b0d98835d82dd1f Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 23 Mar 2014 12:53:55 +0900 Subject: [PATCH] Code cleanup --- src/transport/tcp.c | 61 ++++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/src/transport/tcp.c b/src/transport/tcp.c index a3dfa4d..3764dd4 100644 --- a/src/transport/tcp.c +++ b/src/transport/tcp.c @@ -692,12 +692,10 @@ static void _socket_callback_read_client(TCPSocket * tcpsocket, AppMessage * message); static void _socket_callback_read_server(TCPSocket * tcpsocket, AppMessage * message); +static int _socket_callback_recv(TCPSocket * tcpsocket); static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket) { - const size_t inc = INC; - ssize_t ssize; - char * p; size_t size; Variable * variable; Buffer * buffer; @@ -709,33 +707,12 @@ static int _tcp_socket_callback_read(int fd, TCPSocket * tcpsocket) /* check parameters */ if(tcpsocket->fd != fd) return -1; - if((p = realloc(tcpsocket->bufin, tcpsocket->bufin_cnt + inc)) == NULL) + if(_socket_callback_recv(tcpsocket) != 0) return -1; - tcpsocket->bufin = p; - if((ssize = recv(tcpsocket->fd, &tcpsocket->bufin[tcpsocket->bufin_cnt], - inc, 0)) < 0) - { - error_set_code(1, "%s", strerror(errno)); - close(tcpsocket->fd); - tcpsocket->fd = -1; - /* FIXME report error */ - return -1; - } - else if(ssize == 0) - { -#ifdef DEBUG - fprintf(stderr, "DEBUG: %s() read() => %ld\n", __func__, ssize); -#endif - close(tcpsocket->fd); - tcpsocket->fd = -1; - /* FIXME report transfer clean shutdown */ - return -1; - } - else - tcpsocket->bufin_cnt += ssize; #ifdef DEBUG fprintf(stderr, "DEBUG: %s() read() => %ld\n", __func__, ssize); #endif + /* FIXME run this code in a loop? */ size = tcpsocket->bufin_cnt; /* deserialize the data as a buffer (containing a message) */ if((variable = variable_new_deserialize_type(VT_BUFFER, &size, @@ -790,6 +767,38 @@ static void _socket_callback_read_server(TCPSocket * tcpsocket, message); } +static int _socket_callback_recv(TCPSocket * tcpsocket) +{ + const size_t inc = INC; + ssize_t ssize; + char * p; + + if((p = realloc(tcpsocket->bufin, tcpsocket->bufin_cnt + inc)) == NULL) + return -1; + tcpsocket->bufin = p; + if((ssize = recv(tcpsocket->fd, &tcpsocket->bufin[tcpsocket->bufin_cnt], + inc, 0)) < 0) + { + error_set_code(1, "%s", strerror(errno)); + close(tcpsocket->fd); + tcpsocket->fd = -1; + /* FIXME report error */ + return -1; + } + else if(ssize == 0) + { +#ifdef DEBUG + fprintf(stderr, "DEBUG: %s() read() => %ld\n", __func__, ssize); +#endif + close(tcpsocket->fd); + tcpsocket->fd = -1; + /* FIXME report transfer clean shutdown */ + return -1; + } + tcpsocket->bufin_cnt += ssize; + return 0; +} + /* tcp_socket_callback_write */ static int _tcp_socket_callback_write(int fd, TCPSocket * tcpsocket)