Commit d8aa5a4214582532a2fea8e6ea8d8f5c3ba96206
1 parent
55d9a371
Always set socket to -1 on close()
Showing
2 changed files
with
8 additions
and
4 deletions
src/modbus-rtu.c
| @@ -1041,6 +1041,7 @@ static void _modbus_rtu_close(modbus_t *ctx) | @@ -1041,6 +1041,7 @@ static void _modbus_rtu_close(modbus_t *ctx) | ||
| 1041 | if (ctx->s != -1) { | 1041 | if (ctx->s != -1) { |
| 1042 | tcsetattr(ctx->s, TCSANOW, &(ctx_rtu->old_tios)); | 1042 | tcsetattr(ctx->s, TCSANOW, &(ctx_rtu->old_tios)); |
| 1043 | close(ctx->s); | 1043 | close(ctx->s); |
| 1044 | + ctx->s = -1; | ||
| 1044 | } | 1045 | } |
| 1045 | #endif | 1046 | #endif |
| 1046 | } | 1047 | } |
src/modbus-tcp.c
| @@ -318,6 +318,7 @@ static int _modbus_tcp_connect(modbus_t *ctx) | @@ -318,6 +318,7 @@ static int _modbus_tcp_connect(modbus_t *ctx) | ||
| 318 | rc = _modbus_tcp_set_ipv4_options(ctx->s); | 318 | rc = _modbus_tcp_set_ipv4_options(ctx->s); |
| 319 | if (rc == -1) { | 319 | if (rc == -1) { |
| 320 | close(ctx->s); | 320 | close(ctx->s); |
| 321 | + ctx->s = -1; | ||
| 321 | return -1; | 322 | return -1; |
| 322 | } | 323 | } |
| 323 | 324 | ||
| @@ -331,6 +332,7 @@ static int _modbus_tcp_connect(modbus_t *ctx) | @@ -331,6 +332,7 @@ static int _modbus_tcp_connect(modbus_t *ctx) | ||
| 331 | rc = _connect(ctx->s, (struct sockaddr *)&addr, sizeof(addr), &ctx->response_timeout); | 332 | rc = _connect(ctx->s, (struct sockaddr *)&addr, sizeof(addr), &ctx->response_timeout); |
| 332 | if (rc == -1) { | 333 | if (rc == -1) { |
| 333 | close(ctx->s); | 334 | close(ctx->s); |
| 335 | + ctx->s = -1; | ||
| 334 | return -1; | 336 | return -1; |
| 335 | } | 337 | } |
| 336 | 338 | ||
| @@ -421,6 +423,7 @@ static void _modbus_tcp_close(modbus_t *ctx) | @@ -421,6 +423,7 @@ static void _modbus_tcp_close(modbus_t *ctx) | ||
| 421 | if (ctx->s != -1) { | 423 | if (ctx->s != -1) { |
| 422 | shutdown(ctx->s, SHUT_RDWR); | 424 | shutdown(ctx->s, SHUT_RDWR); |
| 423 | close(ctx->s); | 425 | close(ctx->s); |
| 426 | + ctx->s = -1; | ||
| 424 | } | 427 | } |
| 425 | } | 428 | } |
| 426 | 429 | ||
| @@ -616,8 +619,8 @@ int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection) | @@ -616,8 +619,8 @@ int modbus_tcp_pi_listen(modbus_t *ctx, int nb_connection) | ||
| 616 | } | 619 | } |
| 617 | 620 | ||
| 618 | /* On success, the function return a non-negative integer that is a descriptor | 621 | /* On success, the function return a non-negative integer that is a descriptor |
| 619 | - for the accepted socket. On error, -1 is returned, and errno is set | ||
| 620 | - appropriately. */ | 622 | +for the accepted socket. On error, socket is set to -1, -1 is returned and errno |
| 623 | +is set appropriately. */ | ||
| 621 | int modbus_tcp_accept(modbus_t *ctx, int *socket) | 624 | int modbus_tcp_accept(modbus_t *ctx, int *socket) |
| 622 | { | 625 | { |
| 623 | struct sockaddr_in addr; | 626 | struct sockaddr_in addr; |
| @@ -638,7 +641,7 @@ int modbus_tcp_accept(modbus_t *ctx, int *socket) | @@ -638,7 +641,7 @@ int modbus_tcp_accept(modbus_t *ctx, int *socket) | ||
| 638 | 641 | ||
| 639 | if (ctx->s == -1) { | 642 | if (ctx->s == -1) { |
| 640 | close(*socket); | 643 | close(*socket); |
| 641 | - *socket = 0; | 644 | + *socket = -1; |
| 642 | return -1; | 645 | return -1; |
| 643 | } | 646 | } |
| 644 | 647 | ||
| @@ -664,7 +667,7 @@ int modbus_tcp_pi_accept(modbus_t *ctx, int *socket) | @@ -664,7 +667,7 @@ int modbus_tcp_pi_accept(modbus_t *ctx, int *socket) | ||
| 664 | ctx->s = accept(*socket, (void *)&addr, &addrlen); | 667 | ctx->s = accept(*socket, (void *)&addr, &addrlen); |
| 665 | if (ctx->s == -1) { | 668 | if (ctx->s == -1) { |
| 666 | close(*socket); | 669 | close(*socket); |
| 667 | - *socket = 0; | 670 | + *socket = -1; |
| 668 | } | 671 | } |
| 669 | 672 | ||
| 670 | if (ctx->debug) { | 673 | if (ctx->debug) { |