[launchd-dev] Listening socket and fast user switching

Dave Zarzycki zarzycki at apple.com
Thu May 22 12:05:27 PDT 2008


I'm sorry, I made a mistake, it should look like so:

	<key>Sockets</key>
	<dict>
		<key>Listeners</key>
		<dict>
			<key>Bonjour</key>
			<string>MyServiceName</string>
			<key>SockServiceName</key>
			<string>0</string>
		</dict>
	</dict>


On May 22, 2008, at 12:01 PM, Dave Zarzycki wrote:

> Dave,
>
> The Apple way to solve this problem is to use Bonjour with a dynamic
> port assignment. Just use port zero, and set Bonjour to true like so:
>
> 	<key>Sockets</key>
> 	<dict>
> 		<key>Listeners</key>
> 		<dict>
> 			<key>Bonjour</key>
> 			<true/>
> 			<key>SockServiceName</key>
> 			<string>0</string>
> 		</dict>
> 	</dict>
>
> davez
>
>
>
> On May 22, 2008, at 11:38 AM, Dave Dribin wrote:
>
>> Hello,
>>
>> I'm writing a launchd agent that opens a TCP listening socket.
>> Ideally, I'd like launchd to open and listen to the socket via
>> SockServiceName so my agent only gets launched as-needed.
>>
>> The problem is I'd like to listen to the same port (e.g. 12345), no
>> matter which user is logged in.  This is fine when there's only one
>> user logged in, but as soon as fast user switching comes into play,
>> the socket gets an "address already in use" when the second user logs
>> in.
>>
>> This is to be expected, I suppose.  But is there any way to have
>> launchd only listen to the socket when the user is the "active" user,
>> and have it *not* listen when the user gets switched out, due to fast
>> user switching?
>>
>> At first glance the LimitLoadToSessionType looked promising, but it
>> doesn't look like any of those will do that.
>>
>> The solution I'm currently entertaining uses launchd to always launch
>> my agent, and have my agent do the socket listening.  I can then use
>> the user switch notification to close down the listening port when  
>> the
>> session is deactivated and open it when activated.
>>
>> Thanks,
>>
>> -Dave
>>
>> _______________________________________________
>> launchd-dev mailing list
>> launchd-dev at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/launchd-dev
>
> _______________________________________________
> launchd-dev mailing list
> launchd-dev at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/launchd-dev



More information about the launchd-dev mailing list