diff options
author | Martin Willi <martin@strongswan.org> | 2007-09-24 12:15:25 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2007-09-24 12:15:25 +0000 |
commit | d9d69536b0ecdb298cc40acf81d42c1a09e69a05 (patch) | |
tree | baef0652a1f32ba9c254967d54ff0c7bf62914aa /src/charon/sa/task_manager.c | |
parent | e5f1ead26f4b03167e9fe6dff96b3b270298c653 (diff) | |
download | strongswan-d9d69536b0ecdb298cc40acf81d42c1a09e69a05.tar.bz2 strongswan-d9d69536b0ecdb298cc40acf81d42c1a09e69a05.tar.xz |
improved MOBIKE roaming between interfaces
Diffstat (limited to 'src/charon/sa/task_manager.c')
-rw-r--r-- | src/charon/sa/task_manager.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/charon/sa/task_manager.c b/src/charon/sa/task_manager.c index a44f88b15..30e870422 100644 --- a/src/charon/sa/task_manager.c +++ b/src/charon/sa/task_manager.c @@ -809,10 +809,17 @@ static status_t process_message(private_task_manager_t *this, message_t *msg) } else if ((mid == this->responding.mid - 1) && this->responding.packet) { + packet_t *clone; + host_t *me, *other; + DBG1(DBG_IKE, "received retransmit of request with ID %d, " "retransmitting response", mid); - charon->sender->send(charon->sender, - this->responding.packet->clone(this->responding.packet)); + clone = this->responding.packet->clone(this->responding.packet); + me = msg->get_destination(msg); + other = msg->get_source(msg); + clone->set_source(clone, me->clone(me)); + clone->set_destination(clone, other->clone(other)); + charon->sender->send(charon->sender, clone); } else { |