mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-28 11:43:50 +00:00
Merge pull request #2227 from xzn/master
Make local address 0.0.0.0 work with udp relay
This commit is contained in:
+3
-7
@@ -288,7 +288,7 @@ server_handshake_reply(EV_P_ ev_io *w, int udp_assc, struct socks5_response *res
|
||||
struct sockaddr_in sock_addr;
|
||||
if (udp_assc) {
|
||||
socklen_t addr_len = sizeof(sock_addr);
|
||||
if (getsockname(udp_fd, (struct sockaddr *)&sock_addr, &addr_len) < 0) {
|
||||
if (getsockname(server->fd, (struct sockaddr *)&sock_addr, &addr_len) < 0) {
|
||||
LOGE("getsockname: %s", strerror(errno));
|
||||
response->rep = SOCKS5_REP_CONN_REFUSED;
|
||||
send(server->fd, (char *)response, sizeof(struct socks5_response), 0);
|
||||
@@ -1883,9 +1883,9 @@ main(int argc, char **argv)
|
||||
|
||||
struct ev_loop *loop = EV_DEFAULT;
|
||||
|
||||
int listenfd;
|
||||
if (mode != UDP_ONLY) {
|
||||
// Setup socket
|
||||
int listenfd;
|
||||
#ifdef HAVE_LAUNCHD
|
||||
listenfd = launch_or_create(local_addr, local_port);
|
||||
#else
|
||||
@@ -1918,8 +1918,6 @@ main(int argc, char **argv)
|
||||
struct sockaddr *addr = (struct sockaddr *)storage;
|
||||
udp_fd = init_udprelay(local_addr, local_port, addr,
|
||||
get_sockaddr_len(addr), mtu, crypto, listen_ctx.timeout, iface);
|
||||
} else {
|
||||
udp_fd = listenfd;
|
||||
}
|
||||
|
||||
#ifdef HAVE_LAUNCHD
|
||||
@@ -2065,9 +2063,9 @@ _start_ss_local_server(profile_t profile, ss_local_callback callback, void *udat
|
||||
else
|
||||
LOGI("listening at %s:%s", local_addr, local_port_str);
|
||||
|
||||
int listenfd;
|
||||
if (mode != UDP_ONLY) {
|
||||
// Setup socket
|
||||
int listenfd;
|
||||
listenfd = create_and_bind(local_addr, local_port_str);
|
||||
if (listenfd == -1) {
|
||||
ERROR("bind()");
|
||||
@@ -2091,8 +2089,6 @@ _start_ss_local_server(profile_t profile, ss_local_callback callback, void *udat
|
||||
struct sockaddr *addr = (struct sockaddr *)(&storage);
|
||||
udp_fd = init_udprelay(local_addr, local_port_str, addr,
|
||||
get_sockaddr_len(addr), mtu, crypto, timeout, NULL);
|
||||
} else {
|
||||
udp_fd = listenfd;
|
||||
}
|
||||
|
||||
// Init connections
|
||||
|
||||
Reference in New Issue
Block a user