authorgravatar for kenta@lithdew.netlithdew <kenta@lithdew.net> 2021-05-08 23:22:45+09:00
committergravatar for kenta@lithdew.netlithdew <kenta@lithdew.net> 2021-05-10 19:22:31+09:00
loge739b2b7d6b61da805bab64854b47978f872c48d
tree36e994ceaa0413b19953f4795436940d6efe3d1e
parentd3871af724f838fdb8b6ef95b38ef1409b46c0b7

x/os/socket: use sockaddr_storage for accept()


2 files changed, 8 insertions(+), 8 deletions(-)

lib/std/x/os/socket_posix.zig+4-4
...@@ -55,11 +55,11 @@ pub const Socket = struct {...@@ -55,11 +55,11 @@ pub const Socket = struct {
55 /// Accept a pending incoming connection queued to the kernel backlog55 /// Accept a pending incoming connection queued to the kernel backlog
56 /// of the socket.56 /// of the socket.
57 pub fn accept(self: Socket, flags: u32) !Socket.Connection {57 pub fn accept(self: Socket, flags: u32) !Socket.Connection {
58 var address: os.sockaddr = undefined;58 var address: os.sockaddr_storage = undefined;
59 var address_len: u32 = @sizeOf(os.sockaddr);59 var address_len: u32 = @sizeOf(os.sockaddr_storage);
6060
61 const socket = Socket{ .fd = try os.accept(self.fd, &address, &address_len, flags) };61 const socket = Socket{ .fd = try os.accept(self.fd, @ptrCast(*os.sockaddr, &address), &address_len, flags) };
62 const socket_address = Socket.Address.fromNative(@alignCast(4, &address));62 const socket_address = Socket.Address.fromNative(@alignCast(4, @ptrCast(*os.sockaddr, &address)));
6363
64 return Socket.Connection.from(socket, socket_address);64 return Socket.Connection.from(socket, socket_address);
65 }65 }
lib/std/x/os/socket_windows.zig+4-4
...@@ -149,10 +149,10 @@ pub const Socket = struct {...@@ -149,10 +149,10 @@ pub const Socket = struct {
149 /// Accept a pending incoming connection queued to the kernel backlog149 /// Accept a pending incoming connection queued to the kernel backlog
150 /// of the socket.150 /// of the socket.
151 pub fn accept(self: Socket, flags: u32) !Socket.Connection {151 pub fn accept(self: Socket, flags: u32) !Socket.Connection {
152 var address: ws2_32.sockaddr = undefined;152 var address: ws2_32.sockaddr_storage = undefined;
153 var address_len: c_int = @sizeOf(ws2_32.sockaddr);153 var address_len: c_int = @sizeOf(ws2_32.sockaddr_storage);
154154
155 const rc = ws2_32.accept(self.fd, &address, &address_len);155 const rc = ws2_32.accept(self.fd, @ptrCast(*ws2_32.sockaddr, &address), &address_len);
156 if (rc == ws2_32.INVALID_SOCKET) {156 if (rc == ws2_32.INVALID_SOCKET) {
157 return switch (ws2_32.WSAGetLastError()) {157 return switch (ws2_32.WSAGetLastError()) {
158 .WSANOTINITIALISED => unreachable,158 .WSANOTINITIALISED => unreachable,
...@@ -169,7 +169,7 @@ pub const Socket = struct {...@@ -169,7 +169,7 @@ pub const Socket = struct {
169 }169 }
170170
171 const socket = Socket.from(rc);171 const socket = Socket.from(rc);
172 const socket_address = Socket.Address.fromNative(@alignCast(4, &address));172 const socket_address = Socket.Address.fromNative(@alignCast(4, @ptrCast(*ws2_32.sockaddr, &address)));
173173
174 return Socket.Connection.from(socket, socket_address);174 return Socket.Connection.from(socket, socket_address);
175 }175 }