anchor.diff:  find_transport(#diameter_app{} = App, Msg, Opts, S) ->
       ft(App, Msg, Opts, S).
   
  -ft(#diameter_app{module = Mod} = App, Msg, Opts, S) ->
  +ft(#diameter_app{module = Mod, dictionary = Dict} = App, Msg, Opts, S) ->
       #options{filter = Filter,
                extra = Xtra}
           = Opts,
       pick_peer(App#diameter_app{module = Mod ++ Xtra},
  -              get_destination(Msg),
  +              get_destination(Dict, Msg),
                 Filter,
                 S);
   ft(false = No, _, _, _) ->
  
positive.code:               Filter,
                S).
  
  %% get_destination/1
  
  get_destination(Msg) ->
      [str(get_avp_value(?BASE, 'Destination-Realm', Msg)),
       str(get_avp_value(?BASE, 'Destination-Host', Msg))].
  
  %% This is not entirely correct. The avp could have an arity 1, in
  %% which case an empty list is a DiameterIdentity of length 0 rather
  
negative.code: %% identify the type of the AVP and its arity in the message in
  %% question. The third form allows messages to be sent as is, without
  %% a dictionary, which is needed in the case of relay agents, for one.
  
  get_avp_value(?RELAY, Name, Msg) ->
      get_avp_value(?BASE, Name, Msg);
  
  get_avp_value(Dict, Name, [#diameter_header{} | Avps]) ->
      try
  