2006-08-30 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Wed, 30 Aug 2006 15:57:17 +0000 (15:57 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Wed, 30 Aug 2006 15:57:17 +0000 (15:57 +0000)
* command.c (do_reset): Delay resetting CTRL->reader_slot until
after update_card_removed invocation.

scd/ChangeLog
scd/command.c

index d6e4423..fec7099 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (do_reset): Delay resetting CTRL->reader_slot until
+       after update_card_removed invocation.
+
 2006-08-28  Marcus Brinkmann  <marcus@g10code.de>
 
        * app-openpgp.c (do_decipher, do_sign): Allow "OPENPGP.2"
index 4629d9e..d0e13b8 100644 (file)
@@ -212,7 +212,6 @@ do_reset (ctrl_t ctrl, int send_reset)
           slot_table[slot].reset_failed = 1;
         }
     }
-  ctrl->reader_slot = -1;
 
   /* If we hold a lock, unlock now. */
   if (locked_session && ctrl->server_local == locked_session)
@@ -229,12 +228,16 @@ do_reset (ctrl_t ctrl, int send_reset)
   if (!pth_mutex_acquire (&status_file_update_lock, 0, NULL))
     {
       log_error ("failed to acquire status_fle_update lock\n");
+      ctrl->reader_slot = -1;
       return;
     }
   update_reader_status_file ();
   update_card_removed (slot, 0);
   if (!pth_mutex_release (&status_file_update_lock))
     log_error ("failed to release status_file_update lock\n");
+
+  /* Do this last, so that update_card_removed does its job.  */
+  ctrl->reader_slot = -1;
 }
 
 \f