View | Details | Raw Unified | Return to bug 50583
Collapse All | Expand All

(-)management/univention-management-console/src/univention/management/console/protocol/server.py (-8 / +10 lines)
 Lines 36-41   Defines the basic class for an UMC server. Link Here 
36
"""
36
"""
37
37
38
import os
38
import os
39
import gc
39
import fcntl
40
import fcntl
40
import socket
41
import socket
41
import resource
42
import resource
 Lines 80-86   class MagicBucket(object): Link Here 
80
		"""
81
		"""
81
		CORE.info('Established connection: %s' % client)
82
		CORE.info('Established connection: %s' % client)
82
		state = State(client, socket)
83
		state = State(client, socket)
83
		state.session.signal_connect('success', notifier.Callback(self._response, state))
84
		state.callback = notifier.Callback(self._response, state)
85
		state.session.signal_connect('success', state.callback)
84
		self.__states[socket] = state
86
		self.__states[socket] = state
85
		notifier.socket_add(socket, self._receive)
87
		notifier.socket_add(socket, self._receive)
86
		self._timeout_connection(state)
88
		self._timeout_connection(state)
 Lines 102-109   class MagicBucket(object): Link Here 
102
		# remove all sockets
104
		# remove all sockets
103
		for sock in list(self.__states.keys()):
105
		for sock in list(self.__states.keys()):
104
			CORE.info('Shutting down connection %s' % sock)
106
			CORE.info('Shutting down connection %s' % sock)
105
			self.__states.pop(sock).session.shutdown()
107
			self._cleanup(sock)
106
			notifier.socket_remove(sock)
107
108
108
	def _receive(self, socket):
109
	def _receive(self, socket):
109
		"""Signal callback: Handles incoming data. Processes SSL events
110
		"""Signal callback: Handles incoming data. Processes SSL events
 Lines 229-242   class MagicBucket(object): Link Here 
229
			self._cleanup(state.socket)
230
			self._cleanup(state.socket)
230
231
231
	def _cleanup(self, socket):
232
	def _cleanup(self, socket):
232
		if socket not in self.__states:
233
		state = self.__states.pop(socket, None)
234
		if state is None:
233
			return
235
			return
234
236
235
		self.__states[socket].session.shutdown()
237
		state.session.signal_disconnect('success', state.callback)
236
238
		state.session.shutdown()
237
		notifier.socket_remove(socket)
239
		notifier.socket_remove(socket)
238
		self.__states[socket].session.__del__()
240
		state.session.__del__()
239
		del self.__states[socket]
240
241
241
		try:
242
		try:
242
			socket.close()
243
			socket.close()
 Lines 406-411   class Server(signals.Provider): Link Here 
406
		categoryManager.load()
407
		categoryManager.load()
407
		RESOURCES.info('Reloading UCR variables')
408
		RESOURCES.info('Reloading UCR variables')
408
		ucr.load()
409
		ucr.load()
410
		gc.collect()  # Cleanup umcp.State objects
409
411
410
412
411
class State(object):
413
class State(object):

Return to bug 50583