reversed connection mode: allow vpcd to reconnect
This commit is contained in:
@@ -670,6 +670,7 @@ class VirtualICC(object):
|
|||||||
|
|
||||||
#Connect to the VPCD
|
#Connect to the VPCD
|
||||||
self.host = host
|
self.host = host
|
||||||
|
self.port = port
|
||||||
if host:
|
if host:
|
||||||
# use normal connection mode
|
# use normal connection mode
|
||||||
try:
|
try:
|
||||||
@@ -731,7 +732,7 @@ class VirtualICC(object):
|
|||||||
sizestr = self.sock.recv(_Csizeof_short)
|
sizestr = self.sock.recv(_Csizeof_short)
|
||||||
if len(sizestr) == 0:
|
if len(sizestr) == 0:
|
||||||
logging.info("Virtual PCD shut down")
|
logging.info("Virtual PCD shut down")
|
||||||
sys.exit()
|
raise socket.error
|
||||||
size = struct.unpack('!H', sizestr)[0]
|
size = struct.unpack('!H', sizestr)[0]
|
||||||
|
|
||||||
# receive and return message
|
# receive and return message
|
||||||
@@ -739,6 +740,7 @@ class VirtualICC(object):
|
|||||||
msg = self.sock.recv(size)
|
msg = self.sock.recv(size)
|
||||||
if len(msg) == 0:
|
if len(msg) == 0:
|
||||||
logging.info("Virtual PCD shut down")
|
logging.info("Virtual PCD shut down")
|
||||||
|
raise socket.error
|
||||||
else:
|
else:
|
||||||
msg = None
|
msg = None
|
||||||
|
|
||||||
@@ -751,7 +753,16 @@ class VirtualICC(object):
|
|||||||
respsonse APDU back to the vpcd.
|
respsonse APDU back to the vpcd.
|
||||||
"""
|
"""
|
||||||
while True :
|
while True :
|
||||||
|
try:
|
||||||
(size, msg) = self.__recvFromVPICC()
|
(size, msg) = self.__recvFromVPICC()
|
||||||
|
except socket.error as e:
|
||||||
|
if not self.host:
|
||||||
|
logging.info("Waiting for vpcd on port " + str(self.port))
|
||||||
|
(self.sock, address) = self.server_sock.accept()
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
if not size:
|
if not size:
|
||||||
logging.warning("Error in communication protocol (missing size parameter)")
|
logging.warning("Error in communication protocol (missing size parameter)")
|
||||||
elif size == VPCD_CTRL_LEN:
|
elif size == VPCD_CTRL_LEN:
|
||||||
|
|||||||
Reference in New Issue
Block a user