SSDP Discovery Not Working after Update to IOS 16.0

Before Updating to iOS 16.0, SSDP Device Discovery was working perfectly but after the update, it's not working on real devices. Although it's working in Simulator.

Below was SSDP Package we are using: https://github.com/pierrickrouxel/SSDPClient

After the update to 16.0, its gives below error:

[2022-09-17T15:26:27.275+05:30] [INFO] [SSDPDiscovery.swift:113 discoverService(forDuration:searchTarget:port:)] Start SSDP discovery for 10 duration...
Started
[2022-09-17T15:26:27.279+05:30] [ERROR] [SSDPDiscovery.swift:132 discoverService(forDuration:searchTarget:port:)] Socket error: Error code: -9980(0x-26FC), No route to host
Error code: -9980(0x-26FC), No route to host
[2022-09-17T15:26:27.279+05:30] [ERROR] [SSDPDiscovery.swift:75 readResponses()] Socket error: Error code: -9982(0x-26FE), Bad file descriptor
Error code: -9982(0x-26FE), Bad file descriptor

Can someone please help? Our Whole Production is down after the update.

Post not yet marked as solved Up vote post of tech_gabbar Down vote post of tech_gabbar
2.6k views

Replies

Just had this encounter as well after updating to iOS 16, adding the Multicast Entitlement to the project fixed it for me

  • the same matter with me, i have got the Multicast Networking permission and add it into my entitlements, but it does still not work. What else should I do to resolve it?

Add a Comment

For more background on this issue, see my Local Network Privacy FAQ.

tech_gabbar wrote:

Although it's working in Simulator.

Per FAQ-12, the simulator does not enforce local network privacy.


HomelessTater wrote:

Just had this encounter as well after updating to iOS 16, adding the Multicast Entitlement to the project fixed it for me

Yeah, there seems to have been a glitch in iOS 15 where it wasn’t requiring the local network privacy entitlement when it should have been (per the rules in FAQ-3). iOS 16 fixed that bug, and that’s caused problems for a bunch of apps that were previously relying it.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Following up on this.

If I understood this correctly, SSDP Device Discovery would work correctly if we add com.apple.developer.networking.multicast entitlement into the app which runs on 1OS 14+. Is this correct? If it works on iOS 14+ devices after adding the entitlement, then how can we make SSDP Device Discovery work on iOS 10? Or is it even possible? What's the minimum iOS version where SSDP Device Discovery will work with and/or without com.apple.developer.networking.multicast entitlement?

@eskimo, @meaton

how can we make SSDP Device Discovery work on iOS 10?

There are three groups of OSes here:

  • Old systems, which do not implement local network privacy

  • New systems, which do

  • Some broken systems in between, which should enforce local network privacy but fail to do so because of bugs

iOS 10 falls into the first group. It does not enforce local network at all. Your SSDP code will work fine on this system regardless of whether you sign your code with the com.apple.developer.networking.multicast entitlement or not.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"