mirror of
https://github.com/bugsink/bugsink.git
synced 2026-01-06 05:10:15 -06:00
Envelope parsing: push exception about lack of errors up into parser
fail-fast, rather than return-none-fail-later
This commit is contained in:
@@ -95,7 +95,7 @@ class StreamingEnvelopeParser:
|
||||
|
||||
self.envelope_headers = None
|
||||
|
||||
def _parse_headers(self, eof_after_header_is_error=True):
|
||||
def _parse_headers(self, empty_is_error=False, eof_after_header_is_error=True):
|
||||
"""
|
||||
Quoted from https://develop.sentry.dev/sdk/envelopes/#headers at version 9c7f19f96562
|
||||
conversion to numbered list mine
|
||||
@@ -132,6 +132,9 @@ class StreamingEnvelopeParser:
|
||||
header_stream_value = header_stream.getvalue()
|
||||
if self.at_eof:
|
||||
if header_stream_value == b"":
|
||||
if empty_is_error:
|
||||
raise ParseError("Expected headers, got EOF")
|
||||
|
||||
return None
|
||||
|
||||
if eof_after_header_is_error:
|
||||
@@ -146,8 +149,7 @@ class StreamingEnvelopeParser:
|
||||
def get_envelope_headers(self):
|
||||
if self.envelope_headers is None:
|
||||
# see test_eof_after_envelope_headers for why we don't error on EOF-after-header here
|
||||
self.envelope_headers = self._parse_headers(eof_after_header_is_error=False)
|
||||
assert self.envelope_headers is not None
|
||||
self.envelope_headers = self._parse_headers(empty_is_error=True, eof_after_header_is_error=False)
|
||||
|
||||
return self.envelope_headers
|
||||
|
||||
@@ -158,7 +160,7 @@ class StreamingEnvelopeParser:
|
||||
self.get_envelope_headers()
|
||||
|
||||
while not self.at_eof:
|
||||
item_headers = self._parse_headers(eof_after_header_is_error=True)
|
||||
item_headers = self._parse_headers(empty_is_error=False, eof_after_header_is_error=True)
|
||||
if item_headers is None:
|
||||
self.at_eof = True
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user