anchor.diff:                   sip_priority_set:put(Contact#sip_hdr_address.uri, QValue, TargetSet)
           end,
       % go through Contact: headers and add URIs to our current redirect set
  -    NewTargetSet = sip_message:foldl_headers('contact', CollectFun, ReqInfo#req_info.target_set2, Msg),
  -    ReqInfo2 = ReqInfo#req_info{target_set2 = NewTargetSet, destinations = []},
  +    NewTargetSet = sip_message:foldl_headers('contact', CollectFun, ReqInfo#req_info.target_set, Msg),
  +    ReqInfo2 = ReqInfo#req_info{target_set = NewTargetSet, destinations = []},
       Transactions2 = dict:store(TxKey, ReqInfo2, State#sip_ua_state.requests),
   
       % try next destination, was redirected
  
positive.code: 
  -record(req_info, {request :: #sip_message{},                 % SIP request message
                     destinations = [] :: [#sip_destination{}], % list of IP addresses to try next
                     target_set2 = sip_priority_set:new(),      % URI to visit next (redirects)
                     user_data}).                               % Custom user data associated with request
  
  -spec behaviour_info(callbacks | term()) -> [{Function :: atom(), Arity :: integer()}].
  
negative.code:             Kind = Request#sip_message.kind,
              Request2 = Request#sip_message{kind = Kind#sip_request{uri = URI}},
              Destinations = lookup_destinations(Request2),
              ReqInfo2 = ReqInfo#req_info{request = Request2, destinations = Destinations, target_set = TargetSet2},
              send_to_next(Reason, ReqInfo2, State)
      end;
  send_to_next(_Reason, #req_info{request = Request, destinations = [Top | Fallback]} = ReqInfo, State) ->
  