diff --git a/Sources/ContainerizationOS/Socket/Socket.swift b/Sources/ContainerizationOS/Socket/Socket.swift index 26a2270f..33954516 100644 --- a/Sources/ContainerizationOS/Socket/Socket.swift +++ b/Sources/ContainerizationOS/Socket/Socket.swift @@ -306,7 +306,7 @@ extension Socket { /// Receive a file descriptor via SCM_RIGHTS control message. /// This is commonly used for passing file descriptors between processes via Unix domain sockets. - public func receiveFileDescriptor() throws -> FileHandle { + public func receiveFileDescriptor() throws -> Int32 { let handle = try state.withLock { currentState in guard currentState.socketState == .connected else { throw SocketError.invalidOperationOnSocket("receiveFileDescriptor") @@ -361,7 +361,7 @@ extension Socket { throw SocketError.invalidFileDescriptor } - return FileHandle(fileDescriptor: fd, closeOnDealloc: true) + return fd } public func read(buffer: inout Data) throws -> Int { diff --git a/Tests/ContainerizationOSTests/SocketTests.swift b/Tests/ContainerizationOSTests/SocketTests.swift index b0e0902a..04ec8dab 100644 --- a/Tests/ContainerizationOSTests/SocketTests.swift +++ b/Tests/ContainerizationOSTests/SocketTests.swift @@ -106,7 +106,8 @@ final class SocketTests { let originalFD = testFileHandle.fileDescriptor try sendFileDescriptor(socket: sendSocket, fd: originalFD) - let receivedFileHandle = try recvSocket.receiveFileDescriptor() + let receivedFd = try recvSocket.receiveFileDescriptor() + let receivedFileHandle = FileHandle(fileDescriptor: receivedFd) defer { try? receivedFileHandle.close() } try #require(receivedFileHandle.fileDescriptor != originalFD, "Received FD should be different") diff --git a/vminitd/Sources/vminitd/Runc/ConsoleSocket.swift b/vminitd/Sources/vminitd/Runc/ConsoleSocket.swift index db54aff9..c30520ab 100644 --- a/vminitd/Sources/vminitd/Runc/ConsoleSocket.swift +++ b/vminitd/Sources/vminitd/Runc/ConsoleSocket.swift @@ -65,7 +65,7 @@ public final class ConsoleSocket: Sendable { } /// Receive the PTY master file descriptor from runc - public func receiveMaster() throws -> FileHandle { + public func receiveMaster() throws -> Int32 { let connection = try socket.accept() defer { try? connection.close() }