|
@@ -899,7 +899,7 @@ connection_handle_listener_read(connection_t *conn, int new_type)
|
|
|
struct sockaddr_in remote;
|
|
|
char addrbuf[256];
|
|
|
/* length of the remote address. Must be whatever accept() needs. */
|
|
|
- socklen_t remotelen = 256;
|
|
|
+ socklen_t remotelen = sizeof(addrbuf);
|
|
|
char tmpbuf[INET_NTOA_BUF_LEN];
|
|
|
or_options_t *options = get_options();
|
|
|
|
|
@@ -932,9 +932,11 @@ connection_handle_listener_read(connection_t *conn, int new_type)
|
|
|
set_constrained_socket_buffers(news, (int)options->ConstrainedSockSize);
|
|
|
|
|
|
if (((struct sockaddr*)addrbuf)->sa_family != conn->socket_family) {
|
|
|
- log_warn(LD_BUG, "A listener connection returned a socket with a "
|
|
|
+ /* This is annoying, but can apparently happen on some Darwins. */
|
|
|
+ log_info(LD_BUG, "A listener connection returned a socket with a "
|
|
|
"mismatched family. %s for addr_family %d gave us a socket "
|
|
|
- "with address family %d.", conn_type_to_string(conn->type),
|
|
|
+ "with address family %d. Dropping.",
|
|
|
+ conn_type_to_string(conn->type),
|
|
|
(int)conn->socket_family,
|
|
|
(int)((struct sockaddr*)addrbuf)->sa_family);
|
|
|
tor_close_socket(news);
|