anchor.diff:  		{error, not_found} = radius_attributes:find(?ReplyMessage, Attributes),
   		{error, not_found} = radius_attributes:find(?State, Attributes),
   		{ok, AcctSessionId} = radius_attributes:find(?AcctSessionId, Attributes),
  -		request1(AcctStatusType, AcctSessionId, Id, Authenticator,
  -						 Secret, NasId, Address, AccPort, ListenPort, Attributes, State)
  +		request1(AcctStatusType, AcctSessionId, Id, Authenticator, Secret,
  +				NasId, Address, AccPort, ListenPort, Attributes, From, State)
   	catch
  -		_:_ ->
  +		_:_Reason ->
   			{reply, {error, ignore}, State}
   	end.
   %% @hidden
   request1(?AccountingStart, AcctSessionId, Id,
   		Authenticator, Secret, NasId, Address, _AccPort, _ListenPort, Attributes,
  -		#state{address = ServerAddress, port = ServerPort} = State) ->
  -	SessionAttributes = extract_session_attributes(Attributes),
  +		From, #state{address = ServerAddress, port = ServerPort} = State) ->
  +	From, SessionAttributes = extract_session_attributes(Attributes),
   	{ok, Subscriber} = radius_attributes:find(?UserName, Attributes),
   	case ocs_rating:rate(radius, Subscriber, initial, [], [], SessionAttributes) of
   		{out_of_credit, SessionList}  ->
  -			start_disconnect(State, Subscriber, SessionList),
  -			{reply, {ok, response(Id, Authenticator, Secret)}, State};
  +			gen_server:reply(From, {ok, response(Id, Authenticator, Secret)}),
  +			start_disconnect(State, Subscriber, SessionList),
  +			{noreply, State};
   		{error, Reason} ->
   			error_logger:warning_report(["Accounting failed",
   					{error, Reason}, {module, ?MODULE},
  
positive.code: 		NewState :: state().
  %% @doc Handle a received RADIUS Accounting Request packet.
  %% @private
  request(Address, AccPort, Secret,
  				ListenPort, Radius, {_RadiusFsm, _Tag} = _From, State) ->
  	try
  		#radius{code = ?AccountingRequest, id = Id, attributes = Attributes,
  				authenticator = Authenticator} = Radius,
  
negative.code: 					{address, Address}, {session, AcctSessionId}]),
  			{reply, {ok, response(Id, Authenticator, Secret)}, State};
  		{disabled, SessionList} ->
  			gen_server:reply(From, {ok, response(Id, Authenticator, Secret)}),
  			start_disconnect(State, Subscriber, SessionList),
  			{noreply, State};
  		{ok, #subscriber{}, _} ->
  			ok = ocs_log:acct_log(radius, {ServerAddress, ServerPort}, start, Attributes),
  			{reply, {ok, response(Id, Authenticator, Secret)}, State}
  	end;
  request1(?AccountingStop, AcctSessionId, Id,
  		Authenticator, Secret, NasId, Address, _AccPort, _ListenPort, Attributes,
  		From, #state{address = ServerAddress, port = ServerPort} = State) ->
  	InOctets = radius_attributes:find(?AcctInputOctets, Attributes),
  	OutOctets = radius_attributes:find(?AcctOutputOctets, Attributes),
  	UsageOctets = case {InOctets, OutOctets} of
  