#ifdef USE_IPC_EPOLL
int events = 0;
+again :
if ((events = epoll_wait(fdPoll, pollEvents, EPOLL_SIZE, -1)) > 0)
{
int i;
}
}
}
+ else
+ {
+ if (errno == EINTR)
+ {
+ char buffer[1024];
+
+ SCARD_DEBUG_ERR("epoll_wait failed [%d], errno [%d], %s", events, errno, strerror_r(errno, buffer, sizeof(buffer)));
+ goto again;
+ }
+ }
#else
if (select(ipcSocket + 1, &fdSetRead, NULL, NULL, NULL) > 0)
{
void ServerResource::unloadSecureElements()
{
- size_t i;
- map<unsigned int, Terminal *>::iterator item;
-
- for (item = mapTerminals.begin(); item != mapTerminals.end(); item++)
+ if (seLoaded == true)
{
- item->second->finalize();
+ size_t i;
+ map<unsigned int, Terminal *>::iterator item;
- IntegerHandle::releaseHandle(item->first);
- }
+ for (item = mapTerminals.begin(); item != mapTerminals.end(); item++)
+ {
+ item->second->finalize();
+
+ IntegerHandle::releaseHandle(item->first);
+ }
- mapTerminals.clear();
+ mapTerminals.clear();
- for (i = 0; i < libraries.size(); i++)
- {
- if (libraries[i] != NULL)
- dlclose(libraries[i]);
- }
+ for (i = 0; i < libraries.size(); i++)
+ {
+ if (libraries[i] != NULL)
+ dlclose(libraries[i]);
+ }
- libraries.clear();
+ libraries.clear();
- seLoaded = false;
+ seLoaded = false;
+ }
}
bool ServerResource::isValidReaderHandle(unsigned int reader)