static Eina_Bool ev_write(Shotgun_Auth *auth, int type __UNUSED__, Ecore_Con_Event_Server_Write *ev) { if ((auth != ecore_con_server_data_get(ev->server)) || (!auth)) return ECORE_CALLBACK_PASS_ON; ecore_timer_reset(auth->keepalive); return ECORE_CALLBACK_RENEW; }
static Eina_Bool error(Shotgun_Auth *auth, int type __UNUSED__, Ecore_Con_Event_Server_Error *ev) { if ((auth != ecore_con_server_data_get(ev->server)) || (!auth)) return ECORE_CALLBACK_PASS_ON; ERR("%s", ev->error); shotgun_disconnect(auth); return ECORE_CALLBACK_RENEW; }
static Eina_Bool error(Enfeeble *enf, int type __UNUSED__, Ecore_Con_Event_Server_Error *ev) { if ((enf != ecore_con_server_data_get(ev->server)) || (!enf)) return ECORE_CALLBACK_PASS_ON; ERR("%s", ev->error); enfeeble_disconnect(enf); return ECORE_CALLBACK_RENEW; }
Eina_Bool upgrade_pop(Email *e, int type __UNUSED__, Ecore_Con_Event_Server_Upgrade *ev) { if (e != ecore_con_server_data_get(ev->server)) return ECORE_CALLBACK_PASS_ON; e->state++; email_login_pop(e, NULL); return ECORE_CALLBACK_RENEW; }
static Eina_Bool con(Enfeeble *enf, int type __UNUSED__, Ecore_Con_Event_Server_Add *ev) { if ((enf != ecore_con_server_data_get(ev->server)) || (!enf)) return ECORE_CALLBACK_PASS_ON; INF("Connected"); ecore_event_add(ENFEEBLE_EVENT_CONNECT, enf, enfeeble_fake_free, NULL); return EINA_FALSE; }
static Eina_Bool disc(Shotgun_Auth *auth, int type __UNUSED__, Ecore_Con_Event_Server_Del *ev) { if ((auth != ecore_con_server_data_get(ev->server)) || (!auth)) return ECORE_CALLBACK_PASS_ON; INF("Disconnected"); ecore_con_server_del(auth->svr); auth->svr = NULL; shotgun_disconnect(auth); return EINA_FALSE; }
static Eina_Bool disc(Enfeeble *enf, int type __UNUSED__, Ecore_Con_Event_Server_Del *ev) { if ((enf != ecore_con_server_data_get(ev->server)) || (!enf)) return ECORE_CALLBACK_PASS_ON; INF("Disconnected"); ecore_con_server_del(enf->svr); enf->svr = NULL; enf->ev_del = NULL; ecore_event_add(ENFEEBLE_EVENT_DISCONNECT, enf, enfeeble_fake_free, NULL); return EINA_FALSE; }
static Eina_Bool _con_server_add(void *data, int type, Ecore_Con_Event_Server_Add *ev) { AVReceiver *o = reinterpret_cast<AVReceiver *>(data); if (ev && ev->server && (o != ecore_con_server_data_get(ev->server))) return ECORE_CALLBACK_PASS_ON; if (o) o->addConnection(ev->server); else cCriticalDom("output") << "failed to get object !"; return ECORE_CALLBACK_RENEW; }
Eina_Bool upgrade_smtp(Email *e, int type __UNUSED__, Ecore_Con_Event_Server_Upgrade *ev) { char *buf; size_t size; if (e != ecore_con_server_data_get(ev->server)) return ECORE_CALLBACK_PASS_ON; e->state++; size = sizeof(char) * (sizeof("EHLO \r\n") + strlen(e->features.smtp_features.domain)); buf = alloca(size); snprintf(buf, size, "EHLO %s\r\n", e->features.smtp_features.domain); email_write(e, buf, size - 1); return ECORE_CALLBACK_RENEW; }
Eina_Bool _ecore_con_handler_client_del(void *data, int type, Ecore_Con_Event_Client_Del *ev) { HttpServer *tcpserver = reinterpret_cast<HttpServer *>(data); if (ev && (tcpserver != ecore_con_server_data_get(ecore_con_client_server_get(ev->client)))) { return ECORE_CALLBACK_PASS_ON; } if (tcpserver) { tcpserver->delConnection(ev->client); } else { cCriticalDom("network") << "failed to get HttpServer object !"; } return ECORE_CALLBACK_CANCEL; }
Eina_Bool _ecore_con_handler_data_write(void *data, int type, Ecore_Con_Event_Client_Write *ev) { HttpServer *tcpserver = reinterpret_cast<HttpServer *>(data); if (ev && (tcpserver != ecore_con_server_data_get(ecore_con_client_server_get(ev->client)))) { return ECORE_CALLBACK_PASS_ON; } if (tcpserver) { tcpserver->dataWritten(ev->client, ev->size); } else { cCriticalDom("network") << "failed to get HttpServer object !"; } return ECORE_CALLBACK_RENEW; }
static Eina_Bool data(Enfeeble *enf, int type __UNUSED__, Ecore_Con_Event_Server_Data *ev) { char *recv; if ((enf != ecore_con_server_data_get(ev->server)) || (!enf)) return ECORE_CALLBACK_PASS_ON; if (ev->size == 1) { DBG("Received carriage return"); return ECORE_CALLBACK_RENEW; } recv = alloca(ev->size + 1); memcpy(recv, ev->data, ev->size); recv[ev->size] = 0; DBG("Receiving %i bytes:\n%s", ev->size, recv); if (!enfeeble_data_detect(enf, ev)) return ECORE_CALLBACK_RENEW; return ECORE_CALLBACK_RENEW; }
Eina_Bool data_smtp(Email *e, int type __UNUSED__, Ecore_Con_Event_Server_Data *ev) { char *recv; if (e != ecore_con_server_data_get(ev->server)) { DBG("Event mismatch"); return ECORE_CALLBACK_PASS_ON; } recv = alloca(ev->size + 1); memcpy(recv, ev->data, ev->size); recv[ev->size] = 0; DBG("Receiving %i bytes:\n%s", ev->size, recv); if (e->state < EMAIL_STATE_CONNECTED) { email_login_smtp(e, ev); return ECORE_CALLBACK_RENEW; } return ECORE_CALLBACK_RENEW; }
Eina_Bool data_smtp(Email *e, int type __UNUSED__, Ecore_Con_Event_Server_Data *ev) { char *recv; Email_Send_Cb cb; Email_Cb qcb; if (e != ecore_con_server_data_get(ev->server)) { DBG("Event mismatch"); return ECORE_CALLBACK_PASS_ON; } if (eina_log_domain_level_check(email_log_dom, EINA_LOG_LEVEL_DBG)) { recv = alloca(ev->size + 1); memcpy(recv, ev->data, ev->size); recv[ev->size] = 0; DBG("Receiving %i bytes:\n%s", ev->size, recv); } if (e->state < EMAIL_STATE_CONNECTED) { email_login_smtp(e, ev); return ECORE_CALLBACK_RENEW; } if (!e->current) return ECORE_CALLBACK_RENEW; cb = eina_list_data_get(e->cbs); qcb = eina_list_data_get(e->cbs); if (e->current == EMAIL_OP_QUIT) { if ((ev->size < 3) || (memcmp(ev->data, "221", 3))) ERR("Could not QUIT properly!"); if (qcb) qcb(e); ecore_con_server_del(e->svr); return ECORE_CALLBACK_RENEW; } switch (e->smtp_state) { case EMAIL_SMTP_STATE_BODY: if ((ev->size < 3) || (memcmp(ev->data, "354", 3))) { if (cb) cb(e->op_ids->data, EINA_FALSE); next_smtp(e); return ECORE_CALLBACK_RENEW; } if (!send_smtp(e)) { if (cb) cb(e->op_ids->data, EINA_FALSE); next_smtp(e); } break; default: if ((ev->size < 3) || (memcmp(ev->data, "250", 3))) { if (cb) cb(e->op_ids->data, EINA_FALSE); next_smtp(e); } else if (e->smtp_state > EMAIL_SMTP_STATE_BODY) { if (cb) cb(e->op_ids->data, EINA_TRUE); next_smtp(e); } else { if (!send_smtp(e)) { if (cb) cb(e->op_ids->data, EINA_FALSE); next_smtp(e); } } } return ECORE_CALLBACK_RENEW; }
static Eina_Bool data(Shotgun_Auth *auth, int type __UNUSED__, Ecore_Con_Event_Server_Data *ev) { char *recv, *data, *p; size_t size; if ((auth != ecore_con_server_data_get(ev->server)) || (!auth)) return ECORE_CALLBACK_PASS_ON; ecore_timer_reset(auth->keepalive); if (ev->size == 1) { DBG("Received carriage return"); return ECORE_CALLBACK_RENEW; } else if ((ev->size == 38) && (!memcmp(ev->data, "<?xml version=\"1.0", sizeof("<?xml version=\"1.0") - 1)) && (((unsigned char*)ev->data)[ev->size - 1] == '>')) { DBG("Received xml version tag"); return ECORE_CALLBACK_RENEW; } if (eina_log_domain_level_check(shotgun_log_dom, EINA_LOG_LEVEL_DBG)) { recv = alloca(ev->size + 1); memcpy(recv, ev->data, ev->size); for (p = recv + ev->size - 1; isspace(*p); p--) *p = 0; recv[ev->size] = 0; DBG("Receiving %i bytes:\n%s", ev->size, recv); } if (!shotgun_data_detect(auth, ev)) return ECORE_CALLBACK_RENEW; if (auth->state < SHOTGUN_CONNECTION_STATE_CONNECTED) { shotgun_login(auth, ev); return ECORE_CALLBACK_RENEW; } data = auth->buf ? (char*)eina_strbuf_string_get(auth->buf) : (char*)ev->data; size = auth->buf ? eina_strbuf_length_get(auth->buf) : (size_t)ev->size; switch (shotgun_data_tokenize(auth, ev)) { case SHOTGUN_DATA_TYPE_MSG: shotgun_message_feed(auth, data, size); break; case SHOTGUN_DATA_TYPE_IQ: shotgun_iq_feed(auth, data, size); break; case SHOTGUN_DATA_TYPE_PRES: shotgun_presence_feed(auth, data, size); break; default: ERR("UNPARSABLE TAG %d", shotgun_data_tokenize(auth, ev)); break; } if (auth->buf) eina_strbuf_free(auth->buf); auth->buf = NULL; return ECORE_CALLBACK_RENEW; }
Eina_Bool data_pop(Email *e, int type __UNUSED__, Ecore_Con_Event_Server_Data *ev) { char *recv; if (e != ecore_con_server_data_get(ev->server)) { DBG("Event mismatch"); return ECORE_CALLBACK_PASS_ON; } recv = alloca(ev->size + 1); memcpy(recv, ev->data, ev->size); recv[ev->size] = 0; DBG("Receiving %i bytes:\n%s", ev->size, recv); if (e->state < EMAIL_STATE_CONNECTED) { email_login_pop(e, ev); return ECORE_CALLBACK_RENEW; } if (!e->current) return ECORE_CALLBACK_RENEW; switch (e->current) { case EMAIL_OP_STAT: if (!email_pop3_stat_read(e, recv, ev->size)) return ECORE_CALLBACK_RENEW; break; case EMAIL_OP_LIST: if (!email_pop3_list_read(e, ev)) return ECORE_CALLBACK_RENEW; break; case EMAIL_OP_RETR: if (!email_pop3_retr_read(e, ev)) return ECORE_CALLBACK_RENEW; break; case EMAIL_OP_DELE: case EMAIL_OP_QUIT: { Ecore_Cb cb; cb = e->cbs->data; e->cbs = eina_list_remove_list(e->cbs, e->cbs); if (!email_op_ok(ev->data, ev->size)) { if (e->current == EMAIL_OP_DELE) ERR("Error with DELE"); else ERR("Error with QUIT"); } else { if (e->current == EMAIL_OP_DELE) INF("DELE successful"); else INF("QUIT"); } if (cb) cb(e); if (e->current == EMAIL_OP_QUIT) ecore_con_server_del(e->svr); break; } default: break; } next_pop(e); return ECORE_CALLBACK_RENEW; }