anchor.diff:      Reply = eovsdb_protocol:monitor(Conn, self(), DB, Select),
       MRef = erlang:monitor(process, MPid),
       {reply, Reply, State#?STATE{ monitor_ref = MRef,
  -                                 monitor_pid = MPid }};
  +                                 monitor_pid = MPid,
  +                                 monitor_select = Select}};
   handle_call(monitor_cancel, _From,
               State = #?STATE{ conn_pid = ConnPid,
                                monitor_ref = MonRef}) ->
       eovsdb_protocol:monitor_cancel(ConnPid),
       erlang:demonitor(MonRef),
  -    {reply, ok, State#?STATE{ monitor_ref = undefined}};
  +    {reply, ok, State#?STATE{ monitor_ref = undefined,
  +                              monitor_pid = undefined,
  +                              monitor_select = undefined}};
   handle_call(close_session, _From,
               State = #?STATE{ conn_pid = ConnPid, conn_ref = ConnRef }) ->
       erlang:demonitor(ConnRef),
  
positive.code:             {ok, Socket} ->
                  case eovsdb_protocol_sup:start_child(Socket) of
                      {ok, Conn} ->
                          gen_tcp:controlling_process(Socket, Conn),
                          MRef = erlang:monitor(process, Conn),
                          State#?STATE{ conn_ref = MRef, conn_pid = Conn };
                      {error, ChildReason} ->
                          HostStr = inet_parse:ntoa(Host),
                          ?WARN("can't start eovsdb_protocol for ~s:~p: ~p~n", [HostStr, Port, ChildReason]),
                          retry_connect(self(), TimeOut),
                          State
                  end;
              {error, TcpReason} ->
                  HostStr = inet_parse:ntoa(Host),
                  ?WARN("tcp error connecting to ~s:~p: ~p~n", [HostStr, Port, TcpReason]),
                  retry_connect(self(), TimeOut),
                  State
          end,
  
negative.code:                   conn_ref               :: reference(),
                    connection_timeout = 0 :: integer(),
                    monitor_pid            :: pid(),
                    monitor_ref            :: reference(),
                    monitor_select         :: term()}).
  
  %% ------------------------------------------------------------------
  %% API Function Exports
  