anchor.diff:  handle_call({send_msg, _Msg}, _From, #state{status = Status, socket = Socket} = State) ->
       ?warning("Attempt to send msg via not ready connection ~p", [Socket]),
       {reply, {error, Status}, State, ?PROTO_CONNECTION_TIMEOUT};
  -handle_call(?REBUILD_RIB_MSG, _From, #state{session_id = SessionId} = State) ->
  -    {reply, ok, State#state{rib = router:build_rib(SessionId)}, ?PROTO_CONNECTION_TIMEOUT};
  +handle_call(?REBUILD_RIB_MSG, _From, #state{session_id = SessId} = State) ->
  +    {reply, ok, State#state{rib = router:build_rib(SessId)}, ?PROTO_CONNECTION_TIMEOUT};
   handle_call(_Request, _From, State) ->
       ?log_bad_request(_Request),
       {reply, {error, wrong_request}, State, ?PROTO_CONNECTION_TIMEOUT}.
  
positive.code: %%--------------------------------------------------------------------
  -spec terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),
      State :: state()) -> term().
  terminate(Reason, #state{session_id = SessionId, socket = Socket} = State) ->
      ?log_terminate(Reason, State),
  
      case SessionId of
          undefined -> ok;
          _ -> session_connections:deregister(SessionId, self())
      end,
      ssl:close(Socket),
      State.
  
negative.code: %% @private
  -spec route_message(state(), communicator:message()) ->
      {ok, state()} | error().
  route_message(#state{session_id = SessId, rib = RIB} = State, Msg) ->
      case router:route_message(Msg, RIB) of
          ok ->
              {ok, State};
          {ok, ServerMsg} ->
              send_response(State, ServerMsg);
          {error, Reason} ->
              ?THROTTLE_ERROR(SessId, "Message ~s handling error: ~p", [
                  clproto_utils:msg_to_string(Msg), Reason
              ]),
              {ok, State}
  