aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2016-05-03 11:23:43 +0200
committerTobias Brunner <tobias@strongswan.org>2016-06-06 14:11:01 +0200
commitbd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab (patch)
tree41398260423cc7e538d966caebc145569ffc8c7e
parent9da65eaeb9ddfc00ba205378da23eec3d84b4df0 (diff)
downloadstrongswan-bd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab.tar.bz2
strongswan-bd71ba0ffb03dc19f6a24e08dd8ad94eeffd9fab.tar.xz
task-manager: Add retransmit cleared alert
-rw-r--r--src/libcharon/bus/bus.h3
-rw-r--r--src/libcharon/sa/ikev1/task_manager_v1.c6
-rw-r--r--src/libcharon/sa/ikev2/task_manager_v2.c7
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);