authorgravatar for dev@sgregoratto.meStephen Gregoratto <dev@sgregoratto.me> 2021-09-15 10:43:45+10:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2021-09-16 13:32:55+03:00
log506f24cac2f5226210f9ce505d5b93c47b7b8c87
treebc6e35426260b41ede7cc64884477e07d991058c
parentdb940a2c8131c52fb6e1f2e40af9c68d2228e656

Set the Storage socket sizes to be system defined

Some systems (Solaris, OpenBSD, AIX) change their definitions of sockaddr_storage to be larger than 128 bytes. This comment adds a new constant in the `sockaddr` that defines the size for every system. Fixes #9759

9 files changed, 9 insertions(+), 1 deletions(-)

lib/std/c/darwin.zig+1
...@@ -291,6 +291,7 @@ pub const sockaddr = extern struct {...@@ -291,6 +291,7 @@ pub const sockaddr = extern struct {
291 family: sa_family_t,291 family: sa_family_t,
292 data: [14]u8,292 data: [14]u8,
293293
294 pub const SS_MAXSIZE = 128;
294 pub const storage = std.x.os.Socket.Address.Native.Storage;295 pub const storage = std.x.os.Socket.Address.Native.Storage;
295 pub const in = extern struct {296 pub const in = extern struct {
296 len: u8 = @sizeOf(in),297 len: u8 = @sizeOf(in),
lib/std/c/dragonfly.zig+1
...@@ -465,6 +465,7 @@ pub const sockaddr = extern struct {...@@ -465,6 +465,7 @@ pub const sockaddr = extern struct {
465 family: u8,465 family: u8,
466 data: [14]u8,466 data: [14]u8,
467467
468 pub const SS_MAXSIZE = 128;
468 pub const storage = std.x.os.Socket.Address.Native.Storage;469 pub const storage = std.x.os.Socket.Address.Native.Storage;
469470
470 pub const in = extern struct {471 pub const in = extern struct {
lib/std/c/freebsd.zig+1
...@@ -323,6 +323,7 @@ pub const sockaddr = extern struct {...@@ -323,6 +323,7 @@ pub const sockaddr = extern struct {
323 /// actually longer; address value323 /// actually longer; address value
324 data: [14]u8,324 data: [14]u8,
325325
326 pub const SS_MAXSIZE = 128;
326 pub const storage = std.x.os.Socket.Address.Native.Storage;327 pub const storage = std.x.os.Socket.Address.Native.Storage;
327328
328 pub const in = extern struct {329 pub const in = extern struct {
lib/std/c/haiku.zig+1
...@@ -339,6 +339,7 @@ pub const sockaddr = extern struct {...@@ -339,6 +339,7 @@ pub const sockaddr = extern struct {
339 /// actually longer; address value339 /// actually longer; address value
340 data: [14]u8,340 data: [14]u8,
341341
342 pub const SS_MAXSIZE = 128;
342 pub const storage = std.x.os.Socket.Address.Native.Storage;343 pub const storage = std.x.os.Socket.Address.Native.Storage;
343344
344 pub const in = extern struct {345 pub const in = extern struct {
lib/std/c/netbsd.zig+1
...@@ -476,6 +476,7 @@ pub const sockaddr = extern struct {...@@ -476,6 +476,7 @@ pub const sockaddr = extern struct {
476 /// actually longer; address value476 /// actually longer; address value
477 data: [14]u8,477 data: [14]u8,
478478
479 pub const SS_MAXSIZE = 128;
479 pub const storage = std.x.os.Socket.Address.Native.Storage;480 pub const storage = std.x.os.Socket.Address.Native.Storage;
480481
481 pub const in = extern struct {482 pub const in = extern struct {
lib/std/c/openbsd.zig+1
...@@ -279,6 +279,7 @@ pub const sockaddr = extern struct {...@@ -279,6 +279,7 @@ pub const sockaddr = extern struct {
279 /// actually longer; address value279 /// actually longer; address value
280 data: [14]u8,280 data: [14]u8,
281281
282 pub const SS_MAXSIZE = 256;
282 pub const storage = std.x.os.Socket.Address.Native.Storage;283 pub const storage = std.x.os.Socket.Address.Native.Storage;
283284
284 pub const in = extern struct {285 pub const in = extern struct {
lib/std/os/linux.zig+1
...@@ -2923,6 +2923,7 @@ pub const sockaddr = extern struct {...@@ -2923,6 +2923,7 @@ pub const sockaddr = extern struct {
2923 family: sa_family_t,2923 family: sa_family_t,
2924 data: [14]u8,2924 data: [14]u8,
29252925
2926 pub const SS_MAXSIZE = 128;
2926 pub const storage = std.x.os.Socket.Address.Native.Storage;2927 pub const storage = std.x.os.Socket.Address.Native.Storage;
29272928
2928 /// IPv4 socket address2929 /// IPv4 socket address
lib/std/os/windows/ws2_32.zig+1
...@@ -1105,6 +1105,7 @@ pub const sockaddr = extern struct {...@@ -1105,6 +1105,7 @@ pub const sockaddr = extern struct {
1105 family: ADDRESS_FAMILY,1105 family: ADDRESS_FAMILY,
1106 data: [14]u8,1106 data: [14]u8,
11071107
1108 pub const SS_MAXSIZE = 128;
1108 pub const storage = std.x.os.Socket.Address.Native.Storage;1109 pub const storage = std.x.os.Socket.Address.Native.Storage;
11091110
1110 /// IPv4 socket address1111 /// IPv4 socket address
lib/std/x/os/socket.zig+1-1
...@@ -37,7 +37,7 @@ pub const Socket = struct {...@@ -37,7 +37,7 @@ pub const Socket = struct {
3737
38 /// POSIX `sockaddr.storage`. The expected size and alignment is specified in IETF RFC 2553.38 /// POSIX `sockaddr.storage`. The expected size and alignment is specified in IETF RFC 2553.
39 pub const Storage = extern struct {39 pub const Storage = extern struct {
40 pub const expected_size = 128;40 pub const expected_size = os.sockaddr.SS_MAXSIZE;
41 pub const expected_alignment = 8;41 pub const expected_alignment = 8;
4242
43 pub const padding_size = expected_size -43 pub const padding_size = expected_size -