Commit 9812bc7b10

Andrew Kelley <andrew@ziglang.org>
2024-02-24 12:16:53
std: map NETNAME_DELETED to error.ConnectionResetByPeer
This was observed in writing to a network stream that was closed on the read end.
1 parent f9bf4d1
Changed files (3)
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),
         }
     }
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,
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,