anchor.diff:  
   %% Service process has died.
   l({'DOWN', _, process, Pid, _} = T, #listener{service = Pid,
  -                                              socket = Sock}) ->
  -    gen_tcp:close(Sock),
  +                                              socket = Sock,
  +                                              module = M}) ->
  +    M:close(Sock),
       x(T);
   
   %% Transport has been removed.
  -l({transport, remove, _} = T, #listener{socket = Sock}) ->
  -    gen_tcp:close(Sock),
  +l({transport, remove, _} = T, #listener{socket = Sock,
  +                                        module = M}) ->
  +    M:close(Sock),
       x(T).
   
   %% t/2
  
positive.code:     LAddr = laddr(LAddrOpt, Mod, LSock),
      true = diameter_reg:add_new({?MODULE, listener, {Ref, {LAddr, LSock}}}),
      proc_lib:init_ack({ok, self(), {LAddr, LSock}}),
      #listener{socket = LSock}.
  
  laddr([], Mod, Sock) ->
      {ok, {Addr, _Port}} = sockname(Mod, Sock),
  
negative.code: 
  %% Listener process state.
  -record(listener, {socket :: inet:socket(),
                     module :: module(),
                     service = false :: false | pid()}). %% service process
  
  %% Monitor process state.
  