mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
improve robustness: connection_get_by_* ignores conns marked for close
svn:r352
This commit is contained in:
parent
23b1586c26
commit
dfdc93eccb
@ -119,7 +119,7 @@ connection_t *connection_twin_get_by_addr_port(uint32_t addr, uint16_t port) {
|
|||||||
|
|
||||||
/* first check if it's there exactly */
|
/* first check if it's there exactly */
|
||||||
conn = connection_exact_get_by_addr_port(addr,port);
|
conn = connection_exact_get_by_addr_port(addr,port);
|
||||||
if(conn && connection_state_is_open(conn)) {
|
if(conn && connection_state_is_open(conn) && !conn->marked_for_close) {
|
||||||
log(LOG_INFO,"connection_twin_get_by_addr_port(): Found exact match.");
|
log(LOG_INFO,"connection_twin_get_by_addr_port(): Found exact match.");
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
@ -150,7 +150,7 @@ connection_t *connection_exact_get_by_addr_port(uint32_t addr, uint16_t port) {
|
|||||||
for(i=0;i<nfds;i++) {
|
for(i=0;i<nfds;i++) {
|
||||||
conn = connection_array[i];
|
conn = connection_array[i];
|
||||||
assert(conn);
|
assert(conn);
|
||||||
if(conn->addr == addr && conn->port == port)
|
if(conn->addr == addr && conn->port == port && !conn->marked_for_close)
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -162,7 +162,7 @@ connection_t *connection_get_by_type(int type) {
|
|||||||
|
|
||||||
for(i=0;i<nfds;i++) {
|
for(i=0;i<nfds;i++) {
|
||||||
conn = connection_array[i];
|
conn = connection_array[i];
|
||||||
if(conn->type == type)
|
if(conn->type == type && !conn->marked_for_close)
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -174,7 +174,7 @@ connection_t *connection_get_by_type_state(int type, int state) {
|
|||||||
|
|
||||||
for(i=0;i<nfds;i++) {
|
for(i=0;i<nfds;i++) {
|
||||||
conn = connection_array[i];
|
conn = connection_array[i];
|
||||||
if(conn->type == type && conn->state == state)
|
if(conn->type == type && conn->state == state && !conn->marked_for_close)
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user