diff options
author | Paweł Krawczyk <pawel.krawczyk@hush.com> | 2015-06-19 14:30:08 +0000 |
---|---|---|
committer | Paweł Krawczyk <pawel.krawczyk@hush.com> | 2015-06-19 14:30:08 +0000 |
commit | bf16da284a72d808e4ffde4a9c2d9a06d7402ec9 (patch) | |
tree | 44d5f2f66b161c2d1cf56275f474202332848efa /libtac/lib | |
parent | 9ee4b2986993479cb9d3d99daaf5d43b70bfe2ad (diff) | |
download | pam_tacplus-bf16da284a72d808e4ffde4a9c2d9a06d7402ec9.tar.gz pam_tacplus-bf16da284a72d808e4ffde4a9c2d9a06d7402ec9.zip |
close socket if any operation fails
Diffstat (limited to 'libtac/lib')
-rw-r--r-- | libtac/lib/connect.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libtac/lib/connect.c b/libtac/lib/connect.c index ab42377..b39c210 100644 --- a/libtac/lib/connect.c +++ b/libtac/lib/connect.c @@ -98,6 +98,7 @@ int tac_connect_single(struct addrinfo *server, const char *key, struct addrinfo if( fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1 ) { TACSYSLOG((LOG_ERR, "%s: cannot set socket non blocking",\ __FUNCTION__)) + close(fd) return LIBTAC_STATUS_CONN_ERR; } @@ -106,6 +107,7 @@ int tac_connect_single(struct addrinfo *server, const char *key, struct addrinfo if (bind(fd, srcaddr->ai_addr, srcaddr->ai_addrlen) < 0) { TACSYSLOG((LOG_ERR, "%s: Failed to bind source address: %s", __FUNCTION__, strerror(errno))) + close(fd) return LIBTAC_STATUS_CONN_ERR; } } @@ -115,6 +117,7 @@ int tac_connect_single(struct addrinfo *server, const char *key, struct addrinfo if((rc == -1) && (errno != EINPROGRESS) && (errno != 0)) { TACSYSLOG((LOG_ERR,\ "%s: connection to %s failed: %m", __FUNCTION__, ip)) + close(fd) return LIBTAC_STATUS_CONN_ERR; } |