diff --git a/src/redir.c b/src/redir.c index 2a25cd35..86958885 100644 --- a/src/redir.c +++ b/src/redir.c @@ -566,12 +566,12 @@ remote_send_cb(EV_P_ ev_io *w, int revents) || errno == EWOULDBLOCK) { ev_io_start(EV_A_ & remote_send_ctx->io); ev_timer_start(EV_A_ & remote_send_ctx->watcher); - return; } else { ERROR("connect"); close_and_free_remote(EV_A_ remote); close_and_free_server(EV_A_ server); } + return; } } else { s = send(remote->fd, remote->buf->data + remote->buf->idx, @@ -590,6 +590,7 @@ remote_send_cb(EV_P_ ev_io *w, int revents) // partly sent, move memory, wait for the next time to send remote->buf->len -= s; remote->buf->idx += s; + ev_io_start(EV_A_ & remote_send_ctx->io); return; } else { // all sent out, wait for reading