[systemd-commits] 2 commits - src/loopback-setup.c src/sd-daemon.c src/sd-daemon.h

Lennart Poettering lennart at kemper.freedesktop.org
Thu May 20 10:01:36 PDT 2010


 src/loopback-setup.c |    4 +++-
 src/sd-daemon.c      |   11 ++++++-----
 src/sd-daemon.h      |   16 +++++++++++-----
 3 files changed, 20 insertions(+), 11 deletions(-)

New commits:
commit cd250a39da8d5b9c0d220a07e765064638708fe9
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu May 20 19:01:29 2010 +0200

    sd-daemon: extend documentation a little

diff --git a/src/sd-daemon.c b/src/sd-daemon.c
index 8a7c9e8..62936ec 100644
--- a/src/sd-daemon.c
+++ b/src/sd-daemon.c
@@ -254,15 +254,16 @@ int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t
                         /* Unnamed socket */
                         return l == sizeof(sa_family_t);
 
-                if (l < sizeof(sa_family_t) + length + 1)
-                        return 0;
-
                 if (path[0])
                         /* Normal path socket */
-                        return memcmp(path, sockaddr.un.sun_path, length+1) == 0;
+                        return
+                                (l >= sizeof(sa_family_t) + length + 1) &&
+                                memcmp(path, sockaddr.un.sun_path, length+1) == 0;
                 else
                         /* Abstract namespace socket */
-                        return memcmp(path, sockaddr.un.sun_path+1, length) == 0;
+                        return
+                                (l == sizeof(sa_family_t) + length) &&
+                                memcmp(path, sockaddr.un.sun_path, length) == 0;
         }
 
         return 1;
diff --git a/src/sd-daemon.h b/src/sd-daemon.h
index b7100bc..ab69364 100644
--- a/src/sd-daemon.h
+++ b/src/sd-daemon.h
@@ -76,16 +76,20 @@ int sd_is_fifo(int fd, const char *path);
  * the file descriptor is a socket of the specified type (SOCK_DGRAM,
  * SOCK_STREAM, ...), 0 otherwise. If type is 0 a socket type check
  * will not be done and the call only verifies if the file descriptor
- * refers to a socket. Returns a negative errno style error code on
- * failure. */
+ * refers to a socket. If listening is > 0 it is verified that the
+ * socket is in listening mode. (i.e. listen() has been called) If
+ * listening is == 0 it is verified that the socket is not in
+ * listening mode. If listening is < 0 no listening mode check is
+ * done. Returns a negative errno style error code on failure. */
 int sd_is_socket(int fd, int type, int listening);
 
 /* Helper call for identifying a passed file descriptor. Returns 1 if
  * the file descriptor is an Internet socket (either AF_INET or
  * AF_INET6) of the specified type (SOCK_DGRAM, SOCK_STREAM, ...), 0
  * otherwise. If type is 0 a socket type check will not be done. If
- * port is 0 a socket port check will not be done. Returns a negative
- * errno style error code on failure. */
+ * port is 0 a socket port check will not be done. The listening flag
+ * is used the same way as in sd_is_socket(). Returns a negative errno
+ * style error code on failure. */
 int sd_is_socket_inet(int fd, int type, int listening, uint16_t port);
 
 /* Helper call for identifying a passed file descriptor. Returns 1 if
@@ -94,7 +98,9 @@ int sd_is_socket_inet(int fd, int type, int listening, uint16_t port);
  * a socket type check will not be done. If path is NULL a socket path
  * check will not be done. For normal AF_UNIX sockets set length to
  * 0. For abstract namespace sockets set length to the length of the
- * socket name (excluding the initial 0 byte). Returns a negative
+ * socket name (including the initial 0 byte), and pass the full
+ * socket path in path (including the initial 0 byte). The listening
+ * flag is used the same way as in sd_is_socket(). Returns a negative
  * errno style error code on failure. */
 int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length);
 
commit 86700cf7adea335db27215a8be6d480c99ce4344
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu May 20 19:01:14 2010 +0200

    loopback-setup: be more verbose when something is failing

diff --git a/src/loopback-setup.c b/src/loopback-setup.c
index e37bf41..69b79e1 100644
--- a/src/loopback-setup.c
+++ b/src/loopback-setup.c
@@ -217,8 +217,10 @@ static int read_response(int fd) {
 
         nlmsgerr = NLMSG_DATA(&response.header);
 
-        if (nlmsgerr->error < 0 && nlmsgerr->error != -EEXIST)
+        if (nlmsgerr->error < 0 && nlmsgerr->error != -EEXIST) {
+                log_warning("Netlink failure for request %i: %s", response.header.nlmsg_seq, strerror(nlmsgerr->error));
                 return nlmsgerr->error;
+        }
 
         return response.header.nlmsg_seq;
 }


More information about the systemd-commits mailing list