activate: export make_socket_fd
Also improve logging to print out the parsed address on error.
This commit is contained in:
parent
6cf487afad
commit
e0aa372610
|
@ -59,25 +59,6 @@ static int add_epoll(int epoll_fd, int fd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int make_socket_fd(const char* address, int flags) {
|
|
||||||
SocketAddress a;
|
|
||||||
int fd, r;
|
|
||||||
|
|
||||||
r = socket_address_parse(&a, address);
|
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to parse socket: %s", strerror(-r));
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
fd = socket_address_listen(&a, flags, SOMAXCONN, SOCKET_ADDRESS_DEFAULT, NULL, false, false, 0755, 0644, NULL);
|
|
||||||
if (fd < 0) {
|
|
||||||
log_error("Failed to listen: %s", strerror(-r));
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int open_sockets(int *epoll_fd, bool accept) {
|
static int open_sockets(int *epoll_fd, bool accept) {
|
||||||
char **address;
|
char **address;
|
||||||
int n, fd, r;
|
int n, fd, r;
|
||||||
|
@ -119,7 +100,7 @@ static int open_sockets(int *epoll_fd, bool accept) {
|
||||||
|
|
||||||
STRV_FOREACH(address, arg_listen) {
|
STRV_FOREACH(address, arg_listen) {
|
||||||
|
|
||||||
fd = make_socket_fd(*address, SOCK_STREAM | (arg_accept*SOCK_CLOEXEC));
|
fd = make_socket_fd(LOG_DEBUG, *address, SOCK_STREAM | (arg_accept*SOCK_CLOEXEC));
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
log_open();
|
log_open();
|
||||||
log_error("Failed to open '%s': %s", *address, strerror(-fd));
|
log_error("Failed to open '%s': %s", *address, strerror(-fd));
|
||||||
|
|
|
@ -143,3 +143,33 @@ int socket_address_listen(
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int make_socket_fd(int log_level, const char* address, int flags) {
|
||||||
|
SocketAddress a;
|
||||||
|
int fd, r;
|
||||||
|
|
||||||
|
r = socket_address_parse(&a, address);
|
||||||
|
if (r < 0) {
|
||||||
|
log_error("Failed to parse socket: %s", strerror(-r));
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
fd = socket_address_listen(&a, flags, SOMAXCONN, SOCKET_ADDRESS_DEFAULT,
|
||||||
|
NULL, false, false, 0755, 0644, NULL);
|
||||||
|
if (fd < 0 || log_get_max_level() >= log_level) {
|
||||||
|
char _cleanup_free_ *p = NULL;
|
||||||
|
|
||||||
|
r = socket_address_print(&a, &p);
|
||||||
|
if (r < 0) {
|
||||||
|
log_error("socket_address_print(): %s", strerror(-r));
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fd < 0)
|
||||||
|
log_error("Failed to listen on %s: %s", p, strerror(-r));
|
||||||
|
else
|
||||||
|
log_full(log_level, "Listening on %s", p);
|
||||||
|
}
|
||||||
|
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
|
@ -84,6 +84,7 @@ int socket_address_listen(
|
||||||
mode_t directory_mode,
|
mode_t directory_mode,
|
||||||
mode_t socket_mode,
|
mode_t socket_mode,
|
||||||
const char *label);
|
const char *label);
|
||||||
|
int make_socket_fd(int log_level, const char* address, int flags);
|
||||||
|
|
||||||
bool socket_address_is(const SocketAddress *a, const char *s, int type);
|
bool socket_address_is(const SocketAddress *a, const char *s, int type);
|
||||||
bool socket_address_is_netlink(const SocketAddress *a, const char *s);
|
bool socket_address_is_netlink(const SocketAddress *a, const char *s);
|
||||||
|
|
Loading…
Reference in a new issue