Skip to content

Commit 9360fb5

Browse files
committed
fix #122
1 parent de0791a commit 9360fb5

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/local.c

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,10 +242,18 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents)
242242

243243
if (!remote->send_ctx->connected)
244244
{
245+
remote->buf_idx = 0;
246+
remote->buf_len = r;
247+
245248
if (!fast_open || remote->direct)
246249
{
247250
// connecting, wait until connected
248251
connect(remote->fd, remote->addr_info->ai_addr, remote->addr_info->ai_addrlen);
252+
253+
// wait on remote connected event
254+
ev_io_stop(EV_A_ &server_recv_ctx->io);
255+
ev_io_start(EV_A_ &remote->send_ctx->io);
256+
ev_timer_start(EV_A_ &remote->send_ctx->watcher);
249257
}
250258
else
251259
{
@@ -282,18 +290,17 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents)
282290
remote->buf_len = r - s;
283291
remote->buf_idx = s;
284292
}
293+
294+
// Just connected
295+
remote->send_ctx->connected = 1;
296+
ev_timer_stop(EV_A_ &remote->send_ctx->watcher);
297+
ev_io_start(EV_A_ &remote->recv_ctx->io);
285298
#else
286299
// if TCP_FASTOPEN is not defined, fast_open will always be 0
287300
LOGE("can't come here");
288301
exit(1);
289302
#endif
290303
}
291-
// wait on remote connected event
292-
remote->buf_idx = 0;
293-
remote->buf_len = r;
294-
ev_io_stop(EV_A_ &server_recv_ctx->io);
295-
ev_io_start(EV_A_ &remote->send_ctx->io);
296-
ev_timer_start(EV_A_ &remote->send_ctx->watcher);
297304
}
298305
else
299306
{

0 commit comments

Comments
 (0)