diff options
-rw-r--r-- | src/libcharon/plugins/eap_ttls/eap_ttls_peer.c | 10 | ||||
-rw-r--r-- | src/libtls/tls_eap.c | 10 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/libcharon/plugins/eap_ttls/eap_ttls_peer.c b/src/libcharon/plugins/eap_ttls/eap_ttls_peer.c index d84211540..11e6cd0f3 100644 --- a/src/libcharon/plugins/eap_ttls/eap_ttls_peer.c +++ b/src/libcharon/plugins/eap_ttls/eap_ttls_peer.c @@ -147,12 +147,16 @@ METHOD(tls_application_t, process, status_t, switch (status) { case SUCCESS: - /* fall through to NEED_MORE since response must be sent */ - case NEED_MORE: - /* TODO support multiple EAP request/response exchanges */ this->method->destroy(this->method); this->method = NULL; return NEED_MORE; + case NEED_MORE: + if (type != EAP_TNC) + { + this->method->destroy(this->method); + this->method = NULL; + } + return NEED_MORE; case FAILED: default: if (vendor) diff --git a/src/libtls/tls_eap.c b/src/libtls/tls_eap.c index fa1cf5563..1aca78558 100644 --- a/src/libtls/tls_eap.c +++ b/src/libtls/tls_eap.c @@ -72,13 +72,13 @@ struct private_tls_eap_t { }; /** - * Flags of an EAP-TLS/TTLS message + * Flags of an EAP-TLS/TTLS/TNC message */ typedef enum { - EAP_TLS_LENGTH = (1<<7), - EAP_TLS_MORE_FRAGS = (1<<6), - EAP_TLS_START = (1<<5), - EAP_TTLS_VERSION = (0x07), + EAP_TLS_LENGTH = (1<<7), /* shared with EAP-TTLS/TNC */ + EAP_TLS_MORE_FRAGS = (1<<6), /* shared with EAP-TTLS/TNC */ + EAP_TLS_START = (1<<5), /* shared with EAP-TTLS/TNC */ + EAP_TTLS_VERSION = (0x07), /* shared with EAP-TNC */ } eap_tls_flags_t; #define EAP_TTLS_SUPPORTED_VERSION 0 |