anchor.diff:  	    end
       end.
   
  -
   %% input = data after first ";"
   %% return: contact_param record()
   %%
   parse_params([]) ->
       contact_param:to_norm([]);
   parse_params(ParamsStr) ->
  -    Params = string:tokens(ParamsStr,";"),
  -    NameValList = [parse_param(Param) || Param <- Params],
  -    contact_param:to_norm(NameValList).
  +    case sipparse_util:split_non_quoted($;, ParamsStr) of
  +	{ok, Params} ->
  +	    NameValList = [parse_param(Param) || Param <- Params],
  +	    contact_param:to_norm(NameValList);
  +	{error, Reason} ->
  +	    throw({error, {unparsable_contact_params, Reason}})
  +    end.
   
   %% return: {NameStr, ValueStr} | throw()
   parse_param(ParamStr) ->
  
positive.code: %%--------------------------------------------------------------------
  test() ->
  
      %% parse
      %%--------------------------------------------------------------------
      %% test "Contact: *"
      autotest:mark(?LINE, "parse/1 - 1"),
  
negative.code:     P14 = parse(["sip:hotsip1@130.237.252.103:5060;transport=TCP;bar=42"
  		 " ;q=1.00;expires=0"]),
  
      %% test that "Contact: *;foo=bar" throws an exception (* can't have contact-params)
      autotest:mark(?LINE, "parse/1 - 15"),
      {unparseable, _} = parse(["*;foo=bar"]),
  
      %% test contact-parameters without a value
      autotest:mark(?LINE, "parse/1 - 16"),
  