From b94cba47cfdf96e72ec894080b3a7bf645a86e9c Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 6 Oct 2011 21:27:10 +0200 Subject: [PATCH] Remember to close sockets on error Signed-off-by: Jens Axboe --- client.c | 5 +++++ engines/net.c | 3 +++ server.c | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/client.c b/client.c index 88da9a1e..10d41e5b 100644 --- a/client.c +++ b/client.c @@ -233,6 +233,7 @@ static int fio_client_connect_ip(struct fio_client *client) if (connect(fd, (struct sockaddr *) &client->addr, sizeof(client->addr)) < 0) { log_err("fio: connect: %s\n", strerror(errno)); log_err("fio: failed to connect to %s\n", client->hostname); + close(fd); return -1; } @@ -258,6 +259,7 @@ static int fio_client_connect_sock(struct fio_client *client) len = sizeof(addr->sun_family) + strlen(addr->sun_path) + 1; if (connect(fd, (struct sockaddr *) addr, len) < 0) { log_err("fio: connect; %s\n", strerror(errno)); + close(fd); return -1; } @@ -395,6 +397,7 @@ static int fio_client_send_ini(struct fio_client *client, const char *filename) if (fstat(fd, &sb) < 0) { log_err("fio: job file stat: %s\n", strerror(errno)); + close(fd); return 1; } @@ -418,11 +421,13 @@ static int fio_client_send_ini(struct fio_client *client, const char *filename) if (len) { log_err("fio: failed reading job file %s\n", filename); + close(fd); return 1; } ret = fio_net_send_cmd(client->fd, FIO_NET_CMD_JOB, buf, sb.st_size); free(buf); + close(fd); return ret; } diff --git a/engines/net.c b/engines/net.c index faa08d5f..d6821a40 100644 --- a/engines/net.c +++ b/engines/net.c @@ -389,6 +389,7 @@ static int fio_netio_connect(struct thread_data *td, struct fio_file *f) if (connect(f->fd, (struct sockaddr *) &nd->addr, len) < 0) { td_verror(td, errno, "connect"); + close(f->fd); return 1; } } else { @@ -399,6 +400,7 @@ static int fio_netio_connect(struct thread_data *td, struct fio_file *f) if (connect(f->fd, (struct sockaddr *) addr, len) < 0) { td_verror(td, errno, "connect"); + close(f->fd); return 1; } } @@ -543,6 +545,7 @@ static int fio_netio_setup_listen_unix(struct thread_data *td, const char *path) if (bind(fd, (struct sockaddr *) addr, len) < 0) { log_err("fio: bind: %s\n", strerror(errno)); + close(fd); return -1; } diff --git a/server.c b/server.c index ba9558ce..c1a2824c 100644 --- a/server.c +++ b/server.c @@ -654,11 +654,13 @@ static int fio_init_server_ip(void) opt = 1; if (setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) { log_err("fio: setsockopt: %s\n", strerror(errno)); + close(sk); return -1; } #ifdef SO_REUSEPORT if (setsockopt(sk, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt)) < 0) { log_err("fio: setsockopt: %s\n", strerror(errno)); + close(sk); return -1; } #endif @@ -668,6 +670,7 @@ static int fio_init_server_ip(void) if (bind(sk, (struct sockaddr *) &saddr_in, sizeof(saddr_in)) < 0) { log_err("fio: bind: %s\n", strerror(errno)); + close(sk); return -1; } @@ -698,6 +701,7 @@ static int fio_init_server_sock(void) if (bind(sk, (struct sockaddr *) &addr, len) < 0) { log_err("fio: bind: %s\n", strerror(errno)); + close(sk); return -1; } -- 2.25.1