diff options
| author | NIIBE Yutaka <[email protected]> | 2017-01-26 13:02:41 +0000 |
|---|---|---|
| committer | NIIBE Yutaka <[email protected]> | 2017-01-26 13:02:41 +0000 |
| commit | 881dcdfd84ebad36bff20c895e629025bed9d94e (patch) | |
| tree | 09cd09205463d53951090ea06a943172770c4c00 /scd/apdu.c | |
| parent | scd: Fix APP reference counting. (diff) | |
| download | gnupg-881dcdfd84ebad36bff20c895e629025bed9d94e.tar.gz gnupg-881dcdfd84ebad36bff20c895e629025bed9d94e.zip | |
scd: Only submit apdu_get_status when needed.
* scd/apdu.c (apdu_dev_list_finish): Return Boolean value if
all device support INTERRUPT transfer.
* scd/ccid-driver.c (ccid_dev_scan_finish): Likewise.
* scd/app.c (app_new_register): Fix initial value of card_status.
(select_application): Call update_fdset_for_usb.
(scd_update_reader_status_file): Ditto.
* scd/scdaemon.c (update_fdset_for_usb, need_tick): New.
(handle_connections): Call handle_tick when select returns.
Let select watch USB file descriptors, too.
Call libusb_handle_events_timeout_completed for INTERRUPT transfer.
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/apdu.c')
| -rw-r--r-- | scd/apdu.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/scd/apdu.c b/scd/apdu.c index 38ebd2be5..f88d97035 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -2970,15 +2970,22 @@ apdu_dev_list_start (const char *portstr, struct dev_list **l_p) return 0; } -void +int apdu_dev_list_finish (struct dev_list *dl) { + int all_have_intr_endp; + #ifdef HAVE_LIBUSB if (dl->ccid_table) - ccid_dev_scan_finish (dl->ccid_table, dl->idx_max); + all_have_intr_endp = ccid_dev_scan_finish (dl->ccid_table, dl->idx_max); + else + all_have_intr_endp = 0; +#else + all_have_intr_endp = 0; #endif xfree (dl); npth_mutex_unlock (&reader_table_lock); + return all_have_intr_endp; } |
