forked from enlightenment/efl
ecore_con_server_timeout_g/set now apply to client-type servers
CAN'T SLEEP MUST HACK SVN revision: 60445
This commit is contained in:
parent
396e256fc6
commit
d932f0b0c5
|
@ -224,3 +224,8 @@
|
||||||
2011-06-16 Cedric Bail
|
2011-06-16 Cedric Bail
|
||||||
|
|
||||||
* Fix ecore_x_selection_convert not taking selection length into account.
|
* Fix ecore_x_selection_convert not taking selection length into account.
|
||||||
|
|
||||||
|
2011-06-17 Mike Blumenkrantz
|
||||||
|
|
||||||
|
* ecore_con_server_timeout_get/set now applies to client-type servers
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,9 @@
|
||||||
static Eina_Bool _ecore_con_client_timer(Ecore_Con_Client *cl);
|
static Eina_Bool _ecore_con_client_timer(Ecore_Con_Client *cl);
|
||||||
static void _ecore_con_cl_timer_update(Ecore_Con_Client *cl);
|
static void _ecore_con_cl_timer_update(Ecore_Con_Client *cl);
|
||||||
|
|
||||||
|
static Eina_Bool _ecore_con_server_timer(Ecore_Con_Server *svr);
|
||||||
|
static void _ecore_con_server_timer_update(Ecore_Con_Server *svr);
|
||||||
|
|
||||||
static void _ecore_con_cb_tcp_connect(void *data,
|
static void _ecore_con_cb_tcp_connect(void *data,
|
||||||
Ecore_Con_Info *info);
|
Ecore_Con_Info *info);
|
||||||
static void _ecore_con_cb_udp_connect(void *data,
|
static void _ecore_con_cb_udp_connect(void *data,
|
||||||
|
@ -542,7 +545,10 @@ ecore_con_server_timeout_set(Ecore_Con_Server *svr,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
svr->client_disconnect_time = timeout;
|
if (svr->created)
|
||||||
|
svr->client_disconnect_time = timeout;
|
||||||
|
else
|
||||||
|
svr->disconnect_time = timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -561,7 +567,7 @@ ecore_con_server_timeout_get(Ecore_Con_Server *svr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return svr->client_disconnect_time;
|
return svr->created ? svr->client_disconnect_time : svr->disconnect_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1184,6 +1190,7 @@ ecore_con_event_server_add(Ecore_Con_Server *svr)
|
||||||
EINA_SAFETY_ON_NULL_RETURN(e);
|
EINA_SAFETY_ON_NULL_RETURN(e);
|
||||||
|
|
||||||
svr->event_count++;
|
svr->event_count++;
|
||||||
|
_ecore_con_server_timer_update(svr);
|
||||||
e->server = svr;
|
e->server = svr;
|
||||||
if (svr->upgrade) ev = ECORE_CON_EVENT_SERVER_UPGRADE;
|
if (svr->upgrade) ev = ECORE_CON_EVENT_SERVER_UPGRADE;
|
||||||
ecore_event_add(ev, e,
|
ecore_event_add(ev, e,
|
||||||
|
@ -1199,6 +1206,7 @@ ecore_con_event_server_del(Ecore_Con_Server *svr)
|
||||||
EINA_SAFETY_ON_NULL_RETURN(e);
|
EINA_SAFETY_ON_NULL_RETURN(e);
|
||||||
|
|
||||||
svr->event_count++;
|
svr->event_count++;
|
||||||
|
_ecore_con_server_timer_update(svr);
|
||||||
e->server = svr;
|
e->server = svr;
|
||||||
ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
|
ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
|
||||||
_ecore_con_event_server_del_free, NULL);
|
_ecore_con_event_server_del_free, NULL);
|
||||||
|
@ -1213,6 +1221,7 @@ ecore_con_event_server_data(Ecore_Con_Server *svr, unsigned char *buf, int num,
|
||||||
EINA_SAFETY_ON_NULL_RETURN(e);
|
EINA_SAFETY_ON_NULL_RETURN(e);
|
||||||
|
|
||||||
svr->event_count++;
|
svr->event_count++;
|
||||||
|
_ecore_con_server_timer_update(svr);
|
||||||
e->server = svr;
|
e->server = svr;
|
||||||
if (duplicate)
|
if (duplicate)
|
||||||
{
|
{
|
||||||
|
@ -1402,6 +1411,9 @@ _ecore_con_server_free(Ecore_Con_Server *svr)
|
||||||
if (svr->fd > 0)
|
if (svr->fd > 0)
|
||||||
close(svr->fd);
|
close(svr->fd);
|
||||||
|
|
||||||
|
if (svr->until_deletion)
|
||||||
|
ecore_timer_del(svr->until_deletion);
|
||||||
|
|
||||||
servers = eina_list_remove(servers, svr);
|
servers = eina_list_remove(servers, svr);
|
||||||
svr->data = NULL;
|
svr->data = NULL;
|
||||||
free(svr);
|
free(svr);
|
||||||
|
@ -1460,6 +1472,9 @@ _ecore_con_client_free(Ecore_Con_Client *cl)
|
||||||
free(cl->client_addr);
|
free(cl->client_addr);
|
||||||
cl->client_addr = NULL;
|
cl->client_addr = NULL;
|
||||||
|
|
||||||
|
if (cl->until_deletion)
|
||||||
|
ecore_timer_del(cl->until_deletion);
|
||||||
|
|
||||||
if (cl->ip)
|
if (cl->ip)
|
||||||
eina_stringshare_del(cl->ip);
|
eina_stringshare_del(cl->ip);
|
||||||
cl->data = NULL;
|
cl->data = NULL;
|
||||||
|
@ -1480,6 +1495,42 @@ _ecore_con_server_kill(Ecore_Con_Server *svr)
|
||||||
svr->fd_handler = NULL;
|
svr->fd_handler = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_ecore_con_server_timer(Ecore_Con_Server *svr)
|
||||||
|
{
|
||||||
|
ecore_con_server_del(svr);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_CANCEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_ecore_con_server_timer_update(Ecore_Con_Server *svr)
|
||||||
|
{
|
||||||
|
if (svr->disconnect_time)
|
||||||
|
{
|
||||||
|
if (svr->disconnect_time > 0)
|
||||||
|
{
|
||||||
|
if (svr->until_deletion)
|
||||||
|
ecore_timer_interval_set(svr->until_deletion, svr->disconnect_time);
|
||||||
|
else
|
||||||
|
svr->until_deletion = ecore_timer_add(svr->disconnect_time, (Ecore_Task_Cb)_ecore_con_server_timer, svr);
|
||||||
|
}
|
||||||
|
else if (svr->until_deletion)
|
||||||
|
{
|
||||||
|
ecore_timer_del(svr->until_deletion);
|
||||||
|
svr->until_deletion = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (svr->until_deletion)
|
||||||
|
{
|
||||||
|
ecore_timer_del(svr->until_deletion);
|
||||||
|
svr->until_deletion = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_ecore_con_client_timer(Ecore_Con_Client *cl)
|
_ecore_con_client_timer(Ecore_Con_Client *cl)
|
||||||
{
|
{
|
||||||
|
@ -2074,6 +2125,7 @@ _ecore_con_cl_read(Ecore_Con_Server *svr)
|
||||||
DBG("Continuing ssl handshake");
|
DBG("Continuing ssl handshake");
|
||||||
if (!ecore_con_ssl_server_init(svr))
|
if (!ecore_con_ssl_server_init(svr))
|
||||||
lost_server = EINA_FALSE;
|
lost_server = EINA_FALSE;
|
||||||
|
_ecore_con_server_timer_update(svr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(svr->type & ECORE_CON_SSL))
|
if (!(svr->type & ECORE_CON_SSL))
|
||||||
|
@ -2389,6 +2441,7 @@ _ecore_con_server_flush(Ecore_Con_Server *svr)
|
||||||
DBG("Continuing ssl handshake");
|
DBG("Continuing ssl handshake");
|
||||||
if (ecore_con_ssl_server_init(svr))
|
if (ecore_con_ssl_server_init(svr))
|
||||||
_ecore_con_server_kill(svr);
|
_ecore_con_server_kill(svr);
|
||||||
|
_ecore_con_server_timer_update(svr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,8 @@ struct _Ecore_Con_Server
|
||||||
int ssl_err;
|
int ssl_err;
|
||||||
#endif
|
#endif
|
||||||
double start_time;
|
double start_time;
|
||||||
|
Ecore_Timer *until_deletion;
|
||||||
|
double disconnect_time;
|
||||||
double client_disconnect_time;
|
double client_disconnect_time;
|
||||||
const char *ip;
|
const char *ip;
|
||||||
Eina_Bool dead : 1;
|
Eina_Bool dead : 1;
|
||||||
|
|
Loading…
Reference in New Issue