diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-02-24 22:11:00 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-02-24 22:11:00 +0000 |
commit | dde81de3dd45910eb54ef3e8c12c2963847af85c (patch) | |
tree | cd6c39896f0ca524501239c26b47ee07753e06ef | |
parent | e0de72dd8720b750c5a9228e6a0b1cf10b34ebec (diff) | |
download | tor-dde81de3dd45910eb54ef3e8c12c2963847af85c.tar.gz tor-dde81de3dd45910eb54ef3e8c12c2963847af85c.zip |
r14419@tombo: nickm | 2008-02-24 16:55:11 -0500
Patch from tup: use sizeof sockaddr_un as the size of a unix sockaddr. Fixes unix controlsocket binding on openbsd.
svn:r13697
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/or/connection.c | 8 |
2 files changed, 5 insertions, 5 deletions
@@ -102,6 +102,8 @@ Changes in version 0.2.0.20-?? - 2008-02-?? the TLS shutdown handshake is hardly unexpected. - Send NAMESERVER_STATUS messages for a single failed nameserver correctly. + - Make Unix controlsockets work correctly on OpenBSD. Patch from + tup. Bugfix on 0.2.0.3-alpha. o Code simplifications and refactoring: - Remove the tor_strpartition function: its logic was confused, diff --git a/src/or/connection.c b/src/or/connection.c index 41eee7d8b4..76b943964c 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -746,8 +746,9 @@ create_unix_sockaddr(const char *listenaddress, char **readable_address) */ static connection_t * connection_create_listener(struct sockaddr *listensockaddr, int type, - char* address) + char* address) { + /*XXXX021 this function should take a socklen too. */ connection_t *conn; int s; /* the socket we're going to make */ uint16_t usePort = 0; @@ -814,7 +815,6 @@ connection_create_listener(struct sockaddr *listensockaddr, int type, } #ifdef HAVE_SYS_UN_H } else if (listensockaddr->sa_family == AF_UNIX) { - size_t len; start_reading = 1; /* For now only control ports can be unix domain sockets @@ -835,9 +835,7 @@ connection_create_listener(struct sockaddr *listensockaddr, int type, goto err; } - len = strlen(((struct sockaddr_un *)listensockaddr)->sun_path) + - sizeof(((struct sockaddr_un *)listensockaddr)->sun_family); - if (bind(s, listensockaddr, (socklen_t)len) == -1) { + if (bind(s, listensockaddr, (socklen_t)sizeof(struct sockaddr_un)) == -1) { log_warn(LD_NET,"Bind to %s failed: %s.", address, tor_socket_strerror(tor_socket_errno(s))); goto err; |