mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Merge remote-tracking branch 'public/bug14261_025' into maint-0.2.5
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
O Minor bugfixes (directory authority):
|
||||
- Allow directory authorities to fetch more data from one
|
||||
another if they find themselves missing lots of votes.
|
||||
Previously, they had been bumping against the 10 MB queued
|
||||
data limit. Fixes bug 14261. Bugfix on 0.1.2.5-alpha.
|
||||
+8
-1
@@ -2183,12 +2183,15 @@ connection_dir_reached_eof(dir_connection_t *conn)
|
||||
*/
|
||||
#define MAX_DIRECTORY_OBJECT_SIZE (10*(1<<20))
|
||||
|
||||
#define MAX_VOTE_DL_SIZE (MAX_DIRECTORY_OBJECT_SIZE * 5)
|
||||
|
||||
/** Read handler for directory connections. (That's connections <em>to</em>
|
||||
* directory servers and connections <em>at</em> directory servers.)
|
||||
*/
|
||||
int
|
||||
connection_dir_process_inbuf(dir_connection_t *conn)
|
||||
{
|
||||
size_t max_size;
|
||||
tor_assert(conn);
|
||||
tor_assert(conn->base_.type == CONN_TYPE_DIR);
|
||||
|
||||
@@ -2207,7 +2210,11 @@ connection_dir_process_inbuf(dir_connection_t *conn)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (connection_get_inbuf_len(TO_CONN(conn)) > MAX_DIRECTORY_OBJECT_SIZE) {
|
||||
max_size =
|
||||
(TO_CONN(conn)->purpose == DIR_PURPOSE_FETCH_STATUS_VOTE) ?
|
||||
MAX_VOTE_DL_SIZE : MAX_DIRECTORY_OBJECT_SIZE;
|
||||
|
||||
if (connection_get_inbuf_len(TO_CONN(conn)) > max_size) {
|
||||
log_warn(LD_HTTP, "Too much data received from directory connection: "
|
||||
"denial of service attempt, or you need to upgrade?");
|
||||
connection_mark_for_close(TO_CONN(conn));
|
||||
|
||||
Reference in New Issue
Block a user