diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2016-05-25 17:44:37 +0200 |
---|---|---|
committer | Holger Freyther <holger@freyther.de> | 2016-05-25 20:42:41 +0000 |
commit | d5235e5e513e5a99efcc004fd666fd765bdee3ca (patch) | |
tree | 2078363ac63161b0848ba137e7cf44a59b88c85c /src/osmux.c | |
parent | ecee3f9110b88de1b4d6ae6e6585c11c36600ec9 (diff) |
osmux: Pass circuit to _batch_del_circuit() and use it from _xfrm_input_fini()
Change-Id: If224980123d4a369133499ab7b577d02511f4055
Ticket: OS#1733
Reviewed-on: https://gerrit.osmocom.org/119
Tested-by: Jenkins Builder
Reviewed-by: Holger Freyther <holger@freyther.de>
Diffstat (limited to 'src/osmux.c')
-rw-r--r-- | src/osmux.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/osmux.c b/src/osmux.c index 8025d5d..1f5bbe2 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -533,14 +533,8 @@ osmux_batch_add_circuit(struct osmux_batch *batch, int ccid, int dummy, return circuit; } -static void osmux_batch_del_circuit(struct osmux_batch *batch, int ccid) +static void osmux_batch_del_circuit(struct osmux_batch *batch, struct osmux_circuit *circuit) { - struct osmux_circuit *circuit; - - circuit = osmux_batch_find_circuit(batch, ccid); - if (circuit == NULL) - return; - if (circuit->dummy) batch->ndummy--; llist_del(&circuit->head); @@ -713,8 +707,13 @@ int osmux_xfrm_input_open_circuit(struct osmux_in_handle *h, int ccid, void osmux_xfrm_input_close_circuit(struct osmux_in_handle *h, int ccid) { struct osmux_batch *batch = (struct osmux_batch *)h->internal_data; + struct osmux_circuit *circuit; - osmux_batch_del_circuit(batch, ccid); + circuit = osmux_batch_find_circuit(batch, ccid); + if (circuit == NULL) + return; + + osmux_batch_del_circuit(batch, circuit); } void osmux_xfrm_input_fini(struct osmux_in_handle *h) @@ -722,10 +721,9 @@ void osmux_xfrm_input_fini(struct osmux_in_handle *h) struct osmux_batch *batch = (struct osmux_batch *)h->internal_data; struct osmux_circuit *circuit, *next; - llist_for_each_entry_safe(circuit, next, &batch->circuit_list, head) { - llist_del(&circuit->head); - talloc_free(circuit); - } + llist_for_each_entry_safe(circuit, next, &batch->circuit_list, head) + osmux_batch_del_circuit(batch, circuit); + osmo_timer_del(&batch->timer); talloc_free(batch); } |