[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] Fix possible bug on threading platforms with running out of...
- To: or-cvs@xxxxxxxxxxxxx
- Subject: [or-cvs] Fix possible bug on threading platforms with running out of...
- From: nickm@xxxxxxxx (Nick Mathewson)
- Date: Mon, 4 Apr 2005 17:46:11 -0400 (EDT)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Mon, 04 Apr 2005 17:46:55 -0400
- Reply-to: or-dev@xxxxxxxxxxxxx
- Sender: owner-or-cvs@xxxxxxxxxxxxx
Update of /home/or/cvsroot/tor/src/or
In directory moria.mit.edu:/tmp/cvs-serv11113/src/or
Modified Files:
cpuworker.c dns.c
Log Message:
Fix possible bug on threading platforms with running out of fds do to cpuworkers and dnsworkers.
Index: cpuworker.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/cpuworker.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- cpuworker.c 1 Apr 2005 20:15:55 -0000 1.68
+++ cpuworker.c 4 Apr 2005 21:46:08 -0000 1.69
@@ -262,7 +262,7 @@
}
if (write_all(fd, buf, LEN_ONION_RESPONSE, 1) != LEN_ONION_RESPONSE) {
log_fn(LOG_ERR,"writing response buf failed. Exiting.");
- spawn_exit();
+ goto end;
}
log_fn(LOG_DEBUG,"finished writing response.");
}
@@ -272,6 +272,7 @@
crypto_free_pk_env(onion_key);
if (last_onion_key)
crypto_free_pk_env(last_onion_key);
+ close(fd);
spawn_exit();
return 0; /* windows wants this function to return an int */
}
Index: dns.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/dns.c,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -d -r1.140 -r1.141
--- dns.c 1 Apr 2005 20:15:55 -0000 1.140
+++ dns.c 4 Apr 2005 21:46:08 -0000 1.141
@@ -728,11 +728,13 @@
log_fn(LOG_INFO,"DNS worker exiting because of error on connection to Tor process.");
log_fn(LOG_INFO,"(Error on %d was %s)", fd, tor_socket_strerror(tor_socket_errno(fd)));
}
+ close(fd);
spawn_exit();
}
if (address_len && read_all(fd, address, address_len, 1) != address_len) {
log_fn(LOG_ERR,"read hostname failed. Child exiting.");
+ close(fd);
spawn_exit();
}
address[address_len] = 0; /* null terminate it */
@@ -759,6 +761,7 @@
set_uint32(answer+1, ip);
if (write_all(fd, answer, 5, 1) != 5) {
log_fn(LOG_ERR,"writing answer failed. Child exiting.");
+ close(fd);
spawn_exit();
}
}