Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _handle_responses(self, data, line_handler, current_cmd=None):
if not data:
if self.pending_sync_command is not None:
self.pending_sync_command.flush()
if current_cmd is not None and current_cmd.wait_data():
raise IncompleteRead(current_cmd)
return
if current_cmd is not None and current_cmd.wait_literal_data():
data = current_cmd.append_literal_data(data)
if current_cmd.wait_literal_data():
raise IncompleteRead(current_cmd)
line, separator, tail = data.partition(CRLF)
if not separator:
raise IncompleteRead(current_cmd, data)
cmd = line_handler(line.decode(), current_cmd)
begin_literal = literal_data_re.match(line)
if begin_literal:
size = int(begin_literal.group('size'))
if cmd is None:
cmd = Command('NIL', 'unused')
cmd.begin_literal_data(size)
self._handle_responses(tail, line_handler, current_cmd=cmd)
elif cmd is not None and cmd.wait_data():
self._handle_responses(tail, line_handler, current_cmd=cmd)
else:
self._handle_responses(tail, line_handler)
def _handle_responses(self, data, line_handler, current_cmd=None):
if not data:
if self.pending_sync_command is not None:
self.pending_sync_command.flush()
if current_cmd is not None and current_cmd.wait_data():
raise IncompleteRead(current_cmd)
return
if current_cmd is not None and current_cmd.wait_literal_data():
data = current_cmd.append_literal_data(data)
if current_cmd.wait_literal_data():
raise IncompleteRead(current_cmd)
line, separator, tail = data.partition(CRLF)
if not separator:
raise IncompleteRead(current_cmd, data)
cmd = line_handler(line.decode(), current_cmd)
begin_literal = literal_data_re.match(line)
if begin_literal:
size = int(begin_literal.group('size'))
def _handle_responses(self, data, line_handler, current_cmd=None):
if not data:
if self.pending_sync_command is not None:
self.pending_sync_command.flush()
if current_cmd is not None and current_cmd.wait_data():
raise IncompleteRead(current_cmd)
return
if current_cmd is not None and current_cmd.wait_literal_data():
data = current_cmd.append_literal_data(data)
if current_cmd.wait_literal_data():
raise IncompleteRead(current_cmd)
line, separator, tail = data.partition(CRLF)
if not separator:
raise IncompleteRead(current_cmd, data)
cmd = line_handler(line.decode(), current_cmd)
begin_literal = literal_data_re.match(line)
if begin_literal:
size = int(begin_literal.group('size'))
if cmd is None:
cmd = Command('NIL', 'unused')
cmd.begin_literal_data(size)
self._handle_responses(tail, line_handler, current_cmd=cmd)
elif cmd is not None and cmd.wait_data():
self._handle_responses(tail, line_handler, current_cmd=cmd)
def data_received(self, d):
log.debug('Received : %s' % d)
try:
self._handle_responses(self.incomplete_line + d, self._handle_line, self.current_command)
self.incomplete_line = b''
self.current_command = None
except IncompleteRead as incomplete_read:
self.current_command = incomplete_read.cmd
self.incomplete_line = incomplete_read.data