forked from enlightenment/efl
parent
7ee02394bc
commit
ff5f8cc24f
|
@ -434,6 +434,8 @@ ecore_con_server_connect(Ecore_Con_Type compl_type,
|
|||
_ecore_con_cl_handler, svr,
|
||||
NULL, NULL);
|
||||
if (!svr->fd_handler) goto error;
|
||||
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
/* we got our server! */
|
||||
Ecore_Con_Event_Server_Add *e;
|
||||
|
@ -974,6 +976,7 @@ _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
|
|||
(ip >> 16) & 0xff,
|
||||
(ip >> 24) & 0xff);
|
||||
cl->ip = strdup(buf);
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
Ecore_Con_Event_Client_Add *e;
|
||||
|
||||
|
@ -1015,7 +1018,10 @@ svr_try_connect_ssl(Ecore_Con_Server *svr)
|
|||
if (ssl_err == SSL_ERROR_WANT_READ) flag = ECORE_FD_READ;
|
||||
else if (ssl_err == SSL_ERROR_WANT_WRITE) flag = ECORE_FD_WRITE;
|
||||
else return -1;
|
||||
if (flag) ecore_main_fd_handler_active_set(svr->fd_handler, flag);
|
||||
if (svr->fd_handler)
|
||||
{
|
||||
if (flag) ecore_main_fd_handler_active_set(svr->fd_handler, flag);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@ -1023,15 +1029,18 @@ svr_try_connect_ssl(Ecore_Con_Server *svr)
|
|||
static void
|
||||
kill_server(Ecore_Con_Server *svr)
|
||||
{
|
||||
Ecore_Con_Event_Server_Del *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Server_Del));
|
||||
if (e)
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
svr->event_count++;
|
||||
e->server = svr;
|
||||
ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
|
||||
_ecore_con_event_server_del_free, NULL);
|
||||
Ecore_Con_Event_Server_Del *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Server_Del));
|
||||
if (e)
|
||||
{
|
||||
svr->event_count++;
|
||||
e->server = svr;
|
||||
ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
|
||||
_ecore_con_event_server_del_free, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
svr->dead = 1;
|
||||
|
@ -1129,20 +1138,26 @@ svr_try_connect_plain(Ecore_Con_Server *svr)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* we got our server! */
|
||||
Ecore_Con_Event_Server_Add *e;
|
||||
|
||||
svr->connecting = 0;
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Server_Add));
|
||||
if (e)
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
svr->event_count++;
|
||||
e->server = svr;
|
||||
ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e,
|
||||
_ecore_con_event_server_add_free, NULL);
|
||||
/* we got our server! */
|
||||
Ecore_Con_Event_Server_Add *e;
|
||||
|
||||
svr->connecting = 0;
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Server_Add));
|
||||
if (e)
|
||||
{
|
||||
svr->event_count++;
|
||||
e->server = svr;
|
||||
ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e,
|
||||
_ecore_con_event_server_add_free, NULL);
|
||||
}
|
||||
}
|
||||
if (svr->fd_handler)
|
||||
{
|
||||
if (!svr->write_buf)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
|
||||
}
|
||||
if (!svr->write_buf)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
|
||||
}
|
||||
return (!svr->dead);
|
||||
}
|
||||
|
@ -1231,18 +1246,21 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
{
|
||||
if (inbuf)
|
||||
{
|
||||
Ecore_Con_Event_Server_Data *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Server_Data));
|
||||
if (e)
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
svr->event_count++;
|
||||
e->server = svr;
|
||||
e->data = inbuf;
|
||||
e->size = inbuf_num;
|
||||
ecore_event_add(ECORE_CON_EVENT_SERVER_DATA, e,
|
||||
_ecore_con_event_server_data_free,
|
||||
NULL);
|
||||
Ecore_Con_Event_Server_Data *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Server_Data));
|
||||
if (e)
|
||||
{
|
||||
svr->event_count++;
|
||||
e->server = svr;
|
||||
e->data = inbuf;
|
||||
e->size = inbuf_num;
|
||||
ecore_event_add(ECORE_CON_EVENT_SERVER_DATA, e,
|
||||
_ecore_con_event_server_data_free,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (lost_server)
|
||||
|
@ -1262,10 +1280,13 @@ _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
}
|
||||
|
||||
#if USE_OPENSSL
|
||||
if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
|
||||
else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE);
|
||||
if (svr->fd_handler)
|
||||
{
|
||||
if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
|
||||
else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
|
||||
|
@ -1303,38 +1324,45 @@ _ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
|||
{
|
||||
if (inbuf)
|
||||
{
|
||||
Ecore_Con_Event_Client_Data *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Client_Data));
|
||||
if (e)
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
cl->event_count++;
|
||||
e->client = cl;
|
||||
e->data = inbuf;
|
||||
e->size = inbuf_num;
|
||||
ecore_event_add(ECORE_CON_EVENT_CLIENT_DATA, e,
|
||||
_ecore_con_event_client_data_free,
|
||||
NULL);
|
||||
Ecore_Con_Event_Client_Data *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Client_Data));
|
||||
if (e)
|
||||
{
|
||||
cl->event_count++;
|
||||
e->client = cl;
|
||||
e->data = inbuf;
|
||||
e->size = inbuf_num;
|
||||
ecore_event_add(ECORE_CON_EVENT_CLIENT_DATA, e,
|
||||
_ecore_con_event_client_data_free,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((errno == EIO) || (errno == EBADF) ||
|
||||
(errno == EPIPE) || (errno == EINVAL) ||
|
||||
(errno == ENOSPC) || (num == 0)/* is num == 0 right? */)
|
||||
{
|
||||
/* we lost our client! */
|
||||
Ecore_Con_Event_Client_Del *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Client_Del));
|
||||
if (e)
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
cl->event_count++;
|
||||
e->client = cl;
|
||||
ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e,
|
||||
_ecore_con_event_client_del_free,
|
||||
NULL);
|
||||
/* we lost our client! */
|
||||
Ecore_Con_Event_Client_Del *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Client_Del));
|
||||
if (e)
|
||||
{
|
||||
cl->event_count++;
|
||||
e->client = cl;
|
||||
ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e,
|
||||
_ecore_con_event_client_del_free,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
cl->dead = 1;
|
||||
ecore_main_fd_handler_del(cl->fd_handler);
|
||||
if (cl->fd_handler)
|
||||
ecore_main_fd_handler_del(cl->fd_handler);
|
||||
cl->fd_handler = NULL;
|
||||
}
|
||||
break;
|
||||
|
@ -1403,12 +1431,15 @@ _ecore_con_server_flush(Ecore_Con_Server *svr)
|
|||
if (count < 1)
|
||||
{
|
||||
#if USE_OPENSSL
|
||||
if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler,
|
||||
ECORE_FD_READ);
|
||||
else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler,
|
||||
ECORE_FD_WRITE);
|
||||
if (svr->fd_handler)
|
||||
{
|
||||
if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler,
|
||||
ECORE_FD_READ);
|
||||
else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler,
|
||||
ECORE_FD_WRITE);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
@ -1420,7 +1451,8 @@ _ecore_con_server_flush(Ecore_Con_Server *svr)
|
|||
svr->write_buf_offset = 0;
|
||||
free(svr->write_buf);
|
||||
svr->write_buf = NULL;
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
|
||||
if (svr->fd_handler)
|
||||
ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1437,20 +1469,24 @@ _ecore_con_client_flush(Ecore_Con_Client *cl)
|
|||
if ((errno == EIO) || (errno == EBADF) || (errno == EPIPE) ||
|
||||
(errno == EINVAL) || (errno == ENOSPC))
|
||||
{
|
||||
/* we lost our client! */
|
||||
Ecore_Con_Event_Client_Del *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Client_Del));
|
||||
if (e)
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
cl->event_count++;
|
||||
e->client = cl;
|
||||
ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e,
|
||||
_ecore_con_event_client_del_free, NULL);
|
||||
/* we lost our client! */
|
||||
Ecore_Con_Event_Client_Del *e;
|
||||
|
||||
e = calloc(1, sizeof(Ecore_Con_Event_Client_Del));
|
||||
if (e)
|
||||
{
|
||||
cl->event_count++;
|
||||
e->client = cl;
|
||||
ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e,
|
||||
_ecore_con_event_client_del_free, NULL);
|
||||
}
|
||||
cl->dead = 1;
|
||||
if (cl->fd_handler)
|
||||
ecore_main_fd_handler_del(cl->fd_handler);
|
||||
cl->fd_handler = NULL;
|
||||
}
|
||||
cl->dead = 1;
|
||||
ecore_main_fd_handler_del(cl->fd_handler);
|
||||
cl->fd_handler = NULL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -1461,7 +1497,8 @@ _ecore_con_client_flush(Ecore_Con_Client *cl)
|
|||
cl->buf_offset = 0;
|
||||
free(cl->buf);
|
||||
cl->buf = NULL;
|
||||
ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ);
|
||||
if (cl->fd_handler)
|
||||
ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -973,6 +973,7 @@ _ecore_ipc_event_client_add(void *data __UNUSED__, int ev_type __UNUSED__, void
|
|||
ecore_con_client_data_set(cl->client, (void *)cl);
|
||||
svr->clients = _ecore_list2_append(svr->clients, cl);
|
||||
ecore_list_append(svr->client_list, cl);
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
Ecore_Ipc_Event_Client_Add *e2;
|
||||
|
||||
|
@ -1009,13 +1010,16 @@ _ecore_ipc_event_client_del(void *data __UNUSED__, int ev_type __UNUSED__, void
|
|||
ecore_list_goto(svr->client_list, cl);
|
||||
ecore_list_remove(svr->client_list);
|
||||
ecore_list_goto_first(svr->client_list);
|
||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del));
|
||||
if (e2)
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
cl->event_count++;
|
||||
e2->client = cl;
|
||||
ecore_event_add(ECORE_IPC_EVENT_CLIENT_DEL, e2,
|
||||
_ecore_ipc_event_client_del_free, NULL);
|
||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del));
|
||||
if (e2)
|
||||
{
|
||||
cl->event_count++;
|
||||
e2->client = cl;
|
||||
ecore_event_add(ECORE_IPC_EVENT_CLIENT_DEL, e2,
|
||||
_ecore_ipc_event_client_del_free, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1034,6 +1038,7 @@ _ecore_ipc_event_server_add(void *data __UNUSED__, int ev_type __UNUSED__, void
|
|||
Ecore_Ipc_Server *svr;
|
||||
|
||||
svr = ecore_con_server_data_get(e->server);
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
Ecore_Ipc_Event_Server_Add *e2;
|
||||
|
||||
|
@ -1062,6 +1067,7 @@ _ecore_ipc_event_server_del(void *data __UNUSED__, int ev_type __UNUSED__, void
|
|||
Ecore_Ipc_Server *svr;
|
||||
|
||||
svr = ecore_con_server_data_get(e->server);
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
Ecore_Ipc_Event_Server_Del *e2;
|
||||
|
||||
|
@ -1219,21 +1225,24 @@ _ecore_ipc_event_client_data(void *data __UNUSED__, int ev_type __UNUSED__, void
|
|||
if (!buf) return 0;
|
||||
memcpy(buf, cl->buf + offset + s, msg.size);
|
||||
}
|
||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Data));
|
||||
if (e2)
|
||||
if (!cl->delete_me)
|
||||
{
|
||||
cl->event_count++;
|
||||
e2->client = cl;
|
||||
e2->major = msg.major;
|
||||
e2->minor = msg.minor;
|
||||
e2->ref = msg.ref;
|
||||
e2->ref_to = msg.ref_to;
|
||||
e2->response = msg.response;
|
||||
e2->size = msg.size;
|
||||
e2->data = buf;
|
||||
ecore_event_add(ECORE_IPC_EVENT_CLIENT_DATA, e2,
|
||||
_ecore_ipc_event_client_data_free,
|
||||
NULL);
|
||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Data));
|
||||
if (e2)
|
||||
{
|
||||
cl->event_count++;
|
||||
e2->client = cl;
|
||||
e2->major = msg.major;
|
||||
e2->minor = msg.minor;
|
||||
e2->ref = msg.ref;
|
||||
e2->ref_to = msg.ref_to;
|
||||
e2->response = msg.response;
|
||||
e2->size = msg.size;
|
||||
e2->data = buf;
|
||||
ecore_event_add(ECORE_IPC_EVENT_CLIENT_DATA, e2,
|
||||
_ecore_ipc_event_client_data_free,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
cl->prev.i = msg;
|
||||
|
@ -1399,21 +1408,24 @@ _ecore_ipc_event_server_data(void *data __UNUSED__, int ev_type __UNUSED__, void
|
|||
if (!buf) return 0;
|
||||
memcpy(buf, svr->buf + offset + s, msg.size);
|
||||
}
|
||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Data));
|
||||
if (e2)
|
||||
if (!svr->delete_me)
|
||||
{
|
||||
svr->event_count++;
|
||||
e2->server = svr;
|
||||
e2->major = msg.major;
|
||||
e2->minor = msg.minor;
|
||||
e2->ref = msg.ref;
|
||||
e2->ref_to = msg.ref_to;
|
||||
e2->response = msg.response;
|
||||
e2->size = msg.size;
|
||||
e2->data = buf;
|
||||
ecore_event_add(ECORE_IPC_EVENT_SERVER_DATA, e2,
|
||||
_ecore_ipc_event_server_data_free,
|
||||
NULL);
|
||||
e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Data));
|
||||
if (e2)
|
||||
{
|
||||
svr->event_count++;
|
||||
e2->server = svr;
|
||||
e2->major = msg.major;
|
||||
e2->minor = msg.minor;
|
||||
e2->ref = msg.ref;
|
||||
e2->ref_to = msg.ref_to;
|
||||
e2->response = msg.response;
|
||||
e2->size = msg.size;
|
||||
e2->data = buf;
|
||||
ecore_event_add(ECORE_IPC_EVENT_SERVER_DATA, e2,
|
||||
_ecore_ipc_event_server_data_free,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
svr->prev.i = msg;
|
||||
|
|
Loading…
Reference in New Issue