anchor.diff:  					identifier = EapID, data = EapData},
   			send_response(EapPacket, ?AccessChallenge,
   					RadiusID, [], RequestAuthenticator, Secret, RadiusFsm),
  -			NewStateData = StateData#statedata{buf = []},
  +			NewStateData = StateData#statedata{tx_buf = []},
   			{next_state, ttls, NewStateData, ?TIMEOUT};
   		_ ->
   			{stop, fragmentation_unimplemented, StateData}
   	end;
  -aaa({eap_ttls, _SslPid, Data}, #statedata{buf = Buf} = StateData) ->
  -	NewStateData = StateData#statedata{buf = [Buf, Data]},
  +aaa({eap_ttls, _SslPid, Data}, #statedata{tx_buf = TxBuf} = StateData) ->
  +	NewStateData = StateData#statedata{tx_buf = [TxBuf, Data]},
   	{next_state, aaa, NewStateData, ?BufTIMEOUT}.
   
   -spec handle_event(Event :: term(), StateName :: atom(),
  
positive.code: 		radius_fsm :: pid(),
  		radius_id :: byte(),
  		req_auth :: [byte()],
  		ssl_socket :: ssl:sslsocket(),
  		socket_options :: ssl:options(),
  		buf = [] :: iolist(),
  		ssl_pid :: pid(),
  		tls_key :: string(),
  		tls_crt :: string()}).
  
negative.code: ttls({#radius{code = ?AccessRequest, id = RadiusID,
  		authenticator = RequestAuthenticator, attributes = Attributes},
  		RadiusFsm}, #statedata{eap_id = EapID, ssl_pid = SslPid,
  		session_id = SessionID, secret = Secret, rx_buf = RxBuf} = StateData) ->
  	EapMessages = radius_attributes:get_all(?EAPMessage, Attributes),
  	EapMessage = iolist_to_binary(EapMessages),
  	NewStateData = case radius_attributes:find(?FramedMtu,  Attributes) of
  		{ok, MTU} ->
  			StateData#statedata{radius_fsm = RadiusFsm,
  					radius_id = RadiusID, mtu = MTU};
  		{error, not_found} ->
  			StateData#statedata{radius_fsm = RadiusFsm, radius_id = RadiusID}
  	end,
  	try
  		#eap_packet{code = response, type = ?TTLS, identifier = EapID,
  				data = TtlsData} = ocs_eap_codec:eap_packet(EapMessage),
  		case ocs_eap_codec:eap_ttls(TtlsData) of
  			#eap_ttls{more = false, message_len = undefined,
  					start = false, data = Data} ->
  				ocs_eap_ttls_transport:deliver(SslPid, self(), [RxBuf, Data]),
  				NextStateData = NewStateData#statedata{rx_buf = []},
  				{next_state, aaa, NextStateData, ?TIMEOUT};
  			#eap_ttls{more = true, message_len = undefined,
  					start = false, data = Data} when RxBuf /= [] ->
  				NextStateData = NewStateData#statedata{rx_buf = [RxBuf, Data]},
  				{next_state, ttls, NextStateData, ?TIMEOUT};
  			#eap_ttls{more = true, message_len = MessageLength,
  					start = false, data = Data} ->
  				NextStateData = NewStateData#statedata{rx_buf = [RxBuf, Data],
  						rx_length = MessageLength},
  				{next_state, ttls, NextStateData, ?TIMEOUT};
  	catch
  		_:_ ->
  			EapPacket = #eap_packet{code = failure, identifier = EapID},
  