I`m trying create simple http sever, when I do it in main target of my macOS app then it works, but when I do it in uitests target it fails (result == -1 (Operation not permitted)). Interestingly when I run it in iOS uiTests target then it works.
let sockfd = socket(AF_INET, SOCK_STREAM, 0)
var serverAddress = sockaddr_in(sin_len: __uint8_t(MemoryLayout<sockaddr_in>.size),
sin_family: sa_family_t(AF_INET),
sin_port: CFSwapInt16HostToBig(8080),
sin_addr: in_addr(s_addr: inet_addr("127.0.0.1")),
sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
let result = withUnsafePointer(to: &serverAddress) {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
Darwin.bind(sockfd, $0, socklen_t(MemoryLayout<sockaddr_in>.size))
}
}
I've got set in my main target entitlements:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
</dict>
</plist>
What can be reason that it fails? how can I fix it?