Hello,
I’ve run into some strange behavior with the macOS System Extension using a Packet Tunnel. The issue showed up after the device went to sleep while the VPN was running. When I woke the computer, the VPN tried to reconnect but never succeeded — it just stayed stuck in the “connecting” state.
I was able to turn the VPN off, but every attempt to turn it back on failed and got stuck at “connecting” again. Even removing the VPN configuration from Settings didn’t help. The only thing that worked was disabling the system extension completely.
While checking the logs, I noticed thousands of identical log messages appearing within just a few seconds:
nesessionmanager(562) deny(1) system-fsctl (_IO "h" 47)
17:11:52.481498+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5454	com.apple.networkextension
17:11:52.481568+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5454	com.apple.networkextension
17:11:52.481580+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5454	com.apple.networkextension
17:11:52.481587+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5454	com.apple.networkextension
17:11:52.481646+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5446	com.apple.networkextension
17:11:52.481664+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5446	com.apple.networkextension
17:11:52.481671+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5446	com.apple.networkextension
17:11:52.481676+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5446	com.apple.networkextension
17:11:52.481682+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5446	com.apple.networkextension
17:11:52.481687+0200	NESMVPNSession[Primary Tunnel:Secure DNS: got On Demand start message from pid 5446	com.apple.networkextension
After the burst of these repeated messages, I started seeing logs like the following:
17:11:52.481759+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Spotify Helper[69038]	com.apple.networkextension
17:11:52.481790+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Spotify Helper[69038]: session in state connecting	com.apple.networkextension
17:11:52.481949+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Spotify Helper[69038]	com.apple.networkextension
17:11:52.481966+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Spotify Helper[69038]: session in state connecting	com.apple.networkextension
17:11:52.481986+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Spotify Helper[69038]	com.apple.networkextension
17:11:52.481992+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Spotify Helper[69038]: session in state connecting	com.apple.networkextension
17:11:52.482003+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Spotify Helper[69038]	com.apple.networkextension
17:11:52.482011+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Spotify Helper[69038]: session in state connecting	com.apple.networkextension
17:11:52.482022+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Spotify Helper[69038]	com.apple.networkextension
17:11:52.482028+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Spotify Helper[69038]: session in state connecting	com.apple.networkextension
17:11:52.482039+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Spotify Helper[69038]	com.apple.networkextension
17:11:52.482049+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Spotify Helper[69038]: session in state connecting	com.apple.networkextension
17:11:52.482060+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from Slack Helper[84828]	com.apple.networkextension
17:11:52.482069+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from Slack Helper[84828]: session in state connecting	com.apple.networkextension
17:11:52.482079+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Received a start command from sharingd[764]	com.apple.networkextension
17:11:52.482086+0200	NESMVPNSession[Primary Tunnel:Secure DNS: Skip a start command from sharingd[764]: session in state connecting	com.apple.networkextension
It is clear that the connection is in a loop of submitting request to start and then failing. This problem occured only after sleep on macOS 26.0 and 15.6.
This issue only occured after the system woke up from sleep. macOS 15.6 and 26.0.
Is this a known problem, and how should I go about troubleshooting or resolving it?
                    
                  
                Networking
RSS for tagExplore the networking protocols and technologies used by the device to connect to Wi-Fi networks, Bluetooth devices, and cellular data services.
  
    
    Selecting any option will automatically load the page
  
  
  
  
    
  
  
            Post
Replies
Boosts
Views
Activity
                    
                      Aloha. Opening and closing VPN tunnels results in as many utun interfaces as the amount of times the tunnel has been opened. These interfaces stay present and seem to be removed only upon system reboot.
We are using the NetworkExtension as a SystemExtension on macOS to create the virtual interfaces.
Is this the normal behaviour. Has anybody else experienced this?
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
	inet6 fe80::8038:c353:17cd:c422%utun0 prefixlen 64 scopeid 0xf 
	nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
	inet6 fe80::cfb6:1324:d7e9:5d5%utun1 prefixlen 64 scopeid 0x10 
	nd6 options=201<PERFORMNUD,DAD>
utun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
utun3: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
utun4: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
utun5: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
utun6: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
utun7: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
utun8: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1300
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
                    
                  
                
                    
                      I couldn't find any mention in the Wi-Fi Aware documentation https://developer.apple.com/documentation/WiFiAware about the possibilities of the Wi-Fi Aware connection during the app working in the background execution mode (background state).
Does the framework keep the connection alive when the app goes to the background state?
Is there anything similar concept to CoreBluetooth state restoration available in the case of the Wi-Fi Aware framework?
                    
                  
                
              
                
              
              
                
                Topic:
                  
	
		App & System Services
  	
                
                
                SubTopic:
                  
                    
	
		Networking
		
  	
                  
                
              
              
              
  
  
    
    
  
  
              
                
                
              
            
          
                    
                      Hello,
I have been playing around the the SimpleURLFilter sample code. I keep getting this error upon installed the filter profile on the device:
mapError unexpected error domain NEVPNConnectionErrorDomainPlugin code 7
which then causes this error:
Received filter status change: <FilterStatus: 'stopped' errorMessage: 'The operation couldn’t be completed. (NetworkExtension.NEURLFilterManager.Error error 14.)'>
I can't find much info about code 7.
Here is the configuration I am trying to run:
<Configuration: pirServerURL: 'http://MyComputer.local:8080' pirAuthenticationToken: 'AAAA' pirPrivacyPassIssuerURL: 'http://MyComputer.local:8080' enabled: 'true' shouldFailClosed: 'true' controlProviderBundleIdentifier: 'krpaul.SimpleURLFilter.SimpleURLFilterExtension' prefilterFetchInterval: '2700.0'>
                    
                  
                
                    
                      When a VPN is active, RCS messaging does not work on iOS 18.
I work on an iOS VPN app, and we were very appreciative of the excludeCellularServices network flag that was released during the iOS 16 cycle. It's a great solution to ensure the VPN doesn't interfere with cellular network features from the cellular provider.
Separately - As a user, I'm excited that iOS 18 includes RCS messaging.
Unfortunately, RCS messaging is not working when our VPN is active (when checking on the iOS 18 release candidate). My guess is that RCS is not excluded from the VPN tunnel, even when excludeCellularServices is true. It seems like RCS should be added in this situation, as it is a cell provider service.
Can RCS be added as a service that is excluded from the VPN tunnel when excludeCellularServices is true? (I've also sent this via feedback assistant, as 15094270.)
                    
                  
                
                    
                      We have observed a per-process limitation on the number of simultaneous nw_connection_t objects in certain macOS environments. On some systems, this limit does not appear to apply, but on others the limitation is reproducible.
When a process attempts to establish a large number of connections (e.g. 512+), some connections enter the nw_connection_state_waiting state and report the POSIX error “Cannot allocate memory”. These connections remain stuck indefinitely, even after other connections are deallocated and resources should theoretically be available again.
This behavior severely impacts use cases such as transparent proxies implemented via the NetworkExtension framework, which intercept system-wide traffic and must open connections on behalf of all client processes. In this scenario, a per-process limit effectively becomes a system-wide limit, leading to unexpected and hard-to-diagnose network failures in client applications. So, is there any way to disable this restriction for Network Extension processes? Are there any system settings that could affect this limitation and be modified by users?
                    
                  
                
                    
                      I'm developing an application using the accessory setup kit (BLE) on iOS 18+. An important aspect of the connection process is being able to find and choose the correct device.
I noticed on iOS 18.2 that I was able to both scroll through the discovered accessories as well as view the advertised name. However, after upgrading to 18.7.2, only a single device is viewable and the advertised name is no longer available. Is there a trigger for this feature that I need to enable or was this "multiple discovery" feature removed? If so, why?
                    
                  
                
                    
                      I would like to understand the behaviour of Network framework when I have established a connection between 2 iOS devices which are connected through LAN and the same Wifi. Assumptions:
Enabled includePeerToPeer.
Devices are discovered and connected through Bonjour:
When the connection establishes for the first time, does it automatically decide which interface to pick? I see some posts which point to Happy Eyeball algorithm but that seem to point more towards ipv4 vs ipv6 rather than Wifi vs LAN vs P2P.
In the middle of a connection, if the established connection has issues, does the Network framework automatically switch to the best available interface?
If not, I would assume the app will have to handle the switching in betterPathUpdateHandler callback? I’m curious what needs to be done here. Do I just create a new connection and hope that it picks the actual better path?
The NWInterface.InterfaceType doesnt have a type for peer to peer wifi. Does that mean that when the interface actually switches to peer to peer,  the InterfaceType will be other?
It would be great if there is a workflow or example of how this needs to be handled with multiple available Interfaces.
                    
                  
                
                    
                      When filtering traffic to localhost (127.0.0.1), it causes Maven repository synchronization to fail in IntelliJ IDEA. However, Maven works correctly when local traffic is not filtered. I will provide a minimal code reproduction below.
- (void)startFilterWithCompletionHandler:(void (^)(NSError *error))completionHandler {
    // Add code to initialize the filter
    NSMutableArray *rules = [NSMutableArray array];
    NENetworkRule * rule = [[NENetworkRule alloc] initWithRemoteNetwork:nil remotePrefix:0 localNetwork:nil localPrefix:0 protocol:NENetworkRuleProtocolTCP direction:NETrafficDirectionAny];
    [rules addObject:[[NEFilterRule alloc]initWithNetworkRule:rule action:NEFilterActionFilterData]];
    rule = [[NENetworkRule alloc] initWithRemoteNetwork:nil remotePrefix:0 localNetwork:nil localPrefix:0 protocol:NENetworkRuleProtocolUDP direction:NETrafficDirectionAny];
    [rules addObject:[[NEFilterRule alloc]initWithNetworkRule:rule action:NEFilterActionFilterData]];
    NWHostEndpoint *hostEndpointIpv4 = [NWHostEndpoint endpointWithHostname:@"127.0.0.1" port:@"0"];
    NENetworkRule *localHostRuleIpv4 = [[NENetworkRule alloc] initWithRemoteNetwork:hostEndpointIpv4
                                                                         remotePrefix:32
                                                                         localNetwork:hostEndpointIpv4
                                                                         localPrefix:32
                                                                           protocol:NENetworkRuleProtocolAny
                                                                          direction:NETrafficDirectionAny];
    [rules addObject:[[NEFilterRule alloc]initWithNetworkRule:localHostRuleIpv4 action:NEFilterActionFilterData]];
    
    
    NEFilterSettings *filterSetting = [[NEFilterSettings alloc] initWithRules:rules defaultAction:NEFilterActionAllow];
    
    
    [self applySettings:filterSetting completionHandler:^(NSError * _Nullable error) {
            if (error) {
                NSLog(@"Failed to apply filter settring: %@", error.localizedDescription);
            }
            completionHandler(error);
    }];
}
Maven Sync error:
System Log:
默认	17:35:13.184509+0800	kernel	cfil_inp_log:6179 <CFIL: outbound TCP data dropped for pre-existing un-filtered flow>: [41046 idea] <TCP out so 3bb6402f58a82e37 - flags 0x800840 0x80> lport 63166 fport 29735 laddr 127.0.0.1 faddr 127.0.0.1
默认	17:35:13.184510+0800	kernel	cfil_inp_log:6179 <CFIL: outbound TCP data dropped for pre-existing un-filtered flow>: [41046 idea] <TCP out so d6dde374c8cb613b - flags 0x800840 0x80> lport 63165 fport 29735 laddr 127.0.0.1 faddr 127.0.0.1
默认	17:35:13.529546+0800	kernel	cfil_inp_log:6179 <CFIL: outbound TCP data dropped for pre-existing un-filtered flow>: [41046 idea] <TCP out so cc915e74ba29f8cb - flags 0x800840 0x80> lport 63169 fport 39066 laddr 127.0.0.1 faddr 127.0.0.1
默认	17:35:13.529546+0800	kernel	cfil_inp_log:6179 <CFIL: outbound TCP data dropped for pre-existing un-filtered flow>: [41046 idea] <TCP out so 2e15c3e54ebcc45 - flags 0x800840 0x80> lport 63168 fport 39066 laddr 127.0.0.1 faddr 127.0.0.1
默认	17:35:14.046094+0800	kernel	cfil_inp_log:6179 <CFIL: outbound TCP data dropped for pre-existing un-filtered flow>: [41046 idea] <TCP out so 71f6d3a53472131f - flags 0x800840 0x80> lport 63172 fport 53241 laddr 127.0.0.1 faddr 127.0.0.1
默认	17:35:14.046145+0800	kernel	cfil_inp_log:6179 <CFIL: outbound TCP data dropped for pre-existing un-filtered flow>: [41046 idea] <TCP out so c88a367c9717185b - flags 0x800840 0x80> lport 63171 fport 53241 laddr 127.0.0.1 faddr 127.0.0.1
Environment Details:
Operating System: macOS 15.5 (Sequoia)
IDE: IntelliJ IDEA 2025.1
Relevant Technology: NEFilterDataProvider (Network Extension)
I have found reports of similar problems online:
https://discussionschinese.apple.com/thread/255270330?sortBy=rank
https://blog.csdn.net/weixin_42339552/article/details/137402307
They all seem to be caused by network extension。
                    
                  
                
                    
                      Configure the App ID in the Apple Developer Portal. In the Network Extensions section, the Packet Tunnel section is not displayed, as shown in the figure below
How to proceed with the configuration of App ID. In the Network Extensions section: Display the Packet Tunnel section
Our account is a China region account
                    
                  
                
                    
                      Configure the App ID in the Apple Developer Portal. In the Network Extensions section, the Packet Tunnel section is not displayed
How to proceed with the configuration of App ID. In the Network Extensions section: Display the Packet Tunnel section
Our account is a China region account
                    
                  
                
                    
                      I'm working with Apple's SimpleURLFilter sample project and consistently encountering an error when trying to implement the URL filter.
Here are the details:
Setup:
Downloaded the official SimpleURLFilter sample project from Apple
Set the developer team for both targets (main app and extension)
Built and ran the PIR server on my laptop using Docker as per the sample instructions
Built the iOS project on my iPhone running iOS 26.0.1
Server is accessible at my Mac's IP address on port 8080
Configuration:
PIR Server URL: http://[my-mac-ip]:8080
Authentication Token: AAAA (as specified in service-config.json)
Privacy Pass Issuer URL: (left empty)
Fail Closed: enabled
Code Changes:
The only modifications I made were:
Updated bundle identifiers to include my team identifier
Updated PIR server's service-config.json to match: com.example.apple-samplecode.SimpleURLFilter[TEAM_ID].url.filtering
Modified URLFilterControlProvider.swift:
Added existingPrefilterTag: String? parameter to fetchPrefilter() method
Added tag: "bloom_filter" parameter to NEURLFilterPrefilter initializer
Issue:
After configuring the filter and entering my passcode in Settings, I consistently see:
Received filter status change: <FilterStatus: 'starting'>
Received filter status change: <FilterStatus: 'stopped' errorMessage: 'The operation couldn't be completed. (NetworkExtension.NEURLFilterManager.Error error 9.)'>
Questions:
What does NEURLFilterManager.Error error 9 specifically indicate?
Could the URLFilterControlProvider modifications be causing this issue?
Are there debugging steps to get more detailed error information?
Any guidance would be appreciated!
                    
                  
                
                    
                      I'm developing an iOS application in Swift that performs API calls using URLSession.shared. The requests work correctly when the app is in the foreground. However, when the app transitions to the background (for example, when the user switches to another app), the ongoing API calls are either paused or do not complete as expected.
What I’ve tried:
Using URLSession.shared.dataTask(with:) to initiate the API requests
Observing application lifecycle events like applicationDidEnterBackground, but haven't found a reliable solution to allow requests to complete when backgrounded
Goal:
I want certain API requests to continue running or be allowed to complete even if the app enters the background.
Question:
What is the correct approach to allow API calls to continue running or complete when the app moves to the background?
Should I be using a background URLSessionConfiguration instead of URLSession.shared?
If so, how should it be properly configured and used in this scenario?
                    
                  
                
                    
                      I'm developing an iOS application in Swift that performs API calls using URLSession.shared. The requests work correctly when the app is in the foreground. However, when the app transitions to the background (for example, when the user switches to another app), the ongoing API calls are either paused or do not complete as expected.
What I’ve tried:
Using URLSession.shared.dataTask(with:) to initiate the API requests
Observing application lifecycle events like applicationDidEnterBackground, but haven't found a reliable solution to allow requests to complete when backgrounded
Goal:
I want certain API requests to continue running or be allowed to complete even if the app enters the background.
Question:
What is the correct approach to allow API calls to continue running or complete when the app moves to the background?
Should I be using a background URLSessionConfiguration instead of URLSession.shared?
If so, how should it be properly configured and used in this scenario?
                    
                  
                
                    
                      I have some confusion around the usage of DeviceDiscoveryUI. The documentation suggests that it is available only on TVOS. But with the recent announcement of WifiAware, it has been used in iOS devices as well. Within DeviceDiscoveryUI, the DevicePicker or the DevicePairingView documentation seems to be available with iOS. Is this just a documentation mistake?
Followup - Can I use DeviceDiscoveryUI's DevicePicker/ DevicePairingView to discover devices through Bonjour and then establish a connection through Network framework?
                    
                  
                
                    
                      I observed the following crash:
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               0
Date/Time:             2025-10-07 13:48:29.082
OS Version:            macOS 15.6 (24G84)
Report Version:        12
Anonymous UUID:        8B651788-4B2E-7869-516B-1DA0D60F3744
Crashed Thread: 3  Dispatch queue: NEFlow queue
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000054
...
Thread 3 Crashed: Dispatch queue: NEFlow queue
0   libdispatch.dylib                 0x000000019af6da34 dispatch_async + 192
1   libnetworkextension.dylib         0x00000001b0cf8580 __flow_startup_block_invoke.216 + 124
2   com.apple.NetworkExtension        0x00000001adf97da8 __88-[NEExtensionAppProxyProviderContext setInitialFlowDivertControlSocket:extraValidation:]_block_invoke.90 + 860
3   libnetworkextension.dylib         0x00000001b0cf8140 __flow_startup_block_invoke.214 + 172
4   libdispatch.dylib                 0x000000019af67b2c _dispatch_call_block_and_release + 32
5   libdispatch.dylib                 0x000000019af8185c _dispatch_client_callout + 16
6   libdispatch.dylib                 0x000000019af70350 _dispatch_lane_serial_drain + 740
7   libdispatch.dylib                 0x000000019af70e2c _dispatch_lane_invoke + 388
8   libdispatch.dylib                 0x000000019af7b264 _dispatch_root_queue_drain_deferred_wlh + 292
9   libdispatch.dylib                 0x000000019af7aae8 _dispatch_workloop_worker_thread + 540
10  libsystem_pthread.dylib           0x000000019b11be64 _pthread_wqthread + 292
11  libsystem_pthread.dylib           0x000000019b11ab74 start_wqthread + 8
...
It appears that the crash is caused by the flow director queue becoming NULL when dispatch_async is called (accessing address 0x0000000000000054). Meanwhile, my transparent proxy was still running.
I'm wondering if this is a known issue or if anyone else has encountered the same problem. @eskimo
                    
                  
                
                    
                      My external device can generate a fixed Wi-Fi network. When I connect to this Wi-Fi using my iPhone 17 Pro Max (iOS version 26.0.1), and my app tries to establish a connection using the following method, this method returns -1
int connect(int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS_C(connect);
However, when I use other phones, such as iPhone 12, iPhone 8, iPhone 11, etc., to connect to this external device, the above method always returns successfully, with the parameters passed to the method remaining the same.
I also tried resetting the network settings on the iPhone 17 Pro Max (iOS version 26.0.1), but it still cannot establish a connection.
                    
                  
                
              
                
              
              
                
                Topic:
                  
	
		App & System Services
  	
                
                
                SubTopic:
                  
                    
	
		Networking
		
  	
                  
                
              
              
              
  
  
    
    
  
  
              
                
                
              
            
          
                    
                      We have a VPN application and we were required by the review team to change the text in the "Add VPN Configuration" dialog due to guideline 5.4.0 Legal: VPN Apps:
make it clear to the user what data is being collected and how it will be used in the permission request.
It appears that showing that information in the view preceding the VPN configuration adding attempt is no longer enough.
However we haven't found any changes in the API allowing to change the text in the mentioned dialog.
Is there a technical possibility to change the text in the add VPN configuration dialog?
Thank you
                    
                  
                
                    
                      I am pretty sure iOS 13.4 (beta and later) did support Coded PHY (Long Range). Tested devices are iPhone SE2 and iPhone 11 Pro.
However, it seems iOS 14 removed the support of Coded PHY, accidentally or on purpose, I don't know?
The same PHY update request returns "1M PHY" in iOS 14, but "Coded PHY" in iOS 13 (13.4 beta and later).
Anyone knows why?
Samson
                    
                  
                
                    
                      Hello,
As I've been tinkering with the new URL filtering API I've been struggling to create bloom filters. I have been referencing this developer's post heavily:
https://developer.apple.com/forums/thread/791352?answerId=851527022#851527022
He suggests that the expected FNV-1a implementation has the multiply and xor operations inverted, while an Apple engineer suggests that this will be updated on the offical iOS26 release (which has already happened). What is the "correct" FNV-1a implementation?
In this sample project (which is from july, so pre-release ios 26):
https://developer.apple.com/documentation/networkextension/filtering-traffic-by-url
Is the included bloom filter data correct? I can only assume the other developer used this as a reference to then conclude that multiplying and xor-ing should be inverted, so I'm really not sure if this bloom filter bitVectorData here is trustworthy.
Is there any reference implementation for this hashing procedure? How do we generate a bloom filter properly and know that it is correct?