MCPcopy
hub / github.com/benoitc/gunicorn / parse

Method parse

gunicorn/uwsgi/message.py:89–114  ·  view source on GitHub ↗

Parse uWSGI packet header and vars block.

(self, unreader)

Source from the content-addressed store, hash-verified

87 self.must_close = True
88
89 def parse(self, unreader):
90 """Parse uWSGI packet header and vars block."""
91 # Read the 4-byte header
92 header = self._read_exact(unreader, 4)
93 if len(header) < 4:
94 raise InvalidUWSGIHeader("incomplete header")
95
96 self.modifier1 = header[0]
97 datasize = int.from_bytes(header[1:3], 'little')
98 self.modifier2 = header[3]
99
100 # Only modifier1=0 (WSGI request) is supported
101 if self.modifier1 != 0:
102 raise UnsupportedModifier(self.modifier1)
103
104 # Read the vars block
105 if datasize > 0:
106 vars_data = self._read_exact(unreader, datasize)
107 if len(vars_data) < datasize:
108 raise InvalidUWSGIHeader("incomplete vars block")
109 self._parse_vars(vars_data)
110
111 # Extract HTTP request info from vars
112 self._extract_request_info()
113
114 return b""
115
116 def _read_exact(self, unreader, size):
117 """Read exactly size bytes from the unreader."""

Callers 1

__init__Method · 0.95

Calls 5

_read_exactMethod · 0.95
_parse_varsMethod · 0.95
_extract_request_infoMethod · 0.95
InvalidUWSGIHeaderClass · 0.90
UnsupportedModifierClass · 0.90

Tested by

no test coverage detected