anchor.diff:  default_hashsign(_Version, KeyExchange)
     when KeyExchange == dh_anon ->
       {null, anon}.
  +
  +start_or_recv_cancel_timer(infinity, _RecvFrom) ->
  +    ok;
  +start_or_recv_cancel_timer(Timeout, RecvFrom) ->
  +    erlang:send_after(Timeout, self(), {cancel_start_or_recv, RecvFrom}).    
  
positive.code: %% Description:  Receives data when active = false
  %%--------------------------------------------------------------------
  recv(Pid, Length, Timeout) -> 
      sync_send_all_state_event(Pid, {recv, Length}, Timeout).
  %%--------------------------------------------------------------------
  -spec connect(host(), inet:port_number(), port(), {#ssl_options{}, #socket_options{}},
  	      pid(), tuple(), timeout()) ->
  
negative.code: %% mode before telling the client that it is willing to upgrade
  %% and before calling ssl:ssl_accept/2. These clauses are 
  %% here to make sure it is the users problem and not owers if
  %% they upgrade an active socket. 
  handle_sync_event({start,_}, _, connection, State) ->
      {reply, connected, connection, State, get_timeout(State)};
  handle_sync_event({start,_}, _From, error, {Error, State = #state{}}) ->
      {stop, {shutdown, Error}, {error, Error}, State};
  
  handle_sync_event({start, Timeout}, StartFrom, StateName, State) ->
      start_or_recv_cancel_timer(Timeout, StartFrom),
      {next_state, StateName, State#state{start_or_recv_from = StartFrom}, get_timeout(State)};
  
  handle_sync_event(close, _, StateName, State) ->
  