mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 06:48:05 +01:00
avoid racing the mark-for-close when the client hangs up on us
at the same time we get an end relay cell. (thanks to wmf for reminding me) svn:r2181
This commit is contained in:
parent
658e02a621
commit
f47fe829dd
2 changed files with 10 additions and 2 deletions
|
@ -54,7 +54,11 @@ int connection_edge_process_inbuf(connection_t *conn) {
|
||||||
/* eof reached, kill it. */
|
/* eof reached, kill it. */
|
||||||
log_fn(LOG_INFO,"conn (fd %d) reached eof. Closing.", conn->s);
|
log_fn(LOG_INFO,"conn (fd %d) reached eof. Closing.", conn->s);
|
||||||
connection_edge_end(conn, END_STREAM_REASON_DONE, conn->cpath_layer);
|
connection_edge_end(conn, END_STREAM_REASON_DONE, conn->cpath_layer);
|
||||||
connection_mark_for_close(conn);
|
if(!conn->marked_for_close) {
|
||||||
|
/* only mark it if not already marked. it's possible to
|
||||||
|
* get the 'end' right around when the client hangs up on us. */
|
||||||
|
connection_mark_for_close(conn);
|
||||||
|
}
|
||||||
conn->hold_open_until_flushed = 1; /* just because we shouldn't read
|
conn->hold_open_until_flushed = 1; /* just because we shouldn't read
|
||||||
doesn't mean we shouldn't write */
|
doesn't mean we shouldn't write */
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -694,7 +694,11 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
|
||||||
#else
|
#else
|
||||||
/* We just *got* an end; no reason to send one. */
|
/* We just *got* an end; no reason to send one. */
|
||||||
conn->has_sent_end = 1;
|
conn->has_sent_end = 1;
|
||||||
connection_mark_for_close(conn);
|
if(!conn->marked_for_close) {
|
||||||
|
/* only mark it if not already marked. it's possible to
|
||||||
|
* get the 'end' right around when the client hangs up on us. */
|
||||||
|
connection_mark_for_close(conn);
|
||||||
|
}
|
||||||
conn->hold_open_until_flushed = 1;
|
conn->hold_open_until_flushed = 1;
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue