mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-29 04:03:45 +00:00
Fix bug for ss-server when udp is sent with host not ip
This commit is contained in:
@@ -605,6 +605,8 @@ static void query_resolve_cb(struct sockaddr *addr, void *data)
|
||||
}
|
||||
|
||||
if (remote_ctx != NULL) {
|
||||
memcpy(&remote_ctx->dst_addr, addr, sizeof(struct sockaddr_storage));
|
||||
|
||||
size_t addr_len = get_sockaddr_len(addr);
|
||||
int s = sendto(remote_ctx->fd, query_ctx->buf->array, query_ctx->buf->len,
|
||||
0, addr, addr_len);
|
||||
@@ -1150,6 +1152,8 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
if (dst_addr.ss_family != AF_INET && dst_addr.ss_family != AF_INET6) {
|
||||
need_query = 1;
|
||||
}
|
||||
} else {
|
||||
memcpy(&dst_addr,&remote_ctx->dst_addr,sizeof(struct sockaddr_storage));
|
||||
}
|
||||
} else {
|
||||
if (dst_addr.ss_family == AF_INET || dst_addr.ss_family == AF_INET6) {
|
||||
|
||||
@@ -81,6 +81,9 @@ typedef struct remote_ctx {
|
||||
int addr_header_len;
|
||||
char addr_header[384];
|
||||
struct sockaddr_storage src_addr;
|
||||
#ifdef MODULE_REMOTE
|
||||
struct sockaddr_storage dst_addr;
|
||||
#endif
|
||||
struct server_ctx *server_ctx;
|
||||
} remote_ctx_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user