Fix the missing socket options for 32-bit. (#1918)
Motivation: When pulling out the NIOBSDSocket later in #1907 we dropped some of the socket option fixes for 32 bit platforms, which broke them. Modifications: Restore the socket options. Result: 32-bit build should be working again.
This commit is contained in:
parent
4c0c5e555c
commit
8b06e8f996
|
@ -17,7 +17,7 @@ import PackageDescription
|
||||||
|
|
||||||
var targets: [PackageDescription.Target] = [
|
var targets: [PackageDescription.Target] = [
|
||||||
.target(name: "NIOCore",
|
.target(name: "NIOCore",
|
||||||
dependencies: ["NIOConcurrencyHelpers"]),
|
dependencies: ["NIOConcurrencyHelpers", "CNIOLinux"]),
|
||||||
.target(name: "NIO",
|
.target(name: "NIO",
|
||||||
dependencies: ["CNIOLinux",
|
dependencies: ["CNIOLinux",
|
||||||
"CNIODarwin",
|
"CNIODarwin",
|
||||||
|
|
|
@ -48,8 +48,6 @@ extension ipv6_mreq { // http://lkml.iu.edu/hypermail/linux/kernel/0106.1/0080.h
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if arch(arm)
|
#if arch(arm)
|
||||||
let SO_RCVTIMEO = SO_RCVTIMEO_OLD
|
|
||||||
let SO_TIMESTAMP = SO_TIMESTAMP_OLD
|
|
||||||
let S_IFSOCK = UInt32(SwiftGlibc.S_IFSOCK)
|
let S_IFSOCK = UInt32(SwiftGlibc.S_IFSOCK)
|
||||||
let S_IFMT = UInt32(SwiftGlibc.S_IFMT)
|
let S_IFMT = UInt32(SwiftGlibc.S_IFMT)
|
||||||
let S_IFREG = UInt32(SwiftGlibc.S_IFREG)
|
let S_IFREG = UInt32(SwiftGlibc.S_IFREG)
|
||||||
|
@ -59,12 +57,6 @@ let S_IFBLK = UInt32(SwiftGlibc.S_IFBLK)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Work around SO_TIMESTAMP/SO_RCVTIMEO being awkwardly defined in glibc.
|
|
||||||
#if os(Linux)
|
|
||||||
let SO_TIMESTAMP = CNIOLinux_SO_TIMESTAMP
|
|
||||||
let SO_RCVTIMEO = CNIOLinux_SO_RCVTIMEO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Declare aliases to share more code and not need to repeat #if #else blocks
|
// Declare aliases to share more code and not need to repeat #if #else blocks
|
||||||
#if !os(Windows)
|
#if !os(Windows)
|
||||||
private let sysClose = close
|
private let sysClose = close
|
||||||
|
|
|
@ -56,6 +56,7 @@ import func WinSDK.inet_ntop
|
||||||
import func WinSDK.inet_pton
|
import func WinSDK.inet_pton
|
||||||
#elseif os(Linux) || os(Android)
|
#elseif os(Linux) || os(Android)
|
||||||
import Glibc
|
import Glibc
|
||||||
|
import CNIOLinux
|
||||||
|
|
||||||
private let sysInet_ntop: @convention(c) (CInt, UnsafeRawPointer?, UnsafeMutablePointer<CChar>?, socklen_t) -> UnsafePointer<CChar>? = inet_ntop
|
private let sysInet_ntop: @convention(c) (CInt, UnsafeRawPointer?, UnsafeMutablePointer<CChar>?, socklen_t) -> UnsafePointer<CChar>? = inet_ntop
|
||||||
private let sysInet_pton: @convention(c) (CInt, UnsafePointer<CChar>?, UnsafeMutableRawPointer?) -> CInt = inet_pton
|
private let sysInet_pton: @convention(c) (CInt, UnsafePointer<CChar>?, UnsafeMutableRawPointer?) -> CInt = inet_pton
|
||||||
|
@ -66,6 +67,15 @@ private let sysInet_ntop: @convention(c) (CInt, UnsafeRawPointer?, UnsafeMutable
|
||||||
private let sysInet_pton: @convention(c) (CInt, UnsafePointer<CChar>?, UnsafeMutableRawPointer?) -> CInt = inet_pton
|
private let sysInet_pton: @convention(c) (CInt, UnsafePointer<CChar>?, UnsafeMutableRawPointer?) -> CInt = inet_pton
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Work around SO_TIMESTAMP/SO_RCVTIMEO being awkwardly defined in glibc.
|
||||||
|
#if os(Android) && arch(arm)
|
||||||
|
let SO_RCVTIMEO = SO_RCVTIMEO_OLD
|
||||||
|
let SO_TIMESTAMP = SO_TIMESTAMP_OLD
|
||||||
|
#elseif os(Linux)
|
||||||
|
let SO_TIMESTAMP = CNIOLinux_SO_TIMESTAMP
|
||||||
|
let SO_RCVTIMEO = CNIOLinux_SO_RCVTIMEO
|
||||||
|
#endif
|
||||||
|
|
||||||
public enum NIOBSDSocket {
|
public enum NIOBSDSocket {
|
||||||
#if os(Windows)
|
#if os(Windows)
|
||||||
public typealias Handle = SOCKET
|
public typealias Handle = SOCKET
|
||||||
|
|
Loading…
Reference in New Issue