mirror of
https://github.com/apple/container.git
synced 2026-09-12 18:55:43 +00:00
Socket: Return Int32 and not FileHandle for uds receives (#398)
Gives more flexibility. The caller doesn't need to carry around this FileHandle object if they don't really need it.
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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() }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user