+ ev_cleanup_stop(event_base, &IO->abort_by_shutdown);
+
+ ev_io_stop(event_base, &IO->conn_event);
+ ev_io_stop(event_base, &IO->send_event);
+ ev_io_stop(event_base, &IO->recv_event);
+
+ if (IO->SendBuf.fd != 0) {
+ close(IO->SendBuf.fd);
+ }
+ IO->SendBuf.fd = 0;
+ IO->RecvBuf.fd = 0;
+}
+
+void StopCurlWatchers(AsyncIO *IO)
+{
+ ev_timer_stop (event_base, &IO->rw_timeout);
+ ev_timer_stop(event_base, &IO->conn_fail);
+ ev_idle_stop(event_base, &IO->unwind_stack);
+ ev_cleanup_stop(event_base, &IO->abort_by_shutdown);