chiark / gitweb /
core: log USER_UNIT instead of UNIT if in user session
[elogind.git] / src / core / socket.c
index fcbcdbe192f306e3e999e27720c384eaa96e3ad8..f2d854851d5c8c94435c7a129feddf0bd433b353 100644 (file)
@@ -102,8 +102,7 @@ static void socket_unwatch_control_pid(Socket *s) {
         s->control_pid = 0;
 }
 
-static void socket_done(Unit *u) {
-        Socket *s = SOCKET(u);
+void socket_free_ports(Socket *s) {
         SocketPort *p;
 
         assert(s);
@@ -119,6 +118,14 @@ static void socket_done(Unit *u) {
                 free(p->path);
                 free(p);
         }
+}
+
+static void socket_done(Unit *u) {
+        Socket *s = SOCKET(u);
+
+        assert(s);
+
+        socket_free_ports(s);
 
         exec_context_done(&s->exec_context);
         exec_command_free_array(s->exec_command, _SOCKET_EXEC_COMMAND_MAX);
@@ -308,7 +315,7 @@ static int socket_add_device_link(Socket *s) {
 
         assert(s);
 
-        if (!s->bind_to_device)
+        if (!s->bind_to_device || streq(s->bind_to_device, "lo"))
                 return 0;
 
         if (asprintf(&t, "/sys/subsystem/net/devices/%s", s->bind_to_device) < 0)