Use a goto to factor all calls to close() when listen_in() returns

an error. From Michael W. Bombardieri. Thanks.
This commit is contained in:
Alexandre Ratchov 2017-01-03 08:10:11 +01:00
parent 1b8223b94b
commit 7d9db26e38
1 changed files with 7 additions and 8 deletions

View File

@ -257,8 +257,7 @@ listen_in(void *arg)
if (fcntl(sock, F_SETFL, O_NONBLOCK) < 0) {
file_log(f->file);
log_puts(": failed to set non-blocking mode\n");
close(sock);
return;
goto bad_close;
}
if (f->path == NULL) {
opt = 1;
@ -266,14 +265,14 @@ listen_in(void *arg)
&opt, sizeof(int)) < 0) {
file_log(f->file);
log_puts(": failed to set TCP_NODELAY flag\n");
close(sock);
return;
goto bad_close;
}
}
if (sock_new(sock) == NULL) {
close(sock);
return;
}
if (sock_new(sock) == NULL)
goto bad_close;
return;
bad_close:
close(sock);
}
void