X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsocket.c;h=909151752c7d3c9a035f1090e0b64e0d1b9c1eb9;hp=03d322ba00e59a64c191fa3742ef7c0589fd5565;hb=0c565ed702d2b0ee4a584e9348b13a78fb002972;hpb=2b061f5a4b4e8927c7c1077e494455a189e34d59 diff --git a/src/socket.c b/src/socket.c index 03d322ba0..909151752 100644 --- a/src/socket.c +++ b/src/socket.c @@ -58,7 +58,6 @@ static void socket_init(Unit *u) { assert(u); assert(u->meta.load_state == UNIT_STUB); - s->timer_watch.type = WATCH_INVALID; s->backlog = SOMAXCONN; s->timeout_usec = DEFAULT_TIMEOUT_USEC; s->directory_mode = 0755; @@ -290,7 +289,7 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) { "%sSocketMode: %04o\n" "%sDirectoryMode: %04o\n", prefix, socket_state_to_string(s->state), - prefix, yes_no(s->bind_ipv6_only), + prefix, socket_address_bind_ipv6_only_to_string(s->bind_ipv6_only), prefix, s->backlog, prefix, kill_mode_to_string(s->kill_mode), prefix, s->socket_mode, @@ -896,7 +895,7 @@ static void socket_enter_running(Socket *s, int cfd) { Unit *u; char *prefix, *instance, *name; - if ((r = instance_from_socket(cfd, s->n_accepted++, &instance))) + if ((r = instance_from_socket(cfd, s->n_accepted++, &instance)) < 0) goto fail; if (!(prefix = unit_name_to_prefix(UNIT(s)->meta.id))) { @@ -909,8 +908,10 @@ static void socket_enter_running(Socket *s, int cfd) { free(prefix); free(instance); - if (!name) + if (!name) { r = -ENOMEM; + goto fail; + } r = manager_load_unit(UNIT(s)->meta.manager, name, NULL, &u); free(name); @@ -918,7 +919,7 @@ static void socket_enter_running(Socket *s, int cfd) { if (r < 0) goto fail; - if ((r = service_set_socket_fd(SERVICE(u), cfd) < 0)) + if ((r = service_set_socket_fd(SERVICE(u), cfd)) < 0) goto fail; cfd = -1; @@ -1187,6 +1188,9 @@ static void socket_fd_event(Unit *u, int fd, uint32_t events, Watch *w) { assert(s); assert(fd >= 0); + if (s->state != SOCKET_LISTENING) + return; + log_debug("Incoming traffic on %s", u->meta.id); if (events != EPOLLIN) {