diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-01-10 07:22:02 +0100 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-01-11 01:17:40 +0100 |
commit | 213281de0476f636bc4b63eb56bdd06933ab9c9f (patch) | |
tree | 70f076600f301469cc22da275e504e0d38eb69c5 /src | |
parent | 4c8e9708cac1ee8ca40343bc62994075310cdd1c (diff) | |
download | strongswan-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.c | 19 |
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); } |