diff options
author | 2012-06-26 11:09:10 +0000 | |
---|---|---|
committer | 2012-06-26 11:09:10 +0000 | |
commit | 8d81c769fb4ad5c3912e9e1b0d40e77a2bc4bb2a (patch) | |
tree | b73eb71eeea82e11b0568b068db073ff76f55886 | |
parent | close SA when IKE_SA_INIT or IKE_AUTH exchanges fail; (diff) | |
download | wireguard-openbsd-8d81c769fb4ad5c3912e9e1b0d40e77a2bc4bb2a.tar.xz wireguard-openbsd-8d81c769fb4ad5c3912e9e1b0d40e77a2bc4bb2a.zip |
improve ikev2_msg_retransmit_timeout
-rw-r--r-- | sbin/iked/ikev2_msg.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/sbin/iked/ikev2_msg.c b/sbin/iked/ikev2_msg.c index c70c4a53b36..622c6b2241b 100644 --- a/sbin/iked/ikev2_msg.c +++ b/sbin/iked/ikev2_msg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ikev2_msg.c,v 1.17 2012/06/26 11:00:28 mikeb Exp $ */ +/* $OpenBSD: ikev2_msg.c,v 1.18 2012/06/26 11:09:10 mikeb Exp $ */ /* $vantronix: ikev2.c,v 1.101 2010/06/03 07:57:33 reyk Exp $ */ /* @@ -964,19 +964,21 @@ ikev2_msg_retransmit_timeout(struct iked *env, void *arg) struct iked_message *msg = arg; struct iked_sa *sa = msg->msg_sa; - if ((sendto(msg->msg_fd, ibuf_data(msg->msg_data), - ibuf_size(msg->msg_data), 0, - (struct sockaddr *)&msg->msg_peer, msg->msg_peerlen)) == -1) { - log_warn("%s: sendto", __func__); - sa_free(env, sa); - return; - } - if (msg->msg_tries < IKED_RETRANSMIT_TRIES) { + if ((sendto(msg->msg_fd, ibuf_data(msg->msg_data), + ibuf_size(msg->msg_data), 0, + (struct sockaddr *)&msg->msg_peer, + msg->msg_peerlen)) == -1) { + log_warn("%s: sendto", __func__); + sa_free(env, sa); + return; + } TAILQ_INSERT_TAIL(&sa->sa_requests, msg, msg_entry); /* Exponential timeout */ timer_register(env, &msg->msg_timer, IKED_RETRANSMIT_TIMEOUT * (2 << (msg->msg_tries++))); - } else + } else { + log_debug("%s: retransmit limit reached", __func__); sa_free(env, sa); + } } |