anchor.diff:  %%           have failed, and we just format the 416 error response.
   %% Returns : true | throw({sipparseerror, ...})
   %%--------------------------------------------------------------------
  -check_supported_uri_scheme({unparseable, URIstr}, Header) when is_record(Header, keylist) ->
  +check_supported_uri_scheme({unparseable, URIstr}, Header) when is_list(URIstr), is_record(Header, keylist) ->
       case string:chr(URIstr, $:) of
   	0 ->
   	    throw({sipparseerror, request, Header, 416, "Unsupported URI Scheme"});
   	Index ->
  -	    Scheme = string:substr(URIstr, 1, Index),
  -	    throw({sipparseerror, request, Header, 416, "Unsupported URI Scheme (" ++ Scheme ++ ")"})
  +	    case http_util:to_lower(string:substr(URIstr, 1, Index)) of
  +		Proto when Proto == "sip:"; Proto == "sips:" ->
  +		    throw({sipparseerror, request, Header, 400, "Unparsable Request-URI"});
  +		Scheme ->
  +		    throw({sipparseerror, request, Header, 416, "Unsupported URI Scheme (" ++ Scheme ++ ")"})
  +	    end
       end;
   check_supported_uri_scheme(URI, Header) when is_record(URI, sipurl), is_record(Header, keylist) ->
       true.
  
positive.code: 					      is_record(Header, keylist) ->
      case keylist:fetch(Name, Header) of
  	[Str] when is_list(Str) ->
  	    case sipheader:from([Str]) of
  		{_, URI} when is_record(URI, sipurl) ->
  		    sanity_check_uri(Type, Name ++ ":", URI, Header);
  		_ ->
  		    throw({sipparseerror, Type, Header, 400, "Invalid " ++ Name ++ ": header"})
  	    end;
  	_ ->
  
negative.code: 		  E ->
  		    ST = erlang:get_stacktrace(),
  		    logger:log(error, "=ERROR REPORT==== from SIP message parser (stage 2) "
  			       "(in sipserver:parse_packet()) -> CAN'T SEND RESPONSE :~n~p, "
  			       "stacktrace : ~p", [E, ST]),
  		    %% pass the error on (will probably go unnoticed)
  		    erlang:error({caught_error, E, ST})
  	    end;
  