Updated to hostap_2_6
[mech_eap.git] / libeap / src / eap_peer / eap_tnc.c
index 25b9f12..726221e 100644 (file)
@@ -10,6 +10,7 @@
 
 #include "common.h"
 #include "eap_i.h"
+#include "eap_config.h"
 #include "tncc.h"
 
 
@@ -35,12 +36,16 @@ struct eap_tnc_data {
 static void * eap_tnc_init(struct eap_sm *sm)
 {
        struct eap_tnc_data *data;
+       struct eap_peer_config *config = eap_get_config(sm);
 
        data = os_zalloc(sizeof(*data));
        if (data == NULL)
                return NULL;
        data->state = WAIT_START;
-       data->fragment_size = 1300;
+       if (config && config->fragment_size)
+               data->fragment_size = config->fragment_size;
+       else
+               data->fragment_size = 1300;
        data->tncc = tncc_init();
        if (data->tncc == NULL) {
                os_free(data);
@@ -345,11 +350,6 @@ static struct wpabuf * eap_tnc_process(struct eap_sm *sm, void *priv,
        ret->decision = DECISION_UNCOND_SUCC;
        ret->allowNotifications = TRUE;
 
-       if (data->out_buf) {
-               data->state = PROC_MSG;
-               return eap_tnc_build_msg(data, ret, id);
-       }
-
        if (tncs_done) {
                resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_TNC, 1,
                                     EAP_CODE_RESPONSE, eap_get_id(reqData));
@@ -410,7 +410,6 @@ fail:
 int eap_peer_tnc_register(void)
 {
        struct eap_method *eap;
-       int ret;
 
        eap = eap_peer_method_alloc(EAP_PEER_METHOD_INTERFACE_VERSION,
                                    EAP_VENDOR_IETF, EAP_TYPE_TNC, "TNC");
@@ -421,8 +420,5 @@ int eap_peer_tnc_register(void)
        eap->deinit = eap_tnc_deinit;
        eap->process = eap_tnc_process;
 
-       ret = eap_peer_method_register(eap);
-       if (ret)
-               eap_peer_method_free(eap);
-       return ret;
+       return eap_peer_method_register(eap);
 }