Browse Source

Update udprelay.c

pull/171/head
Max Lv 10 years ago
parent
commit
99694f2dde
1 changed files with 29 additions and 29 deletions
  1. 58
      src/udprelay.c

58
src/udprelay.c

@ -161,7 +161,7 @@ static int parse_udprealy_header(const char * buf, const int buf_len,
}
if (offset == 1) {
LOGE("invalid header with addr type %d", atyp);
LOGE("[udp] invalid header with addr type %d", atyp);
return 0;
}
@ -223,11 +223,11 @@ int create_remote_socket(int ipv6)
addr.sin6_port = 0;
remote_sock = socket(AF_INET6, SOCK_DGRAM, 0);
if (remote_sock == -1) {
ERROR("Cannot create socket.");
ERROR("[udp] cannot create socket.");
return -1;
}
if (bind(remote_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
FATAL("Cannot bind remote.");
FATAL("[udp] cannot bind remote.");
return -1;
}
} else {
@ -239,12 +239,12 @@ int create_remote_socket(int ipv6)
addr.sin_port = 0;
remote_sock = socket(AF_INET, SOCK_DGRAM, 0);
if (remote_sock == -1) {
ERROR("Cannot create socket.");
ERROR("[udp] cannot create socket.");
return -1;
}
if (bind(remote_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
FATAL("Cannot bind remote.");
FATAL("[udp] cannot bind remote.");
return -1;
}
}
@ -263,7 +263,7 @@ int create_server_socket(const char *host, const char *port)
s = getaddrinfo(host, port, &hints, &result);
if (s != 0) {
LOGE("getaddrinfo: %s", gai_strerror(s));
LOGE("[udp] getaddrinfo: %s", gai_strerror(s));
return -1;
}
@ -284,14 +284,14 @@ int create_server_socket(const char *host, const char *port)
/* We managed to bind successfully! */
break;
} else {
ERROR("bind");
ERROR("[udp] bind");
}
close(server_sock);
}
if (rp == NULL) {
LOGE("Could not bind");
LOGE("[udp] cannot bind");
return -1;
}
@ -362,7 +362,7 @@ static void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents)
- sizeof(ev_io));
if (verbose) {
LOGD("UDP connection timeout");
LOGD("[udp] connection timeout");
}
char *key = hash_key(remote_ctx->addr_header,
@ -384,7 +384,7 @@ static void query_resolve_cb(EV_P_ ev_io *w, int revents)
return;
} else if (err == ASYNCNS_HANDLE_ERROR) {
// asyncns error
FATAL("asyncns exit unexpectedly.");
FATAL("[udp] asyncns exit unexpectedly.");
}
asyncns_query_t *query = asyncns_getnext(asyncns);
@ -405,7 +405,7 @@ static void query_resolve_cb(EV_P_ ev_io *w, int revents)
err = asyncns_getaddrinfo_done(asyncns, query, &result);
if (err) {
ERROR("getaddrinfo");
ERROR("[udp] getaddrinfo");
} else {
// Use IPV4 address if possible
for (rp = result; rp != NULL; rp = rp->ai_next) {
@ -449,7 +449,7 @@ static void query_resolve_cb(EV_P_ ev_io *w, int revents)
addr_len);
if (s == -1) {
ERROR("udprelay_sendto_remote");
ERROR("[udp] sendto_remote");
close_and_free_remote(EV_A_ remote_ctx);
} else {
// Add to conn cache
@ -463,7 +463,7 @@ static void query_resolve_cb(EV_P_ ev_io *w, int revents)
}
} else {
ERROR("udprelay bind() error..");
ERROR("[udp] bind() error..");
}
}
@ -480,7 +480,7 @@ static void remote_recv_cb(EV_P_ ev_io *w, int revents)
// server has been closed
if (server_ctx == NULL) {
LOGE("invalid server.");
LOGE("[udp] invalid server.");
close_and_free_remote(EV_A_ remote_ctx);
return;
}
@ -504,7 +504,7 @@ static void remote_recv_cb(EV_P_ ev_io *w, int revents)
// error on recv
// simply drop that packet
if (verbose) {
ERROR("udprelay_server_recvfrom");
ERROR("[udp] server_recvfrom");
}
goto CLEAN_UP;
}
@ -513,14 +513,14 @@ static void remote_recv_cb(EV_P_ ev_io *w, int revents)
buf = ss_decrypt_all(BUF_SIZE, buf, &buf_len, server_ctx->method);
if (buf == NULL) {
if (verbose) {
ERROR("udprelay_server_ss_decrypt_all");
ERROR("[udp] server_ss_decrypt_all");
}
goto CLEAN_UP;
}
int len = parse_udprealy_header(buf, buf_len, NULL, NULL);
if (len == 0) {
LOGD("[udp] Error in parse header");
LOGD("[udp] error in parse header");
// error in parse header
goto CLEAN_UP;
}
@ -565,7 +565,7 @@ static void remote_recv_cb(EV_P_ ev_io *w, int revents)
(struct sockaddr *)&remote_ctx->src_addr, addr_len);
if (s == -1) {
ERROR("udprelay_sendto_local");
ERROR("[udp] sendto_local");
}
CLEAN_UP:
@ -590,7 +590,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
// error on recv
// simply drop that packet
if (verbose) {
ERROR("udprelay_server_recvfrom");
ERROR("[udp] server_recvfrom");
}
goto CLEAN_UP;
}
@ -603,7 +603,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
buf = ss_decrypt_all(BUF_SIZE, buf, &buf_len, server_ctx->method);
if (buf == NULL) {
if (verbose) {
ERROR("udprelay_server_ss_decrypt_all");
ERROR("[udp] server_ss_decrypt_all");
}
goto CLEAN_UP;
}
@ -720,7 +720,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
#ifndef UDPRELAY_TUNNEL
if (frag) {
LOGE("drop a message since frag is not 0, but %d", frag);
LOGE("[udp] drop a message since frag is not 0, but %d", frag);
goto CLEAN_UP;
}
#endif
@ -736,14 +736,14 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
int s = getaddrinfo(server_ctx->remote_host, server_ctx->remote_port,
&hints, &result);
if (s != 0 || result == NULL) {
LOGE("getaddrinfo: %s", gai_strerror(s));
LOGE("[udp] getaddrinfo: %s", gai_strerror(s));
goto CLEAN_UP;
}
// Bind to any port
int remotefd = create_remote_socket(result->ai_family == AF_INET6);
if (remotefd < 0) {
ERROR("udprelay bind() error..");
ERROR("[udp] udprelay bind() error..");
// remember to free addrinfo
freeaddrinfo(result);
goto CLEAN_UP;
@ -792,7 +792,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
(struct sockaddr *)&remote_ctx->dst_addr, addr_len);
if (s == -1) {
ERROR("udprelay_sendto_remote");
ERROR("[udp] sendto_remote");
}
#else
@ -808,7 +808,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
host, port, &hints);
if (query == NULL) {
ERROR("udp_asyncns_getaddrinfo");
ERROR("[udp] asyncns_getaddrinfo");
goto CLEAN_UP;
}
@ -830,7 +830,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
(struct sockaddr *)&remote_ctx->dst_addr, addr_len);
if (s == -1) {
ERROR("udprelay_sendto_remote");
ERROR("[udp] sendto_remote");
}
}
#endif
@ -845,7 +845,7 @@ void free_cb(void *element)
struct remote_ctx *remote_ctx = (struct remote_ctx *)element;
if (verbose) {
LOGD("free a remote ctx");
LOGD("[udp] free a remote context");
}
close_and_free_remote(EV_DEFAULT, remote_ctx);
@ -877,7 +877,7 @@ int init_udprelay(const char *server_host, const char *server_port,
// setup asyncns
asyncns_t *asyncns;
if (!(asyncns = asyncns_new(dns_thread_num))) {
FATAL("asyncns failed");
FATAL("[udp] asyncns failed");
}
resolve_ctx = malloc(sizeof(struct resolve_ctx));
@ -892,7 +892,7 @@ int init_udprelay(const char *server_host, const char *server_port,
// Bind to port
int serverfd = create_server_socket(server_host, server_port);
if (serverfd < 0) {
FATAL("udprelay bind() error..");
FATAL("[udp] bind() error..");
}
setnonblocking(serverfd);

Loading…
Cancel
Save