version 1.118, 2014/12/09 19:23:35 |
version 1.119, 2015/04/21 22:32:40 |
|
|
size = strlcpy(sa.sun_path, socket_path, sizeof sa.sun_path); |
size = strlcpy(sa.sun_path, socket_path, sizeof sa.sun_path); |
if (size >= sizeof sa.sun_path) { |
if (size >= sizeof sa.sun_path) { |
errno = ENAMETOOLONG; |
errno = ENAMETOOLONG; |
fatal("socket failed"); |
return (-1); |
} |
} |
unlink(sa.sun_path); |
unlink(sa.sun_path); |
|
|
if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) |
if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) |
fatal("socket failed"); |
return (-1); |
|
|
mask = umask(S_IXUSR|S_IXGRP|S_IRWXO); |
mask = umask(S_IXUSR|S_IXGRP|S_IRWXO); |
if (bind(fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) == -1) |
if (bind(fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) == -1) |
fatal("bind failed"); |
return (-1); |
umask(mask); |
umask(mask); |
|
|
if (listen(fd, 16) == -1) |
if (listen(fd, 16) == -1) |
fatal("listen failed"); |
return (-1); |
setblocking(fd, 0); |
setblocking(fd, 0); |
|
|
server_update_socket(); |
|
|
|
return (fd); |
return (fd); |
} |
} |
|
|
|
|
setproctitle("server (%s)", socket_path); |
setproctitle("server (%s)", socket_path); |
|
|
server_fd = server_create_socket(); |
server_fd = server_create_socket(); |
|
if (server_fd == -1) |
|
fatal("couldn't create socket"); |
|
server_update_socket(); |
server_client_create(pair[1]); |
server_client_create(pair[1]); |
|
|
unlink(lockfile); |
unlink(lockfile); |
|
|
void |
void |
server_signal_callback(int sig, unused short events, unused void *data) |
server_signal_callback(int sig, unused short events, unused void *data) |
{ |
{ |
|
int fd; |
switch (sig) { |
switch (sig) { |
case SIGTERM: |
case SIGTERM: |
server_shutdown = 1; |
server_shutdown = 1; |
|
|
break; |
break; |
case SIGUSR1: |
case SIGUSR1: |
event_del(&server_ev_accept); |
event_del(&server_ev_accept); |
close(server_fd); |
fd = server_create_socket(); |
server_fd = server_create_socket(); |
if (fd != -1) { |
|
close(server_fd); |
|
server_fd = fd; |
|
server_update_socket(); |
|
} |
server_add_accept(0); |
server_add_accept(0); |
break; |
break; |
} |
} |