static void li_memcached_con_free(liMemcachedCon* con) { if (!con) return; if (-1 != li_event_io_fd(&con->con_watcher)) { close(li_event_io_fd(&con->con_watcher)); li_event_clear(&con->con_watcher); con->fd = -1; } send_queue_reset(&con->out); cancel_all_requests(con); li_buffer_release(con->buf); li_buffer_release(con->line); li_buffer_release(con->remaining); li_buffer_release(con->data); reset_item(&con->curitem); li_sockaddr_clear(&con->addr); g_string_free(con->tmpstr, TRUE); g_clear_error(&con->err); g_slice_free(liMemcachedCon, con); }
static void li_memcached_con_free(liMemcachedCon* con) { if (!con) return; if (-1 != con->con_watcher.fd) { close(con->con_watcher.fd); /* as io has a reference on con, we don't need to stop it here */ ev_io_set(&con->con_watcher, -1, 0); con->fd = -1; } send_queue_reset(&con->out); cancel_all_requests(con); li_buffer_release(con->buf); li_buffer_release(con->line); li_buffer_release(con->remaining); li_buffer_release(con->data); reset_item(&con->curitem); li_sockaddr_clear(&con->addr); g_string_free(con->tmpstr, TRUE); g_clear_error(&con->err); g_slice_free(liMemcachedCon, con); }
static void close_con(liMemcachedCon *con) { if (con->line) con->line->used = 0; if (con->remaining) con->remaining->used = 0; if (con->data) con->data->used = 0; if (con->buf) con->buf->used = 0; reset_item(&con->curitem); send_queue_reset(&con->out); memcached_stop_io(con); close(li_event_io_fd(&con->con_watcher)); con->fd = -1; li_event_io_set_fd(&con->con_watcher, -1); con->cur_req = NULL; cancel_all_requests(con); memcached_connect(con); }