<div dir="ltr">Ok so I built it from source and have some logs jamed in as set below. Looks like somehow I am returning 1 in dwSize and thought I was returning 8.<div><br></div><div><div>out/ifd_jni/ifd_entry.c-callIFDHGetCapabilities()-377: TAG_IFD_POLLING_THREAD_WITH_TIMEOUT</div><div>out/ifd_jni/ifd_entry.c-callIFDHGetCapabilities()-382: requested size: 8</div><div>out/ifd_jni/ifd_entry.c-callIFDHGetCapabilities()-386: Enabling poll fn pointer: 0x7f8f91c11f78 - 0x7f8f91c11f78 - 8</div><div>out/ifd_jni/ifd_entry.c-IFDHGetCapabilities()-674: Exit: 0</div><div>00344413 readerfactory.c:347:RFAddReader() Result code 0</div><div>00000009 readerfactory.c:348:RFAddReader() Result dwsize 1</div><div>00000002 readerfactory.c:349:RFAddReader() Result fct 8</div><div>00000002 readerfactory.c:352:RFAddReader() Using the pcscd polling thread</div></div><div><br></div><div><br></div><div><div>$ svn diff</div><div>Index: src/readerfactory.c</div><div>===================================================================</div><div>--- src/readerfactory.c<span class="" style="white-space:pre"> </span>(revision 7097)</div><div>+++ src/readerfactory.c<span class="" style="white-space:pre"> </span>(working copy)</div><div>@@ -344,6 +344,9 @@</div><div> </div><div> <span class="" style="white-space:pre"> </span>rv = IFDGetCapabilities(sReadersContexts[dwContext],</div><div> <span class="" style="white-space:pre"> </span>TAG_IFD_POLLING_THREAD_WITH_TIMEOUT, &dwGetSize, (PUCHAR)&fct);</div><div>+<span class="" style="white-space:pre"> </span>Log2(PCSC_LOG_INFO, "Result code %ld", rv);</div><div>+<span class="" style="white-space:pre"> </span>Log2(PCSC_LOG_INFO, "Result dwsize %ld", dwGetSize);</div><div>+<span class="" style="white-space:pre"> </span>Log2(PCSC_LOG_INFO, "Result fct %ld", sizeof(fct));</div><div> <span class="" style="white-space:pre"> </span>if ((rv != SCARD_S_SUCCESS) || (dwGetSize != sizeof(fct)))</div><div> <span class="" style="white-space:pre"> </span>{</div><div> <span class="" style="white-space:pre"> </span>Log1(PCSC_LOG_INFO, "Using the pcscd polling thread");</div><div>@@ -510,6 +513,7 @@</div><div> </div><div> <span class="" style="white-space:pre"> </span>rv = IFDGetCapabilities((sReadersContexts[dwContextB]),</div><div> <span class="" style="white-space:pre"> </span>TAG_IFD_POLLING_THREAD_WITH_TIMEOUT, &dwGetSize, (PUCHAR)&fct);</div><div>+<span class="" style="white-space:pre"> </span>Log2(PCSC_LOG_INFO, "Result 1 %ld", rv);</div><div> <span class="" style="white-space:pre"> </span>if ((rv != SCARD_S_SUCCESS) || (dwGetSize != sizeof(fct)))</div><div> <span class="" style="white-space:pre"> </span>{</div><div> <span class="" style="white-space:pre"> </span>Log1(PCSC_LOG_INFO, "Using the pcscd polling thread");</div></div><div><br></div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 3, 2015 at 5:35 PM, William Roberts <span dir="ltr"><<a href="mailto:bill.c.roberts@gmail.com" target="_blank">bill.c.roberts@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>I have pcscd version 1.7.4 installed on Ubuntu. I am writing an IFD that implements</div><div>TAG_IFD_POOLING_THREAD_WITH_TIMEOUT<br></div><div><br></div><div>I added some debug logs, as seen below, and I still see the pcscd daemon printing "Using the pcscd polling thread"</div><div><br></div><div>I return IFD_SUCCESS, and set *Length = sizeof(fn*) which is 8. I looked at the source code, and it appears that it checks the response value and *Length. Response should be SCARD_SUCCESS and the *Length should be 8. However, it doesn't seem to take that branch. I see it gets called twice in readerfactory.c and both code blocks are similar. Any ideas?</div><div><br></div><div><br></div><div><div>out/ifd_jni/ifd_entry.c-callIFDHGetCapabilities()-377: TAG_IFD_POLLING_THREAD_WITH_TIMEOUT</div><div>out/ifd_jni/ifd_entry.c-callIFDHGetCapabilities()-382: requested size: 8</div><div>out/ifd_jni/ifd_entry.c-callIFDHGetCapabilities()-386: Enabling poll fn pointer: 0x7f73c7568f78 - 0x7f73c7568f78 - 8</div><div>out/ifd_jni/ifd_entry.c-IFDHGetCapabilities()-674: Exit: 0</div><div>00255688 readerfactory.c:290:RFAddReader() Using the pcscd polling thread</div><div>out/ifd_jni/ifd_entry.c-IFDHICCPresence()-725: Enter: Lun: 0</div></div><div>TAG</div><div><br></div><div>$ pcscd -v</div><div>pcsc-lite version 1.7.4.</div><div>Copyright (C) 1999-2002 by David Corcoran <<a href="mailto:corcoran@linuxnet.com" target="_blank">corcoran@linuxnet.com</a>>.</div><div>Copyright (C) 2001-2011 by Ludovic Rousseau <<a href="mailto:ludovic.rousseau@free.fr" target="_blank">ludovic.rousseau@free.fr</a>>.</div><div>Copyright (C) 2003-2004 by Damien Sauveron <<a href="mailto:sauveron@labri.fr" target="_blank">sauveron@labri.fr</a>>.</div><div>Report bugs to <<a href="mailto:muscle@lists.musclecard.com" target="_blank">muscle@lists.musclecard.com</a>>.</div><div>Enabled features: Linux x86_64-pc-linux-gnu serial usb libudev usbdropdir=/usr/lib/pcsc/drivers ipcdir=/var/run/pcscd configdir=/etc/reader.conf.d</div><span class=""><font color="#888888"><div><br></div><div><br></div><div><br></div>-- <br><div>Respectfully,<br><br>William C Roberts<br><br></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Respectfully,<br><br>William C Roberts<br><br></div>
</div></div></div>