anchor.diff:  %% Returns : true | SipError
   %%--------------------------------------------------------------------
   is_valid_register_request(Header) ->
  -    Require = keylist:fetch('require', Header),
  -    case Require of
  +    case keylist:fetch('require', Header) of
   	[] ->
   	    true;
  -	_ ->
  +	Require ->
   	    %% we support no extensions, so all are unsupported
   	    logger:log(normal, "Request check: The client requires unsupported extension(s) ~p", [Require]),
   	    {siperror, 420, "Bad Extension", [{"Unsupported", Require}]}
       end.
   
  -
  -%%--------------------------------------------------------------------
  -%% Function: process_register_isauth(LogTag, Header, SipUser,
  -%%           Contacts)
  -%%           LogTag      = string(),
  -%%           Header      = keylist record()
  -%%           SipUser     = SIP authentication username (#phone.number
  -%%                         field entry, when using mnesia userdb)
  -%%           Contacts    = list() of contact record()
  -%% Descrip.:
  +%%--------------------------------------------------------------------
  +%% Function: process_updates(LogTag, Header, SipUser, Contacts,
  +%%                           AppName)
  +%%           LogTag   = string(), logging prefix
  +%%           Header   = keylist record(), REGISTER request header
  +%%           SipUser  = SIP authentication username (#phone.number
  +%%                      field entry, when using mnesia userdb)
  +%%           Contacts = list() of contact record()
  +%%           AppName  = atom(), incomingproxy | outgoingproxy
  +%% Descrip.: Update the location database, based on a REGISTER request
  +%%           we are processing. Either add or remove entrys.
   %% Returns : {ok, {Status, Reason, ExtraHeaders}}
   %%           {siperror, Status, Reason}
   %%           {siperror, Status, Reason, ExtraHeaders}
  
positive.code: %% External exports
  %%--------------------------------------------------------------------
  -export([
  	 process_register_isauth/4,
  	 prioritize_locations/1,
  	 debugfriendly_locations/1,
  	 get_locations_for_users/1,
  	 get_user_with_contact/1,
  
  
negative.code: 		{siperror, Status, Reason, ExtraHeaders} ->
  		    transactionlayer:send_response_handler(THandler, Status, Reason, ExtraHeaders);
  		{'EXIT', Reason} ->
  		    logger:log(error, "=ERROR REPORT==== siplocation:process_updates() failed :~n~p~n",
  			       [Reason]),
  		    transactionlayer:send_response_handler(THandler, 500, "Server Internal Error")
  	    end;
  	{stale, _} ->
  	    logger:log(normal, "~s -> Authentication is STALE, sending new challenge", [LogStr]),
  	    transactionlayer:send_challenge(THandler, www, true, none);
  	{{false, eperm}, SipUser} when SipUser /= none ->
  	    logger:log(normal, "~s: ~p: SipUser ~p NOT ALLOWED to REGISTER address ~s",
  		       [LogTag, AppName, SipUser, sipurl:print(ToURL)]),
  	    transactionlayer:send_response_handler(THandler, 403, "Forbidden"),
  	    %% Make event about users failure to register
  	    L = [{register, forbidden}, {user, SipUser}, {address, sipurl:print(ToURL)}],
  	    event_handler:generic_event(normal, location, LogTag, L);
  	{{false, nomatch}, SipUser} when SipUser /= none ->
  	    logger:log(normal, "~s: ~p: SipUser ~p tried to REGISTER invalid address ~s",
  		       [LogTag, AppName, SipUser, sipurl:print(ToURL)]),
  	    transactionlayer:send_response_handler(THandler, 404, "Not Found"),
  	    %% Make event about users failure to register
  	    L = [{register, invalid_address}, {user, SipUser}, {address, sipurl:print(ToURL)}],
  