{
int flags = 1;
int sock;
- mode_t saved_umask;
+ mode_t saved_umask = 0;
sock = socket(sa->sa_family, SOCK_STREAM, 0);
if (wp->listen_address_domain == FPM_AF_UNIX) {
if (fpm_socket_unix_test_connect((struct sockaddr_un *)sa, socklen) == 0) {
zlog(ZLOG_ERROR, "An another FPM instance seems to already listen on %s", ((struct sockaddr_un *) sa)->sun_path);
+ close(sock);
return -1;
}
unlink( ((struct sockaddr_un *) sa)->sun_path);
if (wp->listen_address_domain == FPM_AF_UNIX) {
umask(saved_umask);
}
+ close(sock);
return -1;
}
if (wp->socket_uid != -1 || wp->socket_gid != -1) {
if (0 > chown(path, wp->socket_uid, wp->socket_gid)) {
zlog(ZLOG_SYSERROR, "failed to chown() the socket '%s'", wp->config->listen_address);
+ close(sock);
return -1;
}
}
if (0 > listen(sock, wp->config->listen_backlog)) {
zlog(ZLOG_SYSERROR, "failed to listen to address '%s'", wp->config->listen_address);
+ close(sock);
return -1;
}
if (0 > dup2(fd, STDIN_FILENO) || 0 > dup2(fd, STDOUT_FILENO)) {
zlog(ZLOG_SYSERROR, "failed to init stdio: dup2()");
+ close(fd);
return -1;
}
close(fd);