Controller: fixed cleaning up of control socket file in some cases.
Previously, the unix domain control socket file might have been left in the file system after a failed nxt_listen_socket_create() call.
This commit is contained in:
@@ -48,7 +48,7 @@ nxt_listen_socket_create(nxt_task_t *task, nxt_listen_socket_t *ls)
|
|||||||
|
|
||||||
s = nxt_socket_create(task, family, sa->type, 0, ls->flags);
|
s = nxt_socket_create(task, family, sa->type, 0, ls->flags);
|
||||||
if (s == -1) {
|
if (s == -1) {
|
||||||
goto socket_fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nxt_socket_setsockopt(task, s, SOL_SOCKET, SO_REUSEADDR, 1) != NXT_OK) {
|
if (nxt_socket_setsockopt(task, s, SOL_SOCKET, SO_REUSEADDR, 1) != NXT_OK) {
|
||||||
@@ -95,7 +95,7 @@ nxt_listen_socket_create(nxt_task_t *task, nxt_listen_socket_t *ls)
|
|||||||
access = (S_IRUSR | S_IWUSR);
|
access = (S_IRUSR | S_IWUSR);
|
||||||
|
|
||||||
if (nxt_file_set_access(name, access) != NXT_OK) {
|
if (nxt_file_set_access(name, access) != NXT_OK) {
|
||||||
goto fail;
|
goto listen_fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ nxt_listen_socket_create(nxt_task_t *task, nxt_listen_socket_t *ls)
|
|||||||
if (listen(s, ls->backlog) != 0) {
|
if (listen(s, ls->backlog) != 0) {
|
||||||
nxt_alert(task, "listen(%d, %d) failed %E",
|
nxt_alert(task, "listen(%d, %d) failed %E",
|
||||||
s, ls->backlog, nxt_socket_errno);
|
s, ls->backlog, nxt_socket_errno);
|
||||||
goto fail;
|
goto listen_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
ls->socket = s;
|
ls->socket = s;
|
||||||
@@ -114,11 +114,25 @@ nxt_listen_socket_create(nxt_task_t *task, nxt_listen_socket_t *ls)
|
|||||||
|
|
||||||
return NXT_OK;
|
return NXT_OK;
|
||||||
|
|
||||||
|
listen_fail:
|
||||||
|
|
||||||
|
#if (NXT_HAVE_UNIX_DOMAIN)
|
||||||
|
|
||||||
|
if (family == AF_UNIX) {
|
||||||
|
nxt_file_name_t *name;
|
||||||
|
|
||||||
|
name = (nxt_file_name_t *) sa->u.sockaddr_un.sun_path;
|
||||||
|
|
||||||
|
(void) nxt_file_delete(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
||||||
nxt_socket_close(task, s);
|
if (s != -1) {
|
||||||
|
nxt_socket_close(task, s);
|
||||||
socket_fail:
|
}
|
||||||
|
|
||||||
thr->log = old;
|
thr->log = old;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user