X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsocket.c;h=d76a81ff993b8aaeddc22a539c13176d6fac6733;hb=598b557bf0dea33db2c13d383382efbd847ed5f0;hp=7c280e0067bb1d6a30963db123cedb47fc8c2501;hpb=69dd2852bb2c433b517d89792adb4461a4178aa1;p=elogind.git diff --git a/src/socket.c b/src/socket.c index 7c280e006..d76a81ff9 100644 --- a/src/socket.c +++ b/src/socket.c @@ -40,6 +40,7 @@ #include "missing.h" #include "special.h" #include "bus-errors.h" +#include "label.h" static const UnitActiveState state_translation_table[_SOCKET_STATE_MAX] = { [SOCKET_DEAD] = UNIT_INACTIVE, @@ -165,6 +166,7 @@ static int socket_instantiate_service(Socket *s) { if (r < 0) return r; + u->meta.no_gc = true; s->service = SERVICE(u); return 0; } @@ -444,14 +446,14 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) { if (p->type == SOCKET_SOCKET) { const char *t; int r; - char *k; + char *k = NULL; if ((r = socket_address_print(&p->address, &k)) < 0) t = strerror(-r); else t = k; - fprintf(f, "%s%s: %s\n", prefix, listen_lookup(p->address.type), k); + fprintf(f, "%s%s: %s\n", prefix, listen_lookup(p->address.type), t); free(k); } else fprintf(f, "%sListenFIFO: %s\n", prefix, p->path); @@ -1202,6 +1204,8 @@ static void socket_enter_running(Socket *s, int cfd) { s->service = NULL; s->n_accepted ++; + service->meta.no_gc = false; + unit_choose_id(UNIT(service), name); free(name); @@ -1371,7 +1375,6 @@ static int socket_serialize(Unit *u, FILE *f, FDSet *fds) { static int socket_deserialize_item(Unit *u, const char *key, const char *value, FDSet *fds) { Socket *s = SOCKET(u); - int r; assert(u); assert(key); @@ -1396,14 +1399,14 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, } else if (streq(key, "n-accepted")) { unsigned k; - if ((r = safe_atou(value, &k)) < 0) + if (safe_atou(value, &k) < 0) log_debug("Failed to parse n-accepted value %s", value); else s->n_accepted += k; } else if (streq(key, "control-pid")) { pid_t pid; - if ((r = parse_pid(value, &pid)) < 0) + if (parse_pid(value, &pid) < 0) log_debug("Failed to parse control-pid value %s", value); else s->control_pid = pid; @@ -1662,7 +1665,7 @@ int socket_collect_fds(Socket *s, int **fds, unsigned *n_fds) { if (p->fd >= 0) rn_fds++; - if (!(rfds = new(int, rn_fds)) < 0) + if (!(rfds = new(int, rn_fds))) return -ENOMEM; k = 0;