anchor.diff:  		req_auth :: undefined | binary(),
   		req_attr :: undefined | radius_attributes:attributes(),
   		subscriber :: undefined | string(),
  +		multi_sessions_allowed :: undefined | boolean(),
   		app_id :: undefined | non_neg_integer(),
   		auth_request_type :: undefined | 1..3,
   		origin_host :: undefined | string(),
  
positive.code: 	false ->
  		request3(list_to_binary(Password), StateData);
  	{true, false, [ExistingSessionAtt]} ->
  		case pg2:get_closest_pid(ocs_radius_acct_top_sup) of
  			{error, Reason} ->
  				request5(Reason, StateData);
  			DiscFsmSup ->
  				start_disconnect(DiscFsmSup, ExistingSessionAtt, StateData)
  		end;
  	{true, true, _ExistingSessionAtt} ->
  		request3(list_to_binary(Password), StateData);
  	{error, _Reason} ->
  		request5(not_found, StateData)
  end.
  
negative.code: 			{error, not_found}
  	end.
  
  -spec add_session_attributes(Subscriber, Attributes, MultiSessionStatus) -> Result
  	when
  		Subscriber :: string() | binary(),
  		Attributes :: radius_attributes:attributes(),
  		MultiSessionStatus :: undefined | boolean(),
  		Result :: ok | {error, term()}.
  %% @doc Extract session related attributes from `Attributes' and append
  %% to `Subscriber's existing session attribute list.
  %% @hidden
  add_session_attributes(Subscriber, Attributes, MultiSessionStatus) ->
  	NewSessionAttrs = extract_session_attributes(Attributes),
  	{ok, #subscriber{session_attributes = CurrentSessionList} = S}
  			= ocs:find_subscriber(Subscriber),
  	NewRecord = case MultiSessionStatus of
  		false ->
  			S#subscriber{session_attributes = [NewSessionAttrs]};
  		_ ->
  			NewSessionList = [NewSessionAttrs | CurrentSessionList],
  			S#subscriber{session_attributes = NewSessionList}
  	end,
  	F = fun() ->
  		mnesia:write(NewRecord)
  	end,
  	case mnesia:transaction(F) of
  		{aborted, Reason} ->
  