anchor.diff:  
   %% send/2
   
  -send(Bin, #monitor{socket = Sock,
  -                   module = M}) ->
  +send(#diameter_packet{bin = Bin}, S) ->
  +    send(Bin, S);
  +
  +send(Bin, #monitor{} = S) ->
  +    send1(Bin, S);
  +
  +%% Send from the monitor process to avoid deadlock if both the
  +%% receiver and the peer were to block in send.
  +send(Bin, #transport{monitor = MPid}) ->
  +    MPid ! Bin,
  +    MPid.
  +
  +%% send1/2
  +
  +send1(Bin, #monitor{socket = Sock,
  +                    module = M}) ->
       case send(M, Sock, Bin) of
           ok ->
               ok;
           {error, Reason} ->
               x({send, Reason})
  -    end;
  -
  -%% Send from the monitor process to avoid deadlock if both the
  -%% receiver and the peer were to block in send.
  -send(Bin, #transport{monitor = MPid}) ->
  -    MPid ! Bin,
  -    MPid.
  +    end.
   
   %% send/3
   
  
positive.code: %% also eventually lead to watchdog failover.
  
  %% No fragment to flush or not receiving messages.
  flush(#transport{frag = Frag, throttled = B} = S)
    when Frag == <<>>;
         B /= false ->
      S;
  
  %% Messages have been received since last timer expiry.
  
negative.code: 
  %% Transport is telling us that TLS has been negotiated after
  %% capabilities exchange.
  m({tls, SSock}, S) ->
      S#monitor{socket = SSock,
                module = ssl};
  
  