Hello Kalev,

I am revewing your systemd patches.

Is this patch functionally needed or is it just to remove dead code
(when systemd is used)?

If I am correct systemd will create the socket itself (before pcscd is
started). So the function SCardCheckDaemonAvailability() will return
SCARD_S_SUCCESS and the client library should not fork and exec the
daemon.
Am I right?

Thanks

2011/6/25 Kalev Lember <[email protected]>:
> This option disables pcscd autostarting code in the libpcsclite library.
>
> With systemd socket activation in place, pcscd can be started
> automatically by systemd when a request arrives on the IPC socket. That
> makes starting the service as a fork from user library unnecessary.
> ---
>  PCSC/configure.in        |   11 +++++++++++
>  PCSC/src/winscard_clnt.c |    6 ++++++
>  2 files changed, 17 insertions(+), 0 deletions(-)
>
> diff --git a/PCSC/configure.in b/PCSC/configure.in
> index 831ee88..97e3360 100644
> --- a/PCSC/configure.in
> +++ b/PCSC/configure.in
> @@ -274,6 +274,16 @@ if test x$use_libusb = xyes; then
>   PCSCLITE_FEATURES="${PCSCLITE_FEATURES} libusb"
>  fi
>
> +# --disable-autostart
> +AC_ARG_ENABLE(autostart,
> +  AC_HELP_STRING([--disable-autostart], [disable pcscd automatic startup]),
> +  [ use_autostart="${enableval}" ], [ use_autostart="yes" ] )
> +
> +if test x$use_autostart != xno; then
> +  AC_DEFINE(ENABLE_AUTOSTART, 1, [Enable pcscd automatic startup])
> +  PCSCLITE_FEATURES="${PCSCLITE_FEATURES} autostart"
> +fi
> +
>  # --enable-embedded
>  AC_ARG_ENABLE(embedded,
>   AC_HELP_STRING([--enable-embedded], [limit RAM and CPU ressources by 
> disabling features (log)]),
> @@ -381,6 +391,7 @@ ATR parsing messages: ${debugatr}
>  ipcdir:               ${ipcdir}
>  use serial:           ${use_serial}
>  use usb:              ${use_usb}
> +use autostart:        ${use_autostart}
>
>  PCSCLITE_FEATURES:    ${PCSCLITE_FEATURES}
>
> diff --git a/PCSC/src/winscard_clnt.c b/PCSC/src/winscard_clnt.c
> index 92c8481..982be01 100644
> --- a/PCSC/src/winscard_clnt.c
> +++ b/PCSC/src/winscard_clnt.c
> @@ -444,8 +444,10 @@ LONG SCardEstablishContext(DWORD dwScope, LPCVOID 
> pvReserved1,
>        LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
>  {
>        LONG rv;
> +#ifdef ENABLE_AUTOSTART
>        int daemon_launched = FALSE;
>        int retries = 0;
> +#endif
>
>        API_TRACE_IN("%ld, %p, %p", dwScope, pvReserved1, pvReserved2)
>        PROFILE_START
> @@ -457,6 +459,7 @@ again:
>                /* we reconnected to a daemon or we got called from a forked 
> child */
>                rv = SCardCheckDaemonAvailability();
>
> +#ifdef ENABLE_AUTOSTART
>        if (SCARD_E_NO_SERVICE == rv)
>        {
>  launch:
> @@ -517,6 +520,7 @@ launch:
>                        goto again;
>                }
>        }
> +#endif
>
>        if (rv != SCARD_S_SUCCESS)
>                goto end;
> @@ -526,6 +530,7 @@ launch:
>                pvReserved2, phContext);
>        (void)SCardUnlockThread();
>
> +#ifdef ENABLE_AUTOSTART
>        /* SCardEstablishContextTH may fail if the previous pcscd crashed
>         * without cleaning /var/run/pcscd/pcscd.comm */
>        if (SCARD_E_NO_SERVICE == rv)
> @@ -534,6 +539,7 @@ launch:
>                if (retries <= 1)
>                        goto launch;
>        }
> +#endif
>
>  end:
>        PROFILE_END(rv)
> --
> 1.7.5.4
>
> _______________________________________________
> Muscle mailing list
> [email protected]
> http://lists.drizzle.com/mailman/listinfo/muscle
>



-- 
 Dr. Ludovic Rousseau

_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle

Reply via email to