- SSL_set_fd((SSL *) new_F->ssl, new_fd);
- if((ssl_err = SSL_accept((SSL *) new_F->ssl)) <= 0)
- {
- switch (ssl_err = SSL_get_error((SSL *) new_F->ssl, ssl_err))
- {
- case SSL_ERROR_SYSCALL:
- if(rb_ignore_errno(errno))
- case SSL_ERROR_WANT_READ:
- case SSL_ERROR_WANT_WRITE:
- {
- F->ssl_errno = get_last_err();
- rb_setselect(new_F, RB_SELECT_READ | RB_SELECT_WRITE,
- rb_ssl_tryaccept, NULL);
- return;
- }
- default:
- F->ssl_errno = get_last_err();
- F->accept->callback(F, RB_ERROR_SSL, NULL, 0, F->accept->data);
- return;
- }
- }
- else
- {
- rb_ssl_tryaccept(new_F, NULL);
- }
+ SSL_set_fd((SSL *) new_F->ssl, rb_get_fd(new_F));
+ rb_setup_ssl_cb(new_F);
+ rb_ssl_accept_common(new_F);