mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-26 02:33:41 +00:00
Refine TFO in ss-redir
This commit is contained in:
+7
-6
@@ -230,8 +230,6 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
dns_ntop(AF_INET, &(sa->sin_addr), ipstr, INET_ADDRSTRLEN);
|
||||
port = ntohs(sa->sin_port);
|
||||
} else {
|
||||
// TODO: The code below need to be test in IPv6 envirment, which I
|
||||
// don't have.
|
||||
struct sockaddr_in6 *sa = (struct sockaddr_in6 *)&(server->destaddr);
|
||||
dns_ntop(AF_INET6, &(sa->sin6_addr), ipstr, INET6_ADDRSTRLEN);
|
||||
port = ntohs(sa->sin6_port);
|
||||
@@ -465,8 +463,10 @@ remote_send_cb(EV_P_ ev_io *w, int revents)
|
||||
}
|
||||
if (r == 0) {
|
||||
remote_send_ctx->connected = 1;
|
||||
|
||||
ev_io_stop(EV_A_ & remote_send_ctx->io);
|
||||
ev_io_stop(EV_A_ & server->recv_ctx->io);
|
||||
ev_io_start(EV_A_ & remote->recv_ctx->io);
|
||||
ev_timer_start(EV_A_ & remote->recv_ctx->watcher);
|
||||
|
||||
// send destaddr
|
||||
@@ -530,8 +530,6 @@ remote_send_cb(EV_P_ ev_io *w, int revents)
|
||||
|
||||
bprepend(remote->buf, abuf, BUF_SIZE);
|
||||
bfree(abuf);
|
||||
|
||||
ev_io_start(EV_A_ & remote->recv_ctx->io);
|
||||
} else {
|
||||
ERROR("getpeername");
|
||||
// not connected
|
||||
@@ -553,13 +551,16 @@ remote_send_cb(EV_P_ ev_io *w, int revents)
|
||||
s = sendto(remote->fd, remote->buf->data + remote->buf->idx,
|
||||
remote->buf->len, MSG_FASTOPEN, remote->addr,
|
||||
get_sockaddr_len(remote->addr));
|
||||
|
||||
if (s == -1 && (errno == EOPNOTSUPP || errno == EPROTONOSUPPORT ||
|
||||
errno == ENOPROTOOPT)) {
|
||||
fast_open = 0;
|
||||
LOGE("fast open is not supported on this platform");
|
||||
s = connect(remote->fd, remote->addr,
|
||||
get_sockaddr_len(remote->addr));
|
||||
close_and_free_remote(EV_A_ remote);
|
||||
close_and_free_server(EV_A_ server);
|
||||
return;
|
||||
}
|
||||
|
||||
remote->addr = NULL;
|
||||
|
||||
if (s == -1) {
|
||||
|
||||
Reference in New Issue
Block a user