anchor.diff:  
   %% Connect to FTP server at Host (default is TCP port 21)
   %% in order to establish a control connection.
  +-spec setup_ctrl_connection(Host, Port, Timeout, State) -> Result when
  +      Host    :: inet:socket_address() | inet:hostname(),
  +      Port    :: inet:port_number(),
  +      Timeout :: timeout(),
  +      State   :: #state{},
  +      Reason  :: timeout | inet:posix(),
  +      Result  :: {ok, State, integer()} | {error, Reason}.
   setup_ctrl_connection(Host, Port, Timeout, #state{sockopts_ctrl = SockOpts} = State0) ->
       MsTime = erlang:monotonic_time(),
       case connect(Host, Port, SockOpts, Timeout, State0) of
  
positive.code:          {ftp_extension, ValidateFtpExtension, false, ?FTP_EXT_DEFAULT}],
      validate_options(Options, ValidOptions, []).
  
  socket_options(Options) ->
      CtrlOpts = proplists:get_value(sock_ctrl, Options, []),
      DataActOpts = proplists:get_value(sock_data_act, Options, CtrlOpts),
  
negative.code:             Error
      end.
  
  -spec accept_data_connection_tls_options(State) -> Result when
        State  :: #state{},
        Result :: [tuple()].
  accept_data_connection_tls_options(#state{ csock = {ssl,Socket}, tls_options = TO0, tls_ctrl_session_reuse = true }) ->
  	TO = lists:keydelete(reuse_sessions, 1, TO0),
  	{ok, [{session_id,SSLSessionId},{session_data,SSLSessionData}]} = ssl:connection_information(Socket, [session_id, session_data]),
  