diff --git a/src/local.c b/src/local.c index 055df09d..cc78ab67 100644 --- a/src/local.c +++ b/src/local.c @@ -347,18 +347,18 @@ server_recv_cb(EV_P_ ev_io *w, int revents) close_and_free_server(EV_A_ server); return; } - } else if (s <= (int)(remote->buf->len)) { + } else if (s < (int)(remote->buf->len)) { remote->buf->len -= s; remote->buf->idx = s; + return; } else { remote->buf->idx = 0; remote->buf->len = 0; } // Just connected - remote->send_ctx->connected = 1; - ev_timer_stop(EV_A_ & remote->send_ctx->watcher); - ev_io_start(EV_A_ & remote->recv_ctx->io); + ev_io_stop(EV_A_ & server_recv_ctx->io); + ev_io_start(EV_A_ & remote->send_ctx->io); #else // if TCP_FASTOPEN is not defined, fast_open will always be 0 LOGE("can't come here");