anchor.diff:      E = io_lib:format("bad data in user record (name ~p) : ~p", [U#user.name, H]),
       {error, E}.
   
  -parse_address([], A) ->
  +%%--------------------------------------------------------------------
  +%% Function: parse_address(Params, A)
  +%%           Params = list() of {Key, Value} tuple()
  +%%           A      = address record()
  +%% Descrip.: Parse an address entry.
  +%% Returns : Address         |
  +%%           {error, Reason}
  +%%           Address = address record()
  +%%           Reason  = string()
  +%%--------------------------------------------------------------------
  +parse_address([], A) when is_record(A, address)->
       A;
   parse_address([{user, V} | T], A) when is_record(A, address) ->
       parse_address(T, A#address{user=V});
  
positive.code: 	    read_userdb_error(E, State, Caller)
      end.
  
  read_userdb_error(E, State, init) when is_record(State, state) ->
      %% On init, always return error tuple
      {error, E};
  read_userdb_error(E, State, cast) when is_record(State, state) ->
      %% On cast, always log errors
      logger:log(error, E, []),
  
negative.code: 	    logger:log(error, E),
  	    ignore;
  	Fn when is_list(Fn) ->
  	    %% Set up periodic checking for changes in the userdb file, default every 15 seconds
  	    case sipserver:get_env(sipuserdb_file_refresh_interval, 15) of
  		X when X == 0; X == none ->
  		    %% periodic checking for new data disabled through configuration
  		    ok;
  		Interval when is_integer(Interval) ->
  		    {ok, _T} = timer:send_interval(Interval * 1000, ?SERVER, {check_file})
  	    end,
  
  	    case get_mtime(Fn) of
  		{ok, MTime} ->
  		    case read_userdb(#state{fn=Fn}, MTime, init) of
  