Changeset - 922291d72c0f
[Not reviewed]
default
0 1 0
Laman - 7 years ago 2018-02-19 22:45:11

bugfix: server recovers from a failed ssl connection
1 file changed with 6 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/server.py
Show inline comments
 
@@ -12,13 +12,16 @@ from datafile import DataFile
 

	
 
class Connection(BaseConnection):
 
	def __init__(self,serverSocket,sslContext):
 
		super().__init__()
 

	
 
		sock, address = serverSocket.accept()
 
		self._socket=sslContext.wrap_socket(sock,server_side=True)
 
		try: self._socket=sslContext.wrap_socket(sock,server_side=True)
 
		except ssl.SSLError as e:
 
			log.warning("Failed to establish an SSL connection from {0}.".format(sock.getpeername()))
 
			raise e
 

	
 
		log.info('Connected by {0}'.format(address))
 
		self.createNetworkers()
 

	
 

	
 
class Miniserver:
 
@@ -35,13 +38,14 @@ class Miniserver:
 
		self._ss.listen(1)
 

	
 
	def serve(self):
 
		p=None
 
		with self._ss:
 
			while True:
 
				connection=Connection(self._ss,self._ssl)
 
				try: connection=Connection(self._ss,self._ssl)
 
				except ssl.SSLError: continue
 
				if p and p.is_alive():
 
					with connection as c:
 
						c[0].readMsg()
 
						c[1].writeMsg({"command":"deny","status":status.locked})
 
					continue
 
				p=multiprocessing.Process(target=Server.run,args=(connection,self._filename,self._treeFile))
0 comments (0 inline, 0 general)