set fd handler flags properly from gnutls, update dbg info accordingly

reminder: do this for openssl later


SVN revision: 52910
This commit is contained in:
Mike Blumenkrantz 2010-09-29 23:53:00 +00:00
parent d82f8c771e
commit 7cb095cc24
2 changed files with 18 additions and 13 deletions

View File

@ -1809,6 +1809,7 @@ static Eina_Bool
_ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
{
Ecore_Con_Server *svr;
Eina_Bool want_read, want_write;
svr = data;
if (svr->dead)
@ -1817,21 +1818,17 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
if (svr->delete_me)
return ECORE_CALLBACK_RENEW;
if (svr->handshaking && ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ | ECORE_FD_WRITE))
want_read = ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ);
want_write = ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE);
if (svr->handshaking && (want_read || want_write))
{
DBG("Continuing ssl handshake");
if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
DBG("Preparing to read handshake data...");
else
DBG("Preparing to write handshake data...");
DBG("Continuing ssl handshake: preparing to %s...", want_read ? "read" : "write");
#ifdef PRINT_LOTS_OF_DEBUG
if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
{
char buf[32768];
ssize_t len;
len = recv(svr->fd, buf, sizeof(buf), MSG_DONTWAIT | MSG_PEEK);
DBG("%zu bytes in buffer", len);
}
#endif
if (!svr->ssl_state)
{
@ -1865,9 +1862,9 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
}
}
else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
else if (want_read)
_ecore_con_cl_read(svr);
else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
else if (want_write)
{
if (svr->connecting && (!svr_try_connect(svr)))
return ECORE_CALLBACK_RENEW;

View File

@ -501,12 +501,15 @@ _ecore_con_ssl_server_init_gnutls(Ecore_Con_Server *svr)
{
svr->handshaking = EINA_FALSE;
svr->ssl_state = ECORE_CON_SSL_STATE_DONE;
if (gnutls_record_get_direction(svr->session))
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE);
else
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
return ECORE_CON_SSL_ERROR_NONE;
}
default:
break;
}
if (svr->ssl_state)
return ECORE_CON_SSL_ERROR_NONE;
if (!svr->verify)
/* not verifying certificates, so we're done! */
@ -789,6 +792,11 @@ _ecore_con_ssl_client_init_gnutls(Ecore_Con_Client *cl)
{
cl->handshaking = EINA_FALSE;
cl->ssl_state = ECORE_CON_SSL_STATE_DONE;
if (gnutls_record_get_direction(cl->session))
ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_WRITE);
else
ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ);
return ECORE_CON_SSL_ERROR_NONE;
}
default:
break;