diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2016-05-25 17:44:37 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2016-05-26 14:13:47 +0200 |
commit | ff4915a2a61def9cd9bb2ae4c2f899263d5cbd89 (patch) | |
tree | 658db5394a0feb1d7c18ee67da60439d5725a05c | |
parent | efb9af4dada5e2426e69d670f4549f8fec3c9cb2 (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>
-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); } |