#include "config.h"
#include "util.h"
#include "cfg_file.h"
+#include "main.h"
sig_atomic_t do_reopen_log = 0;
int
-event_make_socket_nonblocking (int fd)
+make_socket_nonblocking (int fd)
{
if (fcntl(fd, F_SETFL, O_NONBLOCK) == -1) {
+ msg_warn ("make_socket_nonblocking: fcntl failed: %d, '%s'", errno, strerror (errno));
return -1;
}
return 0;
int
make_tcp_socket (struct in_addr *addr, u_short port, gboolean is_server)
{
- struct linger linger;
- int fd, on = 1, r, optlen, s_error;
+ int fd, r, optlen, s_error;
int serrno;
struct sockaddr_in sin;
/* Create socket */
fd = socket (AF_INET, SOCK_STREAM, 0);
if (fd == -1) {
+ msg_warn ("make_tcp_socket: socket failed: %d, '%s'", errno, strerror (errno));
return -1;
}
- if (event_make_socket_nonblocking(fd) < 0) {
+ if (make_socket_nonblocking(fd) < 0) {
goto out;
}
/* Set close on exec */
if (fcntl (fd, F_SETFD, FD_CLOEXEC) == -1) {
+ msg_warn ("make_tcp_socket: fcntl failed: %d, '%s'", errno, strerror (errno));
goto out;
}
- /* Socket options */
- setsockopt (fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on));
- setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, sizeof(on));
- linger.l_onoff = 1;
- linger.l_linger = 5;
- setsockopt (fd, SOL_SOCKET, SO_LINGER, (void *)&linger, sizeof(linger));
-
/* Bind options */
sin.sin_family = AF_INET;
sin.sin_port = htons (port);
if (r == -1) {
if (errno != EINPROGRESS) {
+ msg_warn ("make_tcp_socket: bind/connect failed: %d, '%s'", errno, strerror (errno));
goto out;
}
}
int
accept_from_socket (int listen_sock, struct sockaddr *addr, socklen_t *len)
{
- struct linger linger;
- int nfd, on = 1;
+ int nfd;
int serrno;
if ((nfd = accept (listen_sock, addr, len)) == -1) {
+ msg_warn ("accept_from_socket: accept failed: %d, '%s'", errno, strerror (errno));
return -1;
}
- if (event_make_socket_nonblocking(nfd) < 0) {
+ if (make_socket_nonblocking(nfd) < 0) {
goto out;
}
/* Set close on exec */
if (fcntl (nfd, F_SETFD, FD_CLOEXEC) == -1) {
+ msg_warn ("accept_from_socket: fcntl failed: %d, '%s'", errno, strerror (errno));
goto out;
}
- /* Socket options */
- setsockopt (nfd, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on));
- setsockopt (nfd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, sizeof(on));
- linger.l_onoff = 1;
- linger.l_linger = 2;
- setsockopt (nfd, SOL_SOCKET, SO_LINGER, (void *)&linger, sizeof(linger));
-
return (nfd);
out:
fd = socket (PF_LOCAL, SOCK_STREAM, 0);
if (fd == -1) {
+ msg_warn ("make_unix_socket: socket failed: %d, '%s'", errno, strerror (errno));
return -1;
}
- if (event_make_socket_nonblocking(fd) < 0) {
+ if (make_socket_nonblocking(fd) < 0) {
goto out;
}
/* Set close on exec */
if (fcntl (fd, F_SETFD, FD_CLOEXEC) == -1) {
+ msg_warn ("make_unix_socket: fcntl failed: %d, '%s'", errno, strerror (errno));
goto out;
}
if (is_server) {
if (r == -1) {
if (errno != EINPROGRESS) {
+ msg_warn ("make_unix_socket: bind/connect failed: %d, '%s'", errno, strerror (errno));
goto out;
}
}