aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2011-01-10 07:22:02 +0100
committerAndreas Steffen <andreas.steffen@strongswan.org>2011-01-11 01:17:40 +0100
commit213281de0476f636bc4b63eb56bdd06933ab9c9f (patch)
tree70f076600f301469cc22da275e504e0d38eb69c5 /src
parent4c8e9708cac1ee8ca40343bc62994075310cdd1c (diff)
downloadstrongswan-213281de0476f636bc4b63eb56bdd06933ab9c9f.tar.bz2
strongswan-213281de0476f636bc4b63eb56bdd06933ab9c9f.tar.xz
terminate TNCCS 1.1 connection after sending recommendation
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/plugins/tnccs_11/tnccs_11.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/libcharon/plugins/tnccs_11/tnccs_11.c b/src/libcharon/plugins/tnccs_11/tnccs_11.c
index 9d3989bd8..b5b2a8a34 100644
--- a/src/libcharon/plugins/tnccs_11/tnccs_11.c
+++ b/src/libcharon/plugins/tnccs_11/tnccs_11.c
@@ -199,6 +199,19 @@ static void handle_message(private_tnccs_11_t *this, tnccs_msg_t *msg)
chunk_create(lang, strlen(lang)));
break;
}
+ case TNCCS_MSG_REASON_STRINGS:
+ {
+ tnccs_reason_strings_msg_t *reason_msg;
+ chunk_t reason_string, reason_lang;
+
+ reason_msg = (tnccs_reason_strings_msg_t*)msg;
+ reason_string = reason_msg->get_reason(reason_msg, &reason_lang);
+ DBG2(DBG_TNC, "reason string is '%.*s", reason_string.len,
+ reason_string.ptr);
+ DBG2(DBG_TNC, "reason language is '%.*s", reason_lang.len,
+ reason_lang.ptr);
+ break;
+ }
default:
break;
}
@@ -319,6 +332,9 @@ static void check_and_build_recommendation(private_tnccs_11_t *this)
this->batch->add_msg(this->batch, msg);
}
enumerator->destroy(enumerator);
+
+ /* we have reache the final state */
+ this->delete_state = TRUE;
}
}
@@ -359,7 +375,8 @@ METHOD(tls_t, build, status_t,
/* Do not allow any asynchronous IMCs or IMVs to add additional messages */
this->mutex->lock(this->mutex);
- if (this->is_server && (!this->batch || this->fatal_error))
+ if (this->is_server && !this->delete_state &&
+ (!this->batch || this->fatal_error))
{
check_and_build_recommendation(this);
}