From f402119f6d56bc07939b854aab6236b92315229a Mon Sep 17 00:00:00 2001 From: Max Lv Date: Fri, 28 Feb 2014 13:02:19 +0800 Subject: [PATCH] refine get_addr_str --- src/udprelay.c | 28 ++++++++++++++-------------- src/utils.h | 3 +++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/udprelay.c b/src/udprelay.c index e06a0a6b..bc625cbb 100644 --- a/src/udprelay.c +++ b/src/udprelay.c @@ -150,31 +150,31 @@ static int parse_udprealy_header(const char* buf, const int buf_len, char *host, return offset; } -static char *get_ip_str(const struct sockaddr *sa) +static char *get_addr_str(const struct sockaddr *sa) { - static char s[256]; - memset(s, 0, 256); - char addr[128] = {0}; - char port[16] = {0}; + static char s[SS_ADDRSTRLEN]; + memset(s, 0, SS_ADDRSTRLEN); + char addr[INET6_ADDRSTRLEN] = {0}; + char port[PORTSTRLEN] = {0}; uint16_t p; switch(sa->sa_family) { case AF_INET: inet_ntop(AF_INET, &(((struct sockaddr_in *)sa)->sin_addr), - addr, 256); + addr, INET_ADDRSTRLEN); p = ntohs(((struct sockaddr_in *)sa)->sin_port); sprintf(port, "%d", p); break; case AF_INET6: inet_ntop(AF_INET6, &(((struct sockaddr_in6 *)sa)->sin6_addr), - addr, 256); + addr, INET6_ADDRSTRLEN); p = ntohs(((struct sockaddr_in *)sa)->sin_port); sprintf(port, "%d", p); break; default: - strncpy(s, "Unknown AF", 128); + strncpy(s, "Unknown AF", SS_ADDRSTRLEN); } int addr_len = strlen(addr); @@ -481,12 +481,12 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) ev_timer_again(EV_A_ &remote_ctx->watcher); struct sockaddr src_addr; - socklen_t addr_len = sizeof(src_addr); + socklen_t src_addr_len = sizeof(src_addr); unsigned int addr_header_len = remote_ctx->addr_header_len; char *buf = malloc(BUF_SIZE); // recv - ssize_t buf_len = recvfrom(remote_ctx->fd, buf, BUF_SIZE, 0, &src_addr, &addr_len); + ssize_t buf_len = recvfrom(remote_ctx->fd, buf, BUF_SIZE, 0, &src_addr, &src_addr_len); if (buf_len == -1) { @@ -554,10 +554,10 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) struct sockaddr src_addr; char *buf = malloc(BUF_SIZE); - socklen_t addr_len = sizeof(src_addr); + socklen_t src_addr_len = sizeof(src_addr); unsigned int offset = 0; - ssize_t buf_len = recvfrom(server_ctx->fd, buf, BUF_SIZE, 0, &src_addr, &addr_len); + ssize_t buf_len = recvfrom(server_ctx->fd, buf, BUF_SIZE, 0, &src_addr, &src_addr_len); if (buf_len == -1) { @@ -681,14 +681,14 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { if (verbose) { - LOGD("[udp] cache missed: %s:%s <-> %s", host, port, get_ip_str(&src_addr)); + LOGD("[udp] cache missed: %s:%s <-> %s", host, port, get_addr_str(&src_addr)); } } else { if (verbose) { - LOGD("[udp] cache hit: %s:%s <-> %s", host, port, get_ip_str(&src_addr)); + LOGD("[udp] cache hit: %s:%s <-> %s", host, port, get_addr_str(&src_addr)); } } diff --git a/src/utils.h b/src/utils.h index c1e45e0f..2387da9d 100644 --- a/src/utils.h +++ b/src/utils.h @@ -4,6 +4,9 @@ #include #include +#define PORTSTRLEN 16 +#define SS_ADDRSTRLEN (INET6_ADDRSTRLEN + PORTSTRLEN + 1) + #ifdef ANDROID #include