mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
The crowning bugfix.
The problem was that with high load, circuit package window was reaching 0. Whenever we got a circuit-level sendme, we were reading a lot on each socket, but only writing out a bit. So we would eventually reach eof. This would be noticed and acted on even when there are still bytes sitting in the inbuf. svn:r2932
This commit is contained in:
parent
27b8797245
commit
4f2c2c9948
@ -34,7 +34,10 @@ int connection_edge_reached_eof(connection_t *conn) {
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
/* eof reached, kill it. */
|
if(buf_datalen(conn->inbuf)) {
|
||||||
|
/* it still has stuff to process. don't let it die yet. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
log_fn(LOG_INFO,"conn (fd %d) reached eof (stream size %d). Closing.", conn->s, (int)conn->stream_size);
|
log_fn(LOG_INFO,"conn (fd %d) reached eof (stream size %d). Closing.", conn->s, (int)conn->stream_size);
|
||||||
connection_edge_end(conn, END_STREAM_REASON_DONE, conn->cpath_layer);
|
connection_edge_end(conn, END_STREAM_REASON_DONE, conn->cpath_layer);
|
||||||
if(!conn->marked_for_close) {
|
if(!conn->marked_for_close) {
|
||||||
|
Loading…
Reference in New Issue
Block a user