mirror of
https://github.com/netbirdio/ios-client.git
synced 2026-09-23 09:28:33 -07:00
* Gate tvOS writes and bound the MDM restart retry tvOS never reached CheckMDMConflicts: commit() there returns true without consulting anything, and settings go straight to the config JSON, so a managed field stayed writable while iOS rejected it. The gate belongs in the setters — by commit() time the write has already happened — and it phrases the refusal the way Go does, so both platforms say the same thing. The refusal text was written in three places while the key list Go puts in the error was thrown away. One constant now, and the wrapped conflicts are parsed out so the user learns which setting was refused. pendingMDMRestart was written both synchronously from stopObservingMDMConfigChanges and from inside a monitorQueue block; it now sits behind tearDownLock with the rest of the lifecycle state. The deferred retry rescheduled itself indefinitely. Cap it at 15 attempts — thirty seconds, the restart pipeline's own timeout — then log and stop, since waiting longer only hides a wedged pipeline. * Use one policy snapshot per tvOS write and drop the duplicate start latch * eliver the MDM policy to the network extension through the App Group * Update ConfigurationProvider.swift * Derive the MDM retry budget from the watchdogs it waits on