 
 : maybe-handshake ( ssl-handle -- )
     dup connected>> [ drop ] [
-        dup terminated>> [
-            drop
-        ] [
-            [ [ do-ssl-accept ] with-timeout ]
-            [ t swap connected<< ] bi
-        ] if
+        [ [ do-ssl-accept ] with-timeout ]
+        [ t swap connected<< ] bi
     ] if ;
 
 ! Input ports

    handle ;

: ssl-error-syscall ( ssl-handle -- event/f )
    f >>connected
    t >>terminated drop
    ERR_get_error {
        { -1 [
            errno { [ ECONNRESET = ] [ EPIPE = ] } 1||

        { SSL_ERROR_SSL [ drop throw-ssl-error ] }
        ! https://stackoverflow.com/questions/50223224/ssl-read-returns-ssl-error-zero-return-but-err-get-error-is-0
        ! we got disconnected
        { SSL_ERROR_ZERO_RETURN [ drop f ] }
        { SSL_ERROR_WANT_ACCEPT [ drop +input+ ] }
    } case ;

