anchor.diff:      {ok, {Ip, Port}} = inet:sockname(LSock),
       ?SYS_INFO("Listening ~s:~p", [inet:ntoa(Ip), Port]),
       gen_server:cast(self(), accept),
  -    {ok, #state{lsock = LSock}};
  -init([Sock]) ->
  +    {ok, #state{lsock = LSock, name = name(Port)}};
  +init([Name, Sock]) ->
       process_flag(trap_exit, true),
       {ok, {RIp, RPort}} = inet:peername(Sock),
       {ok, {LIp, LPort}} = inet:sockname(Sock),
       ?SYS_INFO("Connect ~s:~p -> ~s:~p",
                 [inet:ntoa(RIp), RPort, inet:ntoa(LIp), LPort]),
  -    {ok, #state{sock = Sock}}.
  +    {ok, #state{name = Name, sock = Sock}}.
   
   handle_call({auto_response, AutoResponse}, _From, State) ->
        case AutoResponse of
  
positive.code:     ?SYS_INFO("Unhandled message: ~p", [Any]),
      {noreply, State}.
  
  terminate(Reason, #state{sock = Sock, lsock = undefined}) ->
      case [P || P <- registered(), whereis(P) == self()] of
          [RegName] ->
              ?SYS_INFO("client down ~p : ~p : ~p", [RegName, Reason, Sock]);
          _ ->
              ?SYS_INFO("client down ~p : ~p", [Reason, Sock])
      end;
  terminate(Reason, #state{sock = undefined, lsock = LSock}) ->
      ?SYS_INFO("server down ~p : ~p", [Reason, LSock]).
  
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
negative.code:                 trn = 0,   % message number
                  status,
                  buffer, % TCP buffer
                  auto_response = true,
                  name
              }).
  
  %%%===================================================================
  