chiark / gitweb /
active: rework make_socket_fd() to be based on socket_address_listen()
[elogind.git] / src / shared / socket-util.c
index 9224208244a2ed1e269c2aac0d10cdd475831f15..1175795d7c978748a4c867dd0b99612e7d74a974 100644 (file)
@@ -300,7 +300,8 @@ int socket_address_print(const SocketAddress *a, char **p) {
         case AF_INET: {
                 char *ret;
 
-                if (!(ret = new(char, INET_ADDRSTRLEN+1+5+1)))
+                ret = new(char, INET_ADDRSTRLEN+1+5+1);
+                if (!ret)
                         return -ENOMEM;
 
                 if (!inet_ntop(AF_INET, &a->sockaddr.in4.sin_addr, ret, INET_ADDRSTRLEN)) {
@@ -316,7 +317,8 @@ int socket_address_print(const SocketAddress *a, char **p) {
         case AF_INET6: {
                 char *ret;
 
-                if (!(ret = new(char, 1+INET6_ADDRSTRLEN+2+5+1)))
+                ret = new(char, 1+INET6_ADDRSTRLEN+2+5+1);
+                if (!ret)
                         return -ENOMEM;
 
                 ret[0] = '[';
@@ -334,8 +336,8 @@ int socket_address_print(const SocketAddress *a, char **p) {
                 char *ret;
 
                 if (a->size <= offsetof(struct sockaddr_un, sun_path)) {
-
-                        if (!(ret = strdup("<unnamed>")))
+                        ret = strdup("<unnamed>");
+                        if (!ret)
                                 return -ENOMEM;
 
                 } else if (a->sockaddr.un.sun_path[0] == 0) {
@@ -346,7 +348,8 @@ int socket_address_print(const SocketAddress *a, char **p) {
                          * more than one NUL byte. That is
                          * actually an invalid assumption */
 
-                        if (!(ret = new(char, sizeof(a->sockaddr.un.sun_path)+1)))
+                        ret = new(char, sizeof(a->sockaddr.un.sun_path)+1);
+                        if (!ret)
                                 return -ENOMEM;
 
                         ret[0] = '@';
@@ -354,8 +357,8 @@ int socket_address_print(const SocketAddress *a, char **p) {
                         ret[sizeof(a->sockaddr.un.sun_path)] = 0;
 
                 } else {
-
-                        if (!(ret = strdup(a->sockaddr.un.sun_path)))
+                        ret = strdup(a->sockaddr.un.sun_path);
+                        if (!ret)
                                 return -ENOMEM;
                 }
 
@@ -565,45 +568,6 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) {
         return false;
 }
 
-int make_socket_fd(const char* address, int flags) {
-        SocketAddress a;
-        int fd, r;
-        _cleanup_free_ char *p = NULL;
-
-        r = socket_address_parse(&a, address);
-        if (r < 0) {
-                log_error("failed to parse socket: %s", strerror(-r));
-                return r;
-        }
-
-        fd = socket(socket_address_family(&a), flags, 0);
-        if (fd < 0) {
-                log_error("socket(): %m");
-                return -errno;
-        }
-
-        r = socket_address_print(&a, &p);
-        if (r < 0) {
-                log_error("socket_address_print(): %s", strerror(-r));
-                return r;
-        }
-        log_info("Listening on %s", p);
-
-        r = bind(fd, &a.sockaddr.sa, a.size);
-        if (r < 0) {
-                log_error("bind to %s: %m", address);
-                return -errno;
-        }
-
-        r = listen(fd, SOMAXCONN);
-        if (r < 0) {
-                log_error("listen on %s: %m", address);
-                return -errno;
-        }
-
-        return fd;
-}
-
 static const char* const netlink_family_table[] = {
         [NETLINK_ROUTE] = "route",
         [NETLINK_FIREWALL] = "firewall",