Merge pull request #19064 from ziglang/fix-netname-deleted

std: map NETNAME_DELETED to error.ConnectionResetByPeer
This commit is contained in:
Andrew Kelley 2024-02-24 10:03:40 -08:00 committed by GitHub
commit 6fddc9cd3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 8 deletions

View file

@ -142,6 +142,17 @@ test "HTTP server handles a chunked transfer coding request" {
const stream = try std.net.tcpConnectToHost(gpa, "127.0.0.1", test_server.port()); const stream = try std.net.tcpConnectToHost(gpa, "127.0.0.1", test_server.port());
defer stream.close(); defer stream.close();
try stream.writeAll(request_bytes); try stream.writeAll(request_bytes);
const response = try stream.reader().readAllAlloc(gpa, 100);
defer gpa.free(response);
const expected_response =
"HTTP/1.1 200 OK\r\n" ++
"content-length: 21\r\n" ++
"content-type: text/plain\r\n" ++
"\r\n" ++
"message from server!\n";
try expectEqualStrings(expected_response, response);
} }
test "echo content server" { test "echo content server" {

View file

@ -836,9 +836,6 @@ pub const ReadError = error{
NotOpenForReading, NotOpenForReading,
SocketNotConnected, SocketNotConnected,
// Windows only
NetNameDeleted,
/// This error occurs when no global event loop is configured, /// This error occurs when no global event loop is configured,
/// and reading from the file descriptor would block. /// and reading from the file descriptor would block.
WouldBlock, WouldBlock,

View file

@ -453,7 +453,8 @@ pub fn FindClose(hFindFile: HANDLE) void {
pub const ReadFileError = error{ pub const ReadFileError = error{
BrokenPipe, BrokenPipe,
NetNameDeleted, /// The specified network name is no longer available.
ConnectionResetByPeer,
OperationAborted, OperationAborted,
Unexpected, Unexpected,
}; };
@ -485,7 +486,7 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64) ReadFileError!usiz
.OPERATION_ABORTED => continue, .OPERATION_ABORTED => continue,
.BROKEN_PIPE => return 0, .BROKEN_PIPE => return 0,
.HANDLE_EOF => return 0, .HANDLE_EOF => return 0,
.NETNAME_DELETED => return error.NetNameDeleted, .NETNAME_DELETED => return error.ConnectionResetByPeer,
else => |err| return unexpectedError(err), else => |err| return unexpectedError(err),
} }
} }
@ -501,6 +502,8 @@ pub const WriteFileError = error{
/// The process cannot access the file because another process has locked /// The process cannot access the file because another process has locked
/// a portion of the file. /// a portion of the file.
LockViolation, LockViolation,
/// The specified network name is no longer available.
ConnectionResetByPeer,
Unexpected, Unexpected,
}; };
@ -517,8 +520,8 @@ pub fn WriteFile(
.InternalHigh = 0, .InternalHigh = 0,
.DUMMYUNIONNAME = .{ .DUMMYUNIONNAME = .{
.DUMMYSTRUCTNAME = .{ .DUMMYSTRUCTNAME = .{
.Offset = @as(u32, @truncate(off)), .Offset = @truncate(off),
.OffsetHigh = @as(u32, @truncate(off >> 32)), .OffsetHigh = @truncate(off >> 32),
}, },
}, },
.hEvent = null, .hEvent = null,
@ -536,6 +539,7 @@ pub fn WriteFile(
.BROKEN_PIPE => return error.BrokenPipe, .BROKEN_PIPE => return error.BrokenPipe,
.INVALID_HANDLE => return error.NotOpenForWriting, .INVALID_HANDLE => return error.NotOpenForWriting,
.LOCK_VIOLATION => return error.LockViolation, .LOCK_VIOLATION => return error.LockViolation,
.NETNAME_DELETED => return error.ConnectionResetByPeer,
else => |err| return unexpectedError(err), else => |err| return unexpectedError(err),
} }
} }

View file

@ -1103,7 +1103,6 @@ fn preadMin(file: fs.File, buf: []u8, offset: u64, min_read_len: usize) !usize {
error.ConnectionResetByPeer => return error.UnableToReadElfFile, error.ConnectionResetByPeer => return error.UnableToReadElfFile,
error.ConnectionTimedOut => return error.UnableToReadElfFile, error.ConnectionTimedOut => return error.UnableToReadElfFile,
error.SocketNotConnected => return error.UnableToReadElfFile, error.SocketNotConnected => return error.UnableToReadElfFile,
error.NetNameDeleted => return error.UnableToReadElfFile,
error.Unexpected => return error.Unexpected, error.Unexpected => return error.Unexpected,
error.InputOutput => return error.FileSystem, error.InputOutput => return error.FileSystem,
error.AccessDenied => return error.Unexpected, error.AccessDenied => return error.Unexpected,