@@ -17,30 +17,34 @@ func sockaddrToAny(sa windows.Sockaddr) (*windows.RawSockaddrAny, Socklen, error
17
17
if sa .Port < 0 || sa .Port > 0xFFFF {
18
18
return nil , 0 , syscall .EINVAL
19
19
}
20
- var raw windows.RawSockaddrInet4
21
- raw .Family = windows .AF_INET
22
- p := (* [2 ]byte )(unsafe .Pointer (& raw .Port ))
20
+
21
+ raw := new (windows.RawSockaddrAny )
22
+ raw .Addr .Family = windows .AF_INET
23
+ raw4 := (* windows .RawSockaddrInet4 )(unsafe .Pointer (raw ))
24
+ p := (* [2 ]byte )(unsafe .Pointer (& raw4 .Port ))
23
25
p [0 ] = byte (sa .Port >> 8 )
24
26
p [1 ] = byte (sa .Port )
25
27
for i := 0 ; i < len (sa .Addr ); i ++ {
26
- raw .Addr [i ] = sa .Addr [i ]
28
+ raw4 .Addr [i ] = sa .Addr [i ]
27
29
}
28
- return ( * windows . RawSockaddrAny )( unsafe . Pointer ( & raw )) , Socklen (unsafe .Sizeof (raw )), nil
30
+ return raw , Socklen (unsafe .Sizeof (* raw4 )), nil
29
31
30
32
case * windows.SockaddrInet6 :
31
33
if sa .Port < 0 || sa .Port > 0xFFFF {
32
34
return nil , 0 , syscall .EINVAL
33
35
}
34
- var raw windows.RawSockaddrInet6
35
- raw .Family = windows .AF_INET6
36
- p := (* [2 ]byte )(unsafe .Pointer (& raw .Port ))
36
+
37
+ raw := new (windows.RawSockaddrAny )
38
+ raw .Addr .Family = windows .AF_INET6
39
+ raw6 := (* windows .RawSockaddrInet6 )(unsafe .Pointer (raw ))
40
+ p := (* [2 ]byte )(unsafe .Pointer (& raw6 .Port ))
37
41
p [0 ] = byte (sa .Port >> 8 )
38
42
p [1 ] = byte (sa .Port )
39
- raw .Scope_id = sa .ZoneId
43
+ raw6 .Scope_id = sa .ZoneId
40
44
for i := 0 ; i < len (sa .Addr ); i ++ {
41
- raw .Addr [i ] = sa .Addr [i ]
45
+ raw6 .Addr [i ] = sa .Addr [i ]
42
46
}
43
- return ( * windows . RawSockaddrAny )( unsafe . Pointer ( & raw )) , Socklen (unsafe .Sizeof (raw )), nil
47
+ return raw , Socklen (unsafe .Sizeof (* raw6 )), nil
44
48
45
49
case * windows.SockaddrUnix :
46
50
return nil , 0 , syscall .EWINDOWS
0 commit comments