From: Tobias Brunner Date: Tue, 3 May 2016 09:23:43 +0000 (+0200) Subject: task-manager: Add retransmit cleared alert X-Git-Tag: 5.5.0dr1~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab;p=thirdparty%2Fstrongswan.git task-manager: Add retransmit cleared alert --- diff --git a/src/libcharon/bus/bus.h b/src/libcharon/bus/bus.h index 182ced7ab9..305cbe4ae6 100644 --- a/src/libcharon/bus/bus.h +++ b/src/libcharon/bus/bus.h @@ -105,6 +105,9 @@ enum alert_t { * of the retransmit, if the message got fragmented only the first fragment * is passed */ ALERT_RETRANSMIT_SEND, + /** received response for retransmitted request, argument is packet_t, if + * the message got fragmented only the first fragment is passed */ + ALERT_RETRANSMIT_SEND_CLEARED, /** sending retransmits timed out, argument is packet_t, if available and if * the message got fragmented only the first fragment is passed */ ALERT_RETRANSMIT_SEND_TIMEOUT, diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c index ea1177d57c..126863a66b 100644 --- a/src/libcharon/sa/ikev1/task_manager_v1.c +++ b/src/libcharon/sa/ikev1/task_manager_v1.c @@ -1181,6 +1181,12 @@ static status_t process_response(private_task_manager_t *this, } enumerator->destroy(enumerator); + if (this->initiating.retransmitted) + { + packet_t *packet = NULL; + array_get(this->initiating.packets, 0, &packet); + charon->bus->alert(charon->bus, ALERT_RETRANSMIT_SEND_CLEARED, packet); + } this->initiating.type = EXCHANGE_TYPE_UNDEFINED; clear_packets(this->initiating.packets); diff --git a/src/libcharon/sa/ikev2/task_manager_v2.c b/src/libcharon/sa/ikev2/task_manager_v2.c index abbffb29df..702c383b1c 100644 --- a/src/libcharon/sa/ikev2/task_manager_v2.c +++ b/src/libcharon/sa/ikev2/task_manager_v2.c @@ -695,6 +695,13 @@ static status_t process_response(private_task_manager_t *this, } enumerator->destroy(enumerator); + if (this->initiating.retransmitted) + { + packet_t *packet = NULL; + array_get(this->initiating.packets, 0, &packet); + charon->bus->alert(charon->bus, ALERT_RETRANSMIT_SEND_CLEARED, packet); + } + /* catch if we get resetted while processing */ this->reset = FALSE; enumerator = array_create_enumerator(this->active_tasks);