/[pcsclite]/trunk/PCSC/libmusclecard/src/musclecard.c
ViewVC logotype

Diff of /trunk/PCSC/libmusclecard/src/musclecard.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 80 by corcoran, Mon May 6 23:23:13 2002 UTC revision 99 by corcoran, Wed Jun 5 17:57:33 2002 UTC
# Line 43  static PCSCLITE_MUTEX mcardMutex = PTHRE Line 43  static PCSCLITE_MUTEX mcardMutex = PTHRE
43    
44  static SCARDCONTEXT localHContext = 0;  static SCARDCONTEXT localHContext = 0;
45  static ULONG blockingContext      = MSC_BLOCKSTATUS_RESUME;  static ULONG blockingContext      = MSC_BLOCKSTATUS_RESUME;
46    static pthread_t callbackThread;
47    
48  /*  /*
49   * internal function   * internal function
50   */   */
# Line 396  MSC_RV MSCEstablishConnection(MSCLPToken Line 398  MSC_RV MSCEstablishConnection(MSCLPToken
398                  (strcmp(slotName, tokenStruct->slotName) != 0) ||                  (strcmp(slotName, tokenStruct->slotName) != 0) ||
399                  (memcmp(tokenId, tokenStruct->tokenId, tokenIdLength) != 0))                  (memcmp(tokenId, tokenStruct->tokenId, tokenIdLength) != 0))
400          {          {
401                    DebugLogA("Internal inconsistent values, ID, slotName\n");
402                  SCardDisconnect(pConnection->hCard, SCARD_LEAVE_CARD);                  SCardDisconnect(pConnection->hCard, SCARD_LEAVE_CARD);
403                  pConnection->hCard = 0;                  pConnection->hCard = 0;
404                  return MSC_INCONSISTENT_STATUS;                  return MSC_INCONSISTENT_STATUS;
# Line 459  MSC_RV MSCEstablishConnection(MSCLPToken Line 461  MSC_RV MSCEstablishConnection(MSCLPToken
461    
462          if (rv != MSC_SUCCESS)          if (rv != MSC_SUCCESS)
463          {          {
464                  SCardDisconnect(pConnection->hCard, SCARD_LEAVE_CARD);                  SCardDisconnect(pConnection->hCard, SCARD_LEAVE_CARD);
465                  if (pConnection->tokenLibHandle != 0)                  if (pConnection->tokenLibHandle != 0)
466                  {                  {
467                          TPUnloadToken(pConnection);                         TPUnloadToken(pConnection);
468                          pConnection->tokenLibHandle = 0;                         pConnection->tokenLibHandle = 0;
469                  }                  }
470                  pConnection->hCard = 0;                  pConnection->hCard = 0;
471          }          }
472    
473          if ((applicationName == 0) || (nameSize == 0))          if (sharingMode != MSC_SHARE_DIRECT)
         {  
                 /*  
                  * Use the default AID given by the Info.plist  
                  */  
                 rv = (*libPL_MSCIdentifyToken) (pConnection);  
         } else  
474          {          {
475                  pConnection->tokenInfo.tokenAppLen = nameSize;  
476                  memcpy(pConnection->tokenInfo.tokenApp, applicationName, nameSize);                  if ((applicationName == 0) || (nameSize == 0))
477                  rv = (*libPL_MSCIdentifyToken) (pConnection);                  {
478          }                          /*
479                             * Use the default AID given by the Info.plist
480                             */
481    
482                             rv = (*libPL_MSCIdentifyToken) (pConnection);
483                    } else
484                    {
485                            pConnection->tokenInfo.tokenAppLen = nameSize;
486                            memcpy(pConnection->tokenInfo.tokenApp,
487                                   applicationName, nameSize);
488                            rv = (*libPL_MSCIdentifyToken) (pConnection);
489                    }
490    
491  #ifdef MSC_DEBUG  #ifdef MSC_DEBUG
492          DebugLogC("MSCIdentifyToken returns %s\n", msc_error(rv));          DebugLogC("MSCIdentifyToken returns %s\n", msc_error(rv));
493  #endif  #endif
494    
         if (sharingMode != MSC_SHARE_DIRECT)  
         {  
495                  if (rv != MSC_SUCCESS)                  if (rv != MSC_SUCCESS)
496                  {                  {
497                          SCardDisconnect(pConnection->hCard, SCARD_LEAVE_CARD);                          SCardDisconnect(pConnection->hCard, SCARD_LEAVE_CARD);
# Line 791  MSC_RV MSCCallbackForTokenEvent(MSCLPTok Line 796  MSC_RV MSCCallbackForTokenEvent(MSCLPTok
796  {  {
797          MSCLPEventWaitInfo evlist;          MSCLPEventWaitInfo evlist;
798          MSCULong32 curToken;          MSCULong32 curToken;
         pthread_t newThread;  
799    
800          /*          /*
801           * Create the event wait list           * Create the event wait list
# Line 835  MSC_RV MSCCallbackForTokenEvent(MSCLPTok Line 839  MSC_RV MSCCallbackForTokenEvent(MSCLPTok
839          }          }
840          mscUnLockThread();          mscUnLockThread();
841    
842          if (pthread_create(&newThread, NULL, _MSCEventThread, (void *) evlist))          if (pthread_create(&callbackThread, NULL, _MSCEventThread,
843                               (void *) evlist))
844          {          {
845                  return MSC_INTERNAL_ERROR;                  return MSC_INTERNAL_ERROR;
846          }          }
# Line 854  MSC_RV MSCCallbackCancelEvent() Line 859  MSC_RV MSCCallbackCancelEvent()
859                  blockingContext = MSC_BLOCKSTATUS_CANCELLING;                  blockingContext = MSC_BLOCKSTATUS_CANCELLING;
860                  rv = MSCCancelEventWait();                  rv = MSCCancelEventWait();
861    
862                    pthread_join(&callbackThread, 0);
863    
864                    /*
865                  while (1) {                  while (1) {
866                          if (blockingContext == MSC_BLOCKSTATUS_RESUME)                          if (blockingContext == MSC_BLOCKSTATUS_RESUME)
867                          {                          {
868                                  break;                                  break;
869                          }                          }
870                  }                  }
871                    */
872          }          }
873    
874        return MSC_SUCCESS;        return MSC_SUCCESS;

Legend:
Removed from v.80  
changed lines
  Added in v.99

  ViewVC Help
Powered by ViewVC 1.1.5