Browse Source

Fix bug for ss-server when udp is sent with host not ip

pull/581/head
H2NCH2COOH 9 years ago
committed by Max Lv
parent
commit
117ddf4f33
2 changed files with 7 additions and 0 deletions
  1. 4
      src/udprelay.c
  2. 3
      src/udprelay.h

4
src/udprelay.c

@ -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) {

3
src/udprelay.h

@ -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;

Loading…
Cancel
Save