diff --git a/lib/std/http/test.zig b/lib/std/http/test.zig index e36b0cdf28..cfcfa5e5ac 100644 --- a/lib/std/http/test.zig +++ b/lib/std/http/test.zig @@ -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()); defer stream.close(); 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" { diff --git a/lib/std/os.zig b/lib/std/os.zig index 4d8e1cd6cc..a31a2d943c 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -836,9 +836,6 @@ pub const ReadError = error{ NotOpenForReading, SocketNotConnected, - // Windows only - NetNameDeleted, - /// This error occurs when no global event loop is configured, /// and reading from the file descriptor would block. WouldBlock, diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index ccbcba6883..1b4b13647b 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -453,7 +453,8 @@ pub fn FindClose(hFindFile: HANDLE) void { pub const ReadFileError = error{ BrokenPipe, - NetNameDeleted, + /// The specified network name is no longer available. + ConnectionResetByPeer, OperationAborted, Unexpected, }; @@ -485,7 +486,7 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64) ReadFileError!usiz .OPERATION_ABORTED => continue, .BROKEN_PIPE => return 0, .HANDLE_EOF => return 0, - .NETNAME_DELETED => return error.NetNameDeleted, + .NETNAME_DELETED => return error.ConnectionResetByPeer, else => |err| return unexpectedError(err), } } @@ -501,6 +502,8 @@ pub const WriteFileError = error{ /// The process cannot access the file because another process has locked /// a portion of the file. LockViolation, + /// The specified network name is no longer available. + ConnectionResetByPeer, Unexpected, }; @@ -517,8 +520,8 @@ pub fn WriteFile( .InternalHigh = 0, .DUMMYUNIONNAME = .{ .DUMMYSTRUCTNAME = .{ - .Offset = @as(u32, @truncate(off)), - .OffsetHigh = @as(u32, @truncate(off >> 32)), + .Offset = @truncate(off), + .OffsetHigh = @truncate(off >> 32), }, }, .hEvent = null, @@ -536,6 +539,7 @@ pub fn WriteFile( .BROKEN_PIPE => return error.BrokenPipe, .INVALID_HANDLE => return error.NotOpenForWriting, .LOCK_VIOLATION => return error.LockViolation, + .NETNAME_DELETED => return error.ConnectionResetByPeer, else => |err| return unexpectedError(err), } } diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 7e0aaaafa0..b29cf939d0 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -1103,7 +1103,6 @@ fn preadMin(file: fs.File, buf: []u8, offset: u64, min_read_len: usize) !usize { error.ConnectionResetByPeer => return error.UnableToReadElfFile, error.ConnectionTimedOut => return error.UnableToReadElfFile, error.SocketNotConnected => return error.UnableToReadElfFile, - error.NetNameDeleted => return error.UnableToReadElfFile, error.Unexpected => return error.Unexpected, error.InputOutput => return error.FileSystem, error.AccessDenied => return error.Unexpected,