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
This commit is contained in:
Nick Mathewson 2008-02-24 22:11:00 +00:00
parent e0de72dd87
commit dde81de3dd
2 changed files with 5 additions and 5 deletions

View File

@ -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,

View File

@ -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;