From 25be24c01f7f4c8ab3cdc994ee5511d7eb35d16a Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sat, 20 Jun 2020 06:56:31 +0800 Subject: [PATCH] Align the report format for UDP packet --- src/udprelay.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/udprelay.c b/src/udprelay.c index c445c6b8..0ebef4ff 100644 --- a/src/udprelay.c +++ b/src/udprelay.c @@ -324,7 +324,7 @@ parse_udprelay_header(const char *buf, const size_t buf_len, } static char * -get_addr_str(const struct sockaddr *sa) +get_addr_str(const struct sockaddr *sa, bool has_port) { static char s[SS_ADDRSTRLEN]; memset(s, 0, SS_ADDRSTRLEN); @@ -356,8 +356,11 @@ get_addr_str(const struct sockaddr *sa) int addr_len = strlen(addr); int port_len = strlen(port); memcpy(s, addr, addr_len); - memcpy(s + addr_len + 1, port, port_len); - s[addr_len] = ':'; + + if (has_port) { + memcpy(s + addr_len + 1, port, port_len); + s[addr_len] = ':'; + } return s; } @@ -767,7 +770,8 @@ remote_recv_cb(EV_P_ ev_io *w, int revents) #ifdef MODULE_LOCAL int err = server_ctx->crypto->decrypt_all(buf, server_ctx->crypto->cipher, buf_size); if (err) { - LOGE("failed to handshake with %s: %s", get_addr_str((struct sockaddr *)&src_addr), "suspicious UDP packet"); + LOGE("failed to handshake with %s: %s", + get_addr_str((struct sockaddr *)&src_addr, false), "suspicious UDP packet"); // drop the packet silently goto CLEAN_UP; } @@ -985,7 +989,8 @@ server_recv_cb(EV_P_ ev_io *w, int revents) int err = server_ctx->crypto->decrypt_all(buf, server_ctx->crypto->cipher, buf_size); if (err) { - LOGE("failed to handshake with %s: %s", get_addr_str((struct sockaddr *)&src_addr), "suspicious UDP packet"); + LOGE("failed to handshake with %s: %s", + get_addr_str((struct sockaddr *)&src_addr, false), "suspicious UDP packet"); // drop the packet silently goto CLEAN_UP; } @@ -1154,12 +1159,12 @@ server_recv_cb(EV_P_ ev_io *w, int revents) #ifdef MODULE_REDIR char src[SS_ADDRSTRLEN]; char dst[SS_ADDRSTRLEN]; - strcpy(src, get_addr_str((struct sockaddr *)&src_addr)); - strcpy(dst, get_addr_str((struct sockaddr *)&dst_addr)); + strcpy(src, get_addr_str((struct sockaddr *)&src_addr, true)); + strcpy(dst, get_addr_str((struct sockaddr *)&dst_addr, true)); LOGI("[%s] [udp] cache miss: %s <-> %s", s_port, dst, src); #else LOGI("[%s] [udp] cache miss: %s:%s <-> %s", s_port, host, port, - get_addr_str((struct sockaddr *)&src_addr)); + get_addr_str((struct sockaddr *)&src_addr, true)); #endif } } else { @@ -1167,12 +1172,12 @@ server_recv_cb(EV_P_ ev_io *w, int revents) #ifdef MODULE_REDIR char src[SS_ADDRSTRLEN]; char dst[SS_ADDRSTRLEN]; - strcpy(src, get_addr_str((struct sockaddr *)&src_addr)); - strcpy(dst, get_addr_str((struct sockaddr *)&dst_addr)); + strcpy(src, get_addr_str((struct sockaddr *)&src_addr, true)); + strcpy(dst, get_addr_str((struct sockaddr *)&dst_addr, true)); LOGI("[%s] [udp] cache hit: %s <-> %s", s_port, dst, src); #else LOGI("[%s] [udp] cache hit: %s:%s <-> %s", s_port, host, port, - get_addr_str((struct sockaddr *)&src_addr)); + get_addr_str((struct sockaddr *)&src_addr, true)); #endif } }