diff options
author | Tobias Brunner <tobias@strongswan.org> | 2016-05-03 11:23:43 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2016-06-06 14:11:01 +0200 |
commit | bd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab (patch) | |
tree | 41398260423cc7e538d966caebc145569ffc8c7e /src | |
parent | 9da65eaeb9ddfc00ba205378da23eec3d84b4df0 (diff) | |
download | strongswan-bd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab.tar.bz2 strongswan-bd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab.tar.xz |
task-manager: Add retransmit cleared alert
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/bus/bus.h | 3 | ||||
-rw-r--r-- | src/libcharon/sa/ikev1/task_manager_v1.c | 6 | ||||
-rw-r--r-- | src/libcharon/sa/ikev2/task_manager_v2.c | 7 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/libcharon/bus/bus.h b/src/libcharon/bus/bus.h index 182ced7ab..305cbe4ae 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 ea1177d57..126863a66 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 abbffb29d..702c383b1 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); |