Oleg Moskalenko 10 лет назад
Родитель
Сommit
dfd36a7ad4
1 измененных файлов с 9 добавлено и 10 удалено
  1. 9 10
      src/apps/relay/ns_ioalib_engine_impl.c

+ 9 - 10
src/apps/relay/ns_ioalib_engine_impl.c

@@ -1989,23 +1989,23 @@ static int socket_readerr(evutil_socket_t fd, ioa_addr *orig_addr)
 }
 
 #if defined(IP_RECVERR) && defined(SOCK_EXTENDED_ERR_DEFINED)
-static void handle_icmp(struct sock_extended_err *e, u32bits *errcode, int isIpv6, int len, size_t clen)
+static void handle_icmp(struct sock_extended_err *e, u32bits *errcode, int isIpv6, int len)
 {
 	if(e && ((!isIpv6 && (e->ee_origin ==  SO_EE_ORIGIN_ICMP)) || (isIpv6 && (e->ee_origin ==  SO_EE_ORIGIN_ICMP6)))) {
 		if(errcode)
 			*errcode = e->ee_errno;
 
 		struct sockaddr* badaddr = SO_EE_OFFENDER(e);
-		if(badaddr) {
+		if(badaddr && (badaddr->sa_family != AF_UNSPEC)) {
 			ioa_addr ibadaddr;
 			addr_cpy10(&ibadaddr,badaddr);
 			char saddr[129];
 			addr_to_string(&ibadaddr, (u08bits*)saddr);
-			clen -= (sizeof (struct cmsghdr));
-			printf("%s: 111.111: %d:%d: ipv6=%d, addr=%s, port=%d, info=%lu, data=%lu, len=%lu, clen=%lu\n",__FUNCTION__,(int)e->ee_type,(int)e->ee_code,isIpv6,saddr,
-					ntohs(((struct sockaddr_in*)badaddr)->sin_port),
-					(unsigned long)(e->ee_info),(unsigned long)(e->ee_data),
-					(unsigned long)len, (unsigned long)clen);
+			TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "ICMP error: type=%d, code=%d, addr=%s, port=%d, pkg.len=%lu\n",
+					(int)e->ee_type,(int)e->ee_code,
+					saddr,
+					addr_get_port(&ibadaddr),
+					(unsigned long)len);
 		}
 	}
 }
@@ -2084,7 +2084,6 @@ int udp_recvfrom(evutil_socket_t fd, ioa_addr* orig_addr, const ioa_addr *like_a
 						= CMSG_NXTHDR(&msg,cmsgh)) {
 			int l = cmsgh->cmsg_level;
 			int t = cmsgh->cmsg_type;
-			size_t clen = cmsgh->cmsg_len;
 
 			switch(l) {
 			case IPPROTO_IP:
@@ -2103,7 +2102,7 @@ int udp_recvfrom(evutil_socket_t fd, ioa_addr* orig_addr, const ioa_addr *like_a
 #endif
 #if defined(IP_RECVERR) && defined(SOCK_EXTENDED_ERR_DEFINED)
 				case IP_RECVERR:
-					handle_icmp((struct sock_extended_err*) CMSG_DATA(cmsgh), errcode, 0, len, clen);
+					handle_icmp((struct sock_extended_err*) CMSG_DATA(cmsgh), errcode, 0, len);
 					break;
 #endif
 				default:
@@ -2127,7 +2126,7 @@ int udp_recvfrom(evutil_socket_t fd, ioa_addr* orig_addr, const ioa_addr *like_a
 #endif
 #if defined(IPV6_RECVERR) && defined(SOCK_EXTENDED_ERR_DEFINED)
 				case IPV6_RECVERR:
-					handle_icmp((struct sock_extended_err*) CMSG_DATA(cmsgh), errcode, 1, len, clen);
+					handle_icmp((struct sock_extended_err*) CMSG_DATA(cmsgh), errcode, 1, len);
 					break;
 #endif
 				default: