@@ -164,18 +164,12 @@ pub(crate) mod ssl_cert {
164164 // IPv4
165165 format ! ( "{}.{}.{}.{}" , ip[ 0 ] , ip[ 1 ] , ip[ 2 ] , ip[ 3 ] )
166166 } else if ip. len ( ) == 16 {
167- // IPv6 - format like: "X:X:X:X:X:X:X:X" (not compressed)
168- format ! (
169- "{:X}:{:X}:{:X}:{:X}:{:X}:{:X}:{:X}:{:X}" ,
170- ( ip[ 0 ] as u16 ) << 8 | ip[ 1 ] as u16 ,
171- ( ip[ 2 ] as u16 ) << 8 | ip[ 3 ] as u16 ,
172- ( ip[ 4 ] as u16 ) << 8 | ip[ 5 ] as u16 ,
173- ( ip[ 6 ] as u16 ) << 8 | ip[ 7 ] as u16 ,
174- ( ip[ 8 ] as u16 ) << 8 | ip[ 9 ] as u16 ,
175- ( ip[ 10 ] as u16 ) << 8 | ip[ 11 ] as u16 ,
176- ( ip[ 12 ] as u16 ) << 8 | ip[ 13 ] as u16 ,
177- ( ip[ 14 ] as u16 ) << 8 | ip[ 15 ] as u16
178- )
167+ // IPv6 - use standard library for canonical compressed format
168+ let ip_addr = std:: net:: Ipv6Addr :: from ( [
169+ ip[ 0 ] , ip[ 1 ] , ip[ 2 ] , ip[ 3 ] , ip[ 4 ] , ip[ 5 ] , ip[ 6 ] , ip[ 7 ] , ip[ 8 ] ,
170+ ip[ 9 ] , ip[ 10 ] , ip[ 11 ] , ip[ 12 ] , ip[ 13 ] , ip[ 14 ] , ip[ 15 ] ,
171+ ] ) ;
172+ ip_addr. to_string ( )
179173 } else {
180174 // Fallback for unexpected length
181175 String :: from_utf8_lossy ( ip) . into_owned ( )
0 commit comments