Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/python-bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Steffens <joerg.steffens@bareos.com>2017-11-03 18:58:08 +0300
committerJoerg Steffens <joerg.steffens@bareos.com>2017-11-03 19:02:18 +0300
commit4a5bd79bb050d9e9e1394da2e4cd03605f595223 (patch)
tree1004cdca68634543c665c1c3327e3fa17486ff06
parent3d8bd017582f3d29035aea1d62bf699399465c2e (diff)
fixes a sporadic problem with incomplete headers
In some situations, a bareos message header have not been transfered completly. This patch will make sure, that a complete header have been received.
-rw-r--r--bareos/bsock/lowlevel.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/bareos/bsock/lowlevel.py b/bareos/bsock/lowlevel.py
index 61b9edb..457551f 100644
--- a/bareos/bsock/lowlevel.py
+++ b/bareos/bsock/lowlevel.py
@@ -212,7 +212,6 @@ class LowLevel(object):
#return msg
except socket.error as e:
self._handleSocketError(e)
- return msg
def recv_submsg(self, length):
@@ -266,8 +265,16 @@ class LowLevel(object):
def __get_header(self):
- self.__check_socket_connection()
- header = self.socket.recv(4)
+ header = b''
+ header_length = 4
+ while header_length > 0:
+ self.logger.debug(" remaining header len: {}".format(header_length))
+ self.__check_socket_connection()
+ # TODO
+ self.socket.settimeout(10)
+ submsg = self.socket.recv(header_length)
+ header_length -= len(submsg)
+ header += submsg
if len(header) == 0:
self.logger.debug("received empty header, assuming connection is closed")
raise SocketEmptyHeader()