FD_SET(c->fd, &writeset);
select(c->fd + 1, NULL, &writeset, NULL, NULL);
+
+ /**
+ * conn_try_write can create write_ev timer again.
+ * So we have to clear the c->write_ev before call it.
+ */
+ c->write_ev = NULL;
+
conn_try_write(c);
return ECORE_CALLBACK_CANCEL;
}
} else {
start_ping_timer(c);
}
+ c->ping_ev = NULL;
return ECORE_CALLBACK_CANCEL;
}
static void start_ping_timer(struct connection *c)
{
+ if (c->ping_ev) {
+ return;
+ }
+
c->ping_ev = ecore_timer_add(PING_TIMEOUT, ping_alarm, c);
}
Eina_Bool fail_alarm(void *arg)
{
struct connection *c = arg;
+
c->in_fail_timer = 0;
restart_connection(c);
+
+ c->fail_ev = NULL;
return ECORE_CALLBACK_CANCEL;
}
#else
if(c->write_ev) {
ecore_timer_del(c->write_ev);
- c->write_ev = NULL;
}
c->write_ev = ecore_timer_add(0.000001, write_call, c);
#endif
#else
if(c->write_ev) {
ecore_timer_del(c->write_ev);
- c->write_ev = NULL;
}
c->write_ev = ecore_timer_add(0.000001, write_call, c);
#endif
struct connection *c = arg;
if(c->read_ev) {
ecore_main_fd_handler_del(c->read_ev);
- c->read_ev = NULL;
}
c->read_ev = ecore_main_fd_handler_add(c->fd, ECORE_FD_READ, conn_try_read, c, NULL,NULL);
return ECORE_CALLBACK_CANCEL;
void tgl_timer_insert(struct tgl_timer *t, double p)
{
- if (p <= 0) {
+ if (p < 0) {
p = 0.000001;
}
struct timer_context *tc = (struct timer_context *)t;
// Something goes wrong, tgl_timer_delete is not called before.
// Exceptional cases.
ecore_timer_del(tc->handler);
+ tc->handler = NULL;
}
free(tc->cbdata);
free(tc);
{
assert(TLS->timer_methods);
assert(TLS->net_methods);
+
if (!TLS->callback.create_print_name) {
TLS->callback.create_print_name = tgls_default_create_print_name;
}
+
if (!TLS->temp_key_expire_time) {
TLS->temp_key_expire_time = 100000;
}