From d8aa5a4214582532a2fea8e6ea8d8f5c3ba96206 Mon Sep 17 00:00:00 2001 From: Stéphane Raimbault Date: Fri, 10 May 2013 01:07:02 +0200 Subject: [PATCH] Always set socket to -1 on close() --- src/modbus-rtu.c | 1 + src/modbus-tcp.c | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/modbus-rtu.c b/src/modbus-rtu.c index fed44a7..3ac7324 100644 --- a/src/modbus-rtu.c +++ b/src/modbus-rtu.c @@ -1041,6 +1041,7 @@ static void _modbus_rtu_close(modbus_t *ctx) if (ctx->s != -1) { tcsetattr(ctx->s, TCSANOW, &(ctx_rtu->old_tios)); close(ctx->s); + ctx->s = -1; } #endif } diff --git a/src/modbus-tcp.c b/src/modbus-tcp.c index 0d3a64e..1212b81 100644 --- a/src/modbus-tcp.c +++ b/src/modbus-tcp.c @@ -318,6 +318,7 @@ static int _modbus_tcp_connect(modbus_t *ctx) rc = _modbus_tcp_set_ipv4_options(ctx->s); if (rc == -1) { close(ctx->s); + ctx->s = -1; return -1; } @@ -331,6 +332,7 @@ static int _modbus_tcp_connect(modbus_t *ctx) rc = _connect(ctx->s, (struct sockaddr *)&addr, sizeof(addr), &ctx->response_timeout); if (rc == -1) { close(ctx->s); + ctx->s = -1; return -1; } @@ -421,6 +423,7 @@ static void _modbus_tcp_close(modbus_t *ctx) if (ctx->s != -1) { shutdown(ctx->s, SHUT_RDWR); close(ctx->s); + ctx->s = -1; } } @@ -616,8 +619,8 @@ int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection) } /* On success, the function return a non-negative integer that is a descriptor - for the accepted socket. On error, -1 is returned, and errno is set - appropriately. */ +for the accepted socket. On error, socket is set to -1, -1 is returned and errno +is set appropriately. */ int modbus_tcp_accept(modbus_t *ctx, int *socket) { struct sockaddr_in addr; @@ -638,7 +641,7 @@ int modbus_tcp_accept(modbus_t *ctx, int *socket) if (ctx->s == -1) { close(*socket); - *socket = 0; + *socket = -1; return -1; } @@ -664,7 +667,7 @@ int modbus_tcp_pi_accept(modbus_t *ctx, int *socket) ctx->s = accept(*socket, (void *)&addr, &addrlen); if (ctx->s == -1) { close(*socket); - *socket = 0; + *socket = -1; } if (ctx->debug) { -- libgit2 0.21.4