anchor.diff:           transport    :: pid(),     %% transport process
            dictionary   :: module(),  %% common dictionary
            service      :: #diameter_service{},
  -         dpr = false  :: false | {uint32(), uint32()}  %% set in old code
  -                               | {boolean(), uint32(), uint32()},
  -                            %% | hop by hop and end to end identifiers
  +         dpr = false  :: false
  +                       | true  %% DPR received, DPA sent
  +                       | {uint32(), uint32()}  %% set in old code
  +                       | {boolean(), uint32(), uint32()},
  +                       %% hop by hop and end to end identifiers in
  +                       %% outgoing DPR; boolean says whether or not
  +                       %% the request was sent explicitly with
  +                       %% diameter:call/4.
            length_errors :: exit | handle | discard}).
   
   %% There are non-3588 states possible as a consequence of 5.6.1 of the
  
positive.code: post('CER' = T, RC, Pkt, S) ->
      {T, caps(S), {RC, Pkt}};
  post('DPR', _, _, #state{parent = Pid}) ->
      [fun(S) -> dpr_timer(), inform_dpr(Pid), S end].
  
  inform_dpr(Pid) ->
      Pid ! {'DPR', self()}.  %% tell watchdog to die with us
  
negative.code:     Peer = {self(), Caps},
      dpr(CBs, [Reason, Ref, Peer], S);
  
  %% Connection is open, DPR already sent or received.
  dpr(_, #state{state = 'Open'}) ->
      ok;
  
  