anchor.diff:  
   
   %% start of quoted uri
  -comma(Parsed, [$< | Rest], false, false) ->
  +comma(Parsed, [$< | Rest], _InQuote = false, false) ->
       comma([$< | Parsed], Rest, false, true);
   
   %% end of quoted uri
  -comma(Parsed, [$> | Rest], false, true) ->
  +comma(Parsed, [$> | Rest], _InQuote = false, true) ->
       comma([$> | Parsed], Rest, false, false);
   
   %% inside quoted uri - ignore comma or any other special chars
  -comma(Parsed, [Char | Rest], false, true) ->
  +comma(Parsed, [Char | Rest], _InQuote = false, true) ->
       comma([Char | Parsed], Rest, false, true);
   
   %% -------------
   
   %% an escape code e.g. "\," has been found, don't treat it in any special manner
   %% only done inside a quoted segment of the string
  -comma(Parsed, [$\\, Char | Rest], true, false) ->
  +comma(Parsed, [$\\, Char | Rest], _InQuote = true, false) ->
       comma([Char, $\\ | Parsed], Rest, true, false);
   
   %% Inquote = false, we have now entered inside a quoted ("...") string segment
  -comma(Parsed, [$\" | Rest], false, false) ->
  +comma(Parsed, [$\" | Rest], _InQuote = false, false) ->
       comma([$\" | Parsed], Rest, true, false);
   
   %% Inquote = true and a new quote (") found - end of quoted string segment
  -comma(Parsed, [$\" | Rest], true, false) ->
  +comma(Parsed, [$\" | Rest], _InQuote = true, false) ->
       comma([$\" | Parsed], Rest, false, false);
   
   %% regular char, store in current string
  -comma(Parsed, [Char | Rest], true, false) ->
  +comma(Parsed, [Char | Rest], _InQuote = true, false) ->
       comma([Char | Parsed], Rest, true, false);
   
   %% -------------
   
   %% Inquote = false, so comma is a comma that splits string
   %% start looking for the next one
  -comma(Parsed, [$, | Rest], false, false) ->
  +comma(Parsed, [$, | Rest], _InQuote = false, false) ->
       [lists:reverse(string:strip(Parsed, both)) | comma([], Rest, false, false)];
   
   %% regular char, store in current string
  -comma(Parsed, [Char | Rest], false, false) ->
  +comma(Parsed, [Char | Rest], _InQuote = false, false) ->
       comma([Char | Parsed], Rest, false, false);
   
   %% end of string, clean up last comma separated entry (it's an error
   %% if Inquote or InUriQuote = true, the quotes are then unbalanced)
  -comma(Parsed, [], false, false) ->
  +comma(Parsed, [], _InQuote = false, false) ->
       [lists:reverse(string:strip(Parsed, both))].
   
   %%--------------------------------------------------------------------
  
positive.code: 
  guarded_get_server_transaction_id(Request) when is_record(Request, request) ->
      TopVia = sipheader:topvia(Request#request.header),
      Branch = get_via_branch(TopVia),
      case Branch of
  	"z9hG4bK" ++ _RestOfBranch ->
  
negative.code: via_is_equal(A, B, [parameters | T]) when is_record(A, via), is_record(B, via) ->
      %% XXX we should probably do this case insensitive or whatever, but for now
      %% we just compare that the two Via's sorted parameters are identical.
      %% XXX yes, at least the branch parameter is case insensitive
      %% see RFC3261 section 7.3.1. 'When comparing header fields...'
      Alist = lists:sort(A#via.param),
      Blist = lists:sort(B#via.param),
      case Alist of
  