[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #6341 [Tor Relay]: "if (circ != conn->active_circuits)" in connection_or_flush_from_first_active_circuit() is wrong?
#6341: "if (circ != conn->active_circuits)" in
connection_or_flush_from_first_active_circuit() is wrong?
-----------------------+----------------------------------------------------
Reporter: arma | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: Tor Relay | Version:
Keywords: | Parent:
Points: | Actualpoints:
-----------------------+----------------------------------------------------
Comment(by arma):
Replying to [ticket:6341 arma]:
> "if (circ != conn->active_circuits)"
Looks like that code went in as git commit 6589ea2a
> that means random crashes for "connection_write_to_buf(NULL->body" if
ewma enabled.
I assume this refers to
{{{
connection_write_to_buf(cell->body, CELL_NETWORK_SIZE, TO_CONN(conn));
}}}
> just remove that condition block, no need any goto before every stream
started reads and all circs with empty queue marked as inactive.
So if conn->active_circuits changed, we should still call
conn->active_circuits = *next_circ_on_conn_p(circ, conn); ?
That seems unlikely to be right.
> "&& queue->head" saves from crashes, but that condition is wrong anyway.
you can't unblock streams when you need it.
>
> why need "re-add the cell_ewma_t" inside for{} ? what purpose for{} if
you never can flush more than 1 cell for ewma anyway? Why there are no
consistent logic for just one small func?
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/6341#comment:1>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs