diff options
author | Tom Gundersen <teg@jklm.no> | 2015-12-03 18:12:10 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2015-12-03 18:12:10 +0100 |
commit | 13bd195053f6ce1c1adfff514c5c6ba79e53c913 (patch) | |
tree | d4355ed50312475c25df48159630dcd96cc0fe5a /src/basic | |
parent | 3f967a4ccf1846514bd638f38e4f487bb4e1c317 (diff) | |
parent | 4941e4aca907f26bf74aa9efe1c70ccad1d10a82 (diff) |
Merge pull request #2089 from keszybz/journal-fixes-2
Journal fixes
Diffstat (limited to 'src/basic')
-rw-r--r-- | src/basic/socket-util.c | 12 | ||||
-rw-r--r-- | src/basic/socket-util.h | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 3458741cb5..79901a6a06 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -870,16 +870,24 @@ int getpeersec(int fd, char **ret) { return 0; } -int send_one_fd(int transport_fd, int fd, int flags) { +int send_one_fd_sa( + int transport_fd, + int fd, + const struct sockaddr *sa, socklen_t len, + int flags) { + union { struct cmsghdr cmsghdr; uint8_t buf[CMSG_SPACE(sizeof(int))]; } control = {}; + struct cmsghdr *cmsg; + struct msghdr mh = { + .msg_name = (struct sockaddr*) sa, + .msg_namelen = len, .msg_control = &control, .msg_controllen = sizeof(control), }; - struct cmsghdr *cmsg; assert(transport_fd >= 0); assert(fd >= 0); diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index f9c90e0e73..6da1df68d8 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -128,7 +128,11 @@ int ip_tos_from_string(const char *s); int getpeercred(int fd, struct ucred *ucred); int getpeersec(int fd, char **ret); -int send_one_fd(int transport_fd, int fd, int flags); +int send_one_fd_sa(int transport_fd, + int fd, + const struct sockaddr *sa, socklen_t len, + int flags); +#define send_one_fd(transport_fd, fd, flags) send_one_fd_sa(transport_fd, fd, NULL, 0, flags) int receive_one_fd(int transport_fd, int flags); #define CMSG_FOREACH(cmsg, mh) \ |