mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
declare the epipe bug a non-bug.
now we catch and ignore epipe signals, and when write returns epipe, we simply return -1 and close the socket/connection. svn:r1928
This commit is contained in:
@@ -250,8 +250,6 @@ int flush_buf(int s, buf_t *buf, int *buf_flushlen)
|
||||
write_result = send(s, buf->mem, *buf_flushlen, 0);
|
||||
if (write_result < 0) {
|
||||
if(!ERRNO_IS_EAGAIN(tor_socket_errno(s))) { /* it's a real error */
|
||||
/* get a stack trace to find epipe bugs */
|
||||
tor_assert(tor_socket_errno(s) != EPIPE);
|
||||
return -1;
|
||||
}
|
||||
log_fn(LOG_DEBUG,"write() would block, returning.");
|
||||
|
||||
+1
-3
@@ -347,8 +347,6 @@ static void run_connection_housekeeping(int i, time_t now) {
|
||||
!conn->marked_for_close &&
|
||||
conn->timestamp_lastwritten + 5*60 < now) {
|
||||
log_fn(LOG_WARN,"Expiring wedged directory conn (fd %d, purpose %d)", conn->s, conn->purpose);
|
||||
/* XXXX This next check may help isolate where the pesky EPIPE bug
|
||||
* really occurs. */
|
||||
if (connection_wants_to_flush(conn)) {
|
||||
if(flush_buf(conn->s, conn->outbuf, &conn->outbuf_flushlen) < 0) {
|
||||
log_fn(LOG_WARN,"flushing expired directory conn failed.");
|
||||
@@ -752,7 +750,7 @@ static void catch(int the_signal) {
|
||||
unlink(options.PidFile);
|
||||
exit(0);
|
||||
case SIGPIPE:
|
||||
log(LOG_WARN,"Bug: caught sigpipe. Ignoring.");
|
||||
log(LOG_INFO,"Caught sigpipe. Ignoring.");
|
||||
break;
|
||||
case SIGHUP:
|
||||
please_reset = 1;
|
||||
|
||||
Reference in New Issue
Block a user