Files
ios-client/NetbirdNetworkExtension
evgeniyChepelev 072a881a3e Deliver the MDM policy to the network extension through the App Group (#227)
* 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
2026-09-16 16:40:06 +02:00
..
2024-02-28 19:22:16 +01:00