diff --git a/virtualsmartcard/src/vpicc/vicc.in b/virtualsmartcard/src/vpicc/vicc.in index f360960..b016998 100644 --- a/virtualsmartcard/src/vpicc/vicc.in +++ b/virtualsmartcard/src/vpicc/vicc.in @@ -157,4 +157,7 @@ vicc = VirtualICC(args.datasetfile, args.type, hostname, args.port, ef_cardsecurity=ef_cardsecurity_data, ca_key=ca_key_data, cvca=cvca, disable_checks=args.disable_ta_checks, esign_ca_cert=esign_ca_cert, esign_cert=esign_cert, logginglevel=logginglevel) -vicc.run() +try: + vicc.run() +except KeyboardInterrupt: + pass diff --git a/virtualsmartcard/src/vpicc/virtualsmartcard/VirtualSmartcard.py b/virtualsmartcard/src/vpicc/virtualsmartcard/VirtualSmartcard.py index a09bae8..a8c6377 100644 --- a/virtualsmartcard/src/vpicc/virtualsmartcard/VirtualSmartcard.py +++ b/virtualsmartcard/src/vpicc/virtualsmartcard/VirtualSmartcard.py @@ -18,8 +18,8 @@ # import atexit +import errno import logging -import signal import socket import struct import sys @@ -475,14 +475,8 @@ class VirtualICC(object): logging.info("Connected to virtual PCD at %s:%u", host, port) - signal.signal(signal.SIGINT, self.signalHandler) atexit.register(self.stop) - def signalHandler(self, sig=None, frame=None): - """Basically this signal handler just surpresses a traceback from being - printed when the user presses crtl-c""" - sys.exit() - @staticmethod def connectToPort(host, port): """ @@ -509,7 +503,13 @@ class VirtualICC(object): def __recvFromVPICC(self): """ Receive a message from the vpcd """ # receive message size - sizestr = self.sock.recv(_Csizeof_short) + while True: + try: + sizestr = self.sock.recv(_Csizeof_short) + except socket.error as e: + if e.errno == errno.EINTR: + continue + break if len(sizestr) == 0: logging.info("Virtual PCD shut down") raise socket.error @@ -517,7 +517,13 @@ class VirtualICC(object): # receive and return message if size: - msg = self.sock.recv(size) + while True: + try: + msg = self.sock.recv(size) + except socket.error as e: + if e.errno == errno.EINTR: + continue + break if len(msg) == 0: logging.info("Virtual PCD shut down") raise socket.error