diff options
author | Dimitri Staessens <[email protected]> | 2024-01-07 14:10:36 +0100 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2024-01-13 10:20:14 +0100 |
commit | 763d39ee64e95801ef972ceba74dd6c8c15b1ea7 (patch) | |
tree | a8c8a16bc513cd821773dc4b23b12fa9e31a0000 /src/irmd/main.c | |
parent | 67af6b4edf4fafef6a7bbf620c7b58d42a6e8155 (diff) | |
download | ouroboros-763d39ee64e95801ef972ceba74dd6c8c15b1ea7.tar.gz ouroboros-763d39ee64e95801ef972ceba74dd6c8c15b1ea7.zip |
irmd: Don't release flow_id before destroying flow
When flow_alloc failed, it was releasing the flow_id, but the flow was
needs to be cleaned up by the sanitizer. Bug introduced by ongoing
refactor of the flow allocator, which - when done - will properly
clean up the flow after a failure and not depend on the sanitizer.
Signed-off-by: Dimitri Staessens <[email protected]>
Signed-off-by: Sander Vrijders <[email protected]>
Diffstat (limited to 'src/irmd/main.c')
-rw-r--r-- | src/irmd/main.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/irmd/main.c b/src/irmd/main.c index 6e7e3d15..20b70a60 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -1757,7 +1757,7 @@ static int flow_alloc(pid_t pid, fail_alloc: free(hash); fail_flow: - bmp_release(irmd.flow_ids, flow_id); + /* Sanitize cleans bmp_release(irmd.flow_ids, flow_id); */ fail_ipcp: if (qs.cypher_s > 0) crypt_dh_pkp_destroy(pkp); @@ -2107,7 +2107,6 @@ void * irm_sanitize(void * o) && ts_diff_ms(&f->t0, &now) > IRMD_FLOW_TIMEOUT) { log_dbg("Pending flow_id %d timed out.", f->flow_id); - f->n_pid = -1; reg_flow_set_state(f, FLOW_DEALLOC_PENDING); continue; } |