anchor.diff:      %% that does nothing but kill us with the parent until call
       %% returns.
       {ok, MPid} = diameter_tcp_sup:start_child(#monitor{parent = Pid}),
  -    Sock = i(T, Ref, Mod, Pid, Opts, Addrs),
  +    {[SslOpts], Rest} = proplists:split(Opts, [ssl_options]),
  +    Sock = i(T, Ref, Mod, Pid, Rest, Addrs),
       MPid ! {stop, self()},  %% tell the monitor to die
       setopts(Mod, Sock),
       #transport{parent = Pid,
                  module = Mod,
  -               socket = Sock};
  +               socket = Sock,
  +               ssl = ssl_opts(Mod, SslOpts)};
   
   %% A monitor process to kill the transport if the parent dies.
   i(#monitor{parent = Pid, transport = TPid} = S) ->
  
positive.code: 
  %% Crash on anything unexpected.
  
  %% recv/2
  %%
  %% Reassemble fragmented messages and extract multple message sent
  
negative.code:     true = diameter_reg:add_new({?MODULE, listener, {LRef, {LAddr, LSock}}}),
      start_timer(#listener{socket = LSock}).
  
  ssl_opts(_, []) ->
      false;
  ssl_opts(Mod, [{ssl_options, Opts}])
    when is_list(Opts) ->
      [{Mod, tcp, tcp_closed} | Opts];
  ssl_opts(_, L) ->
      ?ERROR({ssl_options, L}).
  
  %% i/6
  
  i(accept, Ref, Mod, Pid, Opts, Addrs) ->
  