void client_session_read(void *arg) { int state; ClientSession_T *session = (ClientSession_T *)arg; TRACE(TRACE_DEBUG, "[%p] state: [%d]", session, session->state); ci_read_cb(session->ci); state = session->ci->client_state; if (state & CLIENT_ERR) { TRACE(TRACE_DEBUG,"client_state ERROR"); client_session_bailout(&session); } else if (state & CLIENT_EOF) { TRACE(TRACE_NOTICE,"reached EOF"); event_del(session->ci->rev); if (session->ci->read_buffer->len < 1) client_session_bailout(&session); else session->handle_input(session); } else if (state & CLIENT_OK || state & CLIENT_AGAIN) { session->handle_input(session); } }
void pop3_cb_write(void *arg) { ClientSession_T *session = (ClientSession_T *)arg; int state = session->state; switch (state) { case CLIENTSTATE_QUIT_QUEUED: case CLIENTSTATE_QUIT: break; default: ci_write_cb(session->ci); session->handle_input(session); break; } }
void tims_cb_write(void *arg) { ClientSession_T *session = (ClientSession_T *)arg; TRACE(TRACE_DEBUG, "[%p] state: [%d]", session, session->state); switch(session->state) { case QUIT: client_session_bailout(&session); break; default: if (session->ci->write_buffer->len > session->ci->write_buffer_offset) { ci_write(session->ci,NULL); break; } session->handle_input(session); break; } }
void tims_cb_write(void *arg) { ClientSession_T *session = (ClientSession_T *)arg; int state = session->state; TRACE(TRACE_DEBUG, "[%p] state: [%d]", session, state); switch(state) { case CLIENTSTATE_QUIT_QUEUED: case CLIENTSTATE_QUIT: break; default: if (p_string_len(session->ci->write_buffer) > session->ci->write_buffer_offset) { ci_write(session->ci,NULL); break; } session->handle_input(session); break; } }