anchor.diff:  			{error, ignore}
   	end.
   %% @hidden
  -request(<<_Code, Id, Length:16, _/binary>> = Packet, Secret,
  +request(<<_Code, Id, _Length:16, _/binary>> = Packet, Secret,
   		#state{log = Log} = _State) ->
   	try
   		#radius{code = ?AccountingRequest, id = Id,
  
positive.code: 		Secret :: string() | binary(), Attributes :: binary() | [byte()]) ->
  	AccessAccept :: binary().
  %% @hidden
  response(Id, RequestAuthenticator, Secret, AttributeList)
  		when is_list(AttributeList) ->
  	Attributes = radius_attributes:codec(AttributeList),
  	response(Id, RequestAuthenticator, Secret, Attributes);
  response(Id, RequestAuthenticator, Secret, Attributes)
  		when is_binary(Attributes) ->
  	Length = size(Attributes) + 20,
  	ResponseAuthenticator = erlang:md5([<<?AccountingResponse, Id, Length:16>>,
  			RequestAuthenticator, Attributes, Secret]),
  	Response = #radius{code = ?AccountingResponse, id = Id,
  			authenticator = ResponseAuthenticator, attributes = Attributes},
  	radius:codec(Response).
  
  
  
negative.code: 		{error, not_found} = radius_attributes:find(?ReplyMessage, Attributes),
  		{error, not_found} = radius_attributes:find(?State, Attributes),
  		{ok, _AcctSessionId} = radius_attributes:find(?AcctSessionId, Attributes),
  		case disk_log:log(Log, Attributes) of
  			ok ->
  				case ocs:decrement_subscriber_balance(Subscriber, Usage) of
  					{ok, 0} ->
  						{ok, response(Id, Authenticator, Secret, BinaryAttributes)};
  						%io:fwrite("Send Disconnect/Request to NAS");
  					{ok, Balance} ->
  						{ok, response(Id, Authenticator, Secret, BinaryAttributes)}
  				end;
  			{error, _Reason} ->
  				{error, ignore}
  