[PATCH] [RFC] Enable systemd socket activation
Łukasz Stelmach
l.stelmach at samsung.com
Fri Jun 28 01:02:34 PDT 2013
It was <2013-06-28 pią 07:32>, when Peter Hutterer wrote:
> On Wed, Jun 26, 2013 at 06:18:04PM +0200, Łukasz Stelmach wrote:
>> Receive file descriptors of open sockets from systemd instead of
>> creating them.
>>
>> Signed-off-by: Łukasz Stelmach <l.stelmach at samsung.com>
>> ---
>> Xtrans.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 50 insertions(+)
>>
>> diff --git a/Xtrans.c b/Xtrans.c
>> index 0799f04..a96e901 100644
>> --- a/Xtrans.c
>> +++ b/Xtrans.c
[...]
>> @@ -1040,6 +1047,49 @@ TRANS(MakeAllCOTSServerListeners) (char *port, int *partial, int *count_ret,
>> temp_ciptrs[(*count_ret)++] = ciptr;
>> }
>> #endif
>> +#ifdef HAVE_SYSTEMD
>> + systemd_listen_fds = sd_listen_fds(1);
>> + if (systemd_listen_fds < 0)
>> + {
>> + return -1;
>> + }
>> + else if (sd_listen_fds > 0)
>
> this doesn't look right.
Fixed.
>> + {
>> + for (i = 0; i < systemd_listen_fds; i++)
>> + {
>> + struct sockaddr_storage a;
>> + int ti;
>> + socklen_t al;
>> +
>> + al = sizeof(a);
>> + if (getsockname(i + SD_LISTEN_FDS_START, (struct sockaddr*)&a, &al) < 0)
>> + return -1;
>> +
>> + switch (a.ss_family)
>> + {
>> + case AF_UNIX:
>> + ti = TRANS_SOCKET_UNIX_INDEX;
>> + break;
>> + case AF_INET:
>> + ti = TRANS_SOCKET_INET_INDEX;
>> + break;
>> +#if defined(IPv6) && defined(AF_INET6)
>> + case AF_INET6:
>> + ti = TRANS_SOCKET_INET6_INDEX;
>> + break;
>> +#endif /* IPv6 */
>> + default:
>> + return -1;
>> + }
>> +
>> + if ((ciptr = TRANS(ReopenCOTSServer(ti, i + SD_LISTEN_FDS_START,
>> + getenv("DISPLAY"))))==NULL)
>> + fprintf(stderr, "Got NULL while trying to Reopen socket received
>> from systemd.\n");
>
> lowercase 'reopen'
Fixed.
> (don't have the brain capacity to do a proper review atm, sorry)
Thak you for your comments. I will send v2 when I get some more.
--
Łukasz Stelmach
Samsung R&D Institute Poland
Samsung Electronics
More information about the xorg-devel
mailing list