diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-06-16 15:41:29 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-06-16 15:41:29 +0200 |
commit | 0213c3f8102bdc934c629d11a44ca0b408762287 (patch) | |
tree | 743fcd1210de5bf35a271b64d5103487fc5f7ad4 /src/socket.c | |
parent | 18c78fb1af5415bb6f87d9c7cae1f9c60e14ae24 (diff) |
socket: add optional libwrap support
Diffstat (limited to 'src/socket.c')
-rw-r--r-- | src/socket.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/socket.c b/src/socket.c index 1852fe9375..71f1672027 100644 --- a/src/socket.c +++ b/src/socket.c @@ -36,6 +36,7 @@ #include "strv.h" #include "unit-name.h" #include "dbus-socket.h" +#include "tcpwrap.h" static const UnitActiveState state_translation_table[_SOCKET_STATE_MAX] = { [SOCKET_DEAD] = UNIT_INACTIVE, @@ -107,6 +108,9 @@ static void socket_done(Unit *u) { free(s->bind_to_device); s->bind_to_device = NULL; + free(s->tcpwrap_name); + s->tcpwrap_name = NULL; + unit_unwatch_timer(u, &s->timer_watch); } @@ -305,6 +309,11 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) { "%sBindToDevice: %s\n", prefix, s->bind_to_device); + if (s->tcpwrap_name) + fprintf(f, + "%sTCPWrapName: %s\n", + prefix, s->tcpwrap_name); + if (s->accept) fprintf(f, "%sAccepted: %u\n", @@ -1212,6 +1221,12 @@ static void socket_fd_event(Unit *u, int fd, uint32_t events, Watch *w) { break; } + + if (s->tcpwrap_name) + if (!socket_tcpwrap(cfd, s->tcpwrap_name)) { + close_nointr_nofail(cfd); + return; + } } socket_enter_running(s, cfd); |