Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def read_pkt_refs(proto):
server_capabilities = None
refs = {}
# Receive refs from server
for pkt in proto.read_pkt_seq():
(sha, ref) = pkt.rstrip("\n").split(None, 1)
if sha == "ERR":
raise GitProtocolError(ref)
if server_capabilities is None:
(ref, server_capabilities) = extract_capabilities(ref)
symref = "symref=HEAD:"
for cap in server_capabilities:
if cap.startswith(symref):
sha = cap.replace(symref, "")
refs[ref] = sha
if len(refs) == 0:
return None, set([])
return refs, set(server_capabilities)
def read_pkt_refs(proto):
server_capabilities = None
refs = {}
# Receive refs from server
for pkt in proto.read_pkt_seq():
(sha, ref) = pkt.rstrip(b'\n').split(None, 1)
if sha == b'ERR':
raise GitProtocolError(ref)
if server_capabilities is None:
(ref, server_capabilities) = extract_capabilities(ref)
refs[ref] = sha
if len(refs) == 0:
return None, set([])
return refs, set(server_capabilities)
allowed return values.
"""
if not line:
fields = [None]
else:
fields = line.rstrip(b'\n').split(b' ', 1)
command = fields[0]
if allowed is not None and command not in allowed:
raise UnexpectedCommandError(command)
if len(fields) == 1 and command in (COMMAND_DONE, None):
return (command, None)
elif len(fields) == 2:
if command in (COMMAND_WANT, COMMAND_HAVE, COMMAND_SHALLOW,
COMMAND_UNSHALLOW):
if not valid_hexsha(fields[1]):
raise GitProtocolError("Invalid sha")
return tuple(fields)
elif command == COMMAND_DEEPEN:
return command, int(fields[1])
raise GitProtocolError('Received invalid line from client: %r' % line)
def write_pkt_line(self, line):
"""Sends a pkt-line to the remote git process.
Args:
line: A string containing the data to send, without the length
prefix.
"""
try:
line = pkt_line(line)
self.write(line)
if self.report_activity:
self.report_activity(len(line), 'write')
except socket.error as e:
raise GitProtocolError(e)
self._readahead = None
try:
sizestr = read(4)
if not sizestr:
raise HangupException()
size = int(sizestr, 16)
if size == 0:
if self.report_activity:
self.report_activity(4, 'read')
return None
if self.report_activity:
self.report_activity(size, 'read')
pkt_contents = read(size-4)
except socket.error as e:
raise GitProtocolError(e)
else:
if len(pkt_contents) + 4 != size:
raise GitProtocolError(
'Length of pkt read %04x does not match length prefix %04x'
% (len(pkt_contents) + 4, size))
return pkt_contents
self._readahead = None
try:
sizestr = read(4)
if not sizestr:
raise HangupException()
size = int(sizestr, 16)
if size == 0:
if self.report_activity:
self.report_activity(4, 'read')
return None
if self.report_activity:
self.report_activity(size, 'read')
pkt_contents = read(size-4)
except socket.error as e:
raise GitProtocolError(e)
else:
if len(pkt_contents) + 4 != size:
raise GitProtocolError(
'Length of pkt read %04x does not match length prefix %04x'
% (len(pkt_contents) + 4, size))
return pkt_contents
def write_pkt_line(self, line):
"""Sends a pkt-line to the remote git process.
:param line: A string containing the data to send, without the length
prefix.
"""
try:
line = pkt_line(line)
self.write(line)
if self.report_activity:
self.report_activity(len(line), 'write')
except socket.error as e:
raise GitProtocolError(e)
def __init__(self, *args, **kwargs):
Exception.__init__(self, *args, **kwargs)
class GitProtocolError(Exception):
"""Git protocol exception."""
def __init__(self, *args, **kwargs):
Exception.__init__(self, *args, **kwargs)
class SendPackError(GitProtocolError):
"""An error occurred during send_pack."""
class UpdateRefsError(GitProtocolError):
"""The server reported errors updating refs."""
def __init__(self, *args, **kwargs):
self.ref_status = kwargs.pop('ref_status')
super(UpdateRefsError, self).__init__(*args, **kwargs)
class HangupException(GitProtocolError):
"""Hangup exception."""
def __init__(self):
super(HangupException, self).__init__(
"The remote server unexpectedly closed the connection.")
class UnexpectedCommandError(GitProtocolError):
sizestr = read(4)
if not sizestr:
raise HangupException()
size = int(sizestr, 16)
if size == 0:
if self.report_activity:
self.report_activity(4, 'read')
return None
if self.report_activity:
self.report_activity(size, 'read')
pkt_contents = read(size-4)
except socket.error as e:
raise GitProtocolError(e)
else:
if len(pkt_contents) + 4 != size:
raise GitProtocolError(
'Length of pkt read %04x does not match length prefix %04x'
% (len(pkt_contents) + 4, size))
return pkt_contents