[launchd-dev] LaunchAgent best practice for turning "off" sockets
Mitchell Laurren-Ring
lists at rynosoft.com
Wed Mar 30 14:26:03 PDT 2016
How about ignoring the socket when I’m adding my sockets to the kevent queue? Obviously, my Bonjour socket will still be visible but won’t respond to events but we control the client side, too. Is there any drawback to that approach?
/Mick
> On Mar 29, 2016, at 00:34, Quinn The Eskimo! <eskimo1 at apple.com> wrote:
>
>
> On 25 Mar 2016, at 21:24, Mitchell Laurren-Ring <lists at rynosoft.com> wrote:
>
>> I have a LaunchAgent that is configured via Sockets in the plist to listen on several IP+port number endpoints. I would like to make it possible to turn "off" some listening endpoints while the LaunchAgent is running.
>
> There isn't a good way to do this. launchd jobs are atomic; their services are either all on or all off. You could separate each of your services into a separate launchd job, but even that's a bit tricky.
>
> If you're an /agent/ then the job exists in two places:
>
> A. it's statically defined by the property list in /Library/LaunchAgents
>
> B. each per-user launchd [1] has an in-memory representation of the job
>
> Modifying A requires privileges. Modifying B requires privileges for other user's launchd's, but does not require privileges for your launchd. So, if you split your services into separate jobs then you can load and unload those jobs into the current user's launchd context [2] at will. The gotcha being that this only take effect in memory. The next time the user logs out and then logs back in, the settings from A apply.
>
> Share and Enjoy
> --
> Quinn "The Eskimo!" <http://www.apple.com/developer/>
> Apple Developer Relations, Developer Technical Support, Core OS/Hardware
>
> [1] Prior to 10.10 these were separate instances of launchd running. Since 10.10 there's only one launchd process but I still find it helpful to think in the older terms.
>
> [2] Keep in mind that "current user" means "the user in whose context your launchd agent is running" not "currently logged in user".
>
> _______________________________________________
> launchd-dev mailing list
> launchd-dev at lists.macosforge.org
> https://lists.macosforge.org/mailman/listinfo/launchd-dev
More information about the launchd-dev
mailing list