mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Merge branch 'ticket27750_034_01_squashed' into maint-0.3.5
This commit is contained in:
commit
d598d834f5
6
changes/bug27750
Normal file
6
changes/bug27750
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Minor bugfixes (connection, relay):
|
||||||
|
- Avoid a wrong BUG() stacktrace in case a closing connection is being held
|
||||||
|
open because the write side is rate limited but not the read side. Now,
|
||||||
|
the connection read side is simply shutdown instead of kept open until tor
|
||||||
|
is able to flush the connection and then fully close it. Fixes bug 27750;
|
||||||
|
bugfix on 0.3.4.1-alpha.
|
@ -1011,23 +1011,18 @@ conn_close_if_marked(int i)
|
|||||||
* busy Libevent loops where we keep ending up here and returning
|
* busy Libevent loops where we keep ending up here and returning
|
||||||
* 0 until we are no longer blocked on bandwidth.
|
* 0 until we are no longer blocked on bandwidth.
|
||||||
*/
|
*/
|
||||||
connection_consider_empty_read_buckets(conn);
|
|
||||||
connection_consider_empty_write_buckets(conn);
|
connection_consider_empty_write_buckets(conn);
|
||||||
|
|
||||||
/* Make sure that consider_empty_buckets really disabled the
|
/* Make sure that consider_empty_buckets really disabled the
|
||||||
* connection: */
|
* connection: */
|
||||||
if (BUG(connection_is_writing(conn))) {
|
if (BUG(connection_is_writing(conn))) {
|
||||||
connection_write_bw_exhausted(conn, true);
|
connection_write_bw_exhausted(conn, true);
|
||||||
}
|
}
|
||||||
if (BUG(connection_is_reading(conn))) {
|
|
||||||
/* XXXX+ We should make this code unreachable; if a connection is
|
/* The connection is being held due to write rate limit and thus will
|
||||||
* marked for close and flushing, there is no point in reading to it
|
* flush its data later. We need to stop reading because this
|
||||||
* at all. Further, checking at this point is a bit of a hack: it
|
* connection is about to be closed once flushed. It should not
|
||||||
* would make much more sense to react in
|
* process anything more coming in at this stage. */
|
||||||
* connection_handle_read_impl, or to just stop reading in
|
connection_stop_reading(conn);
|
||||||
* mark_and_flush */
|
|
||||||
connection_read_bw_exhausted(conn, true/* kludge. */);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user