sqlmapproject/sqlmap · error · H2Error

GOAWAY partially processed a multi-stream exchange

Error message

GOAWAY partially processed a multi-stream exchange

What it means

Error "GOAWAY partially processed a multi-stream exchange" thrown in sqlmapproject/sqlmap.

Source

Thrown at lib/request/http2.py:1228

            self._connection_error("non-CONTINUATION frame interleaved in a field section")

        if ftype == SETTINGS:
            self._handle_settings(flags, sid, payload)
        elif ftype == PING:
            self._handle_ping(flags, sid, payload)
        elif ftype == WINDOW_UPDATE:
            self._handle_window_update(sid, payload)
        elif ftype == GOAWAY:
            if sid != 0 or len(payload) < 8:
                self._connection_error("invalid GOAWAY frame")
            self.usable = False
            last_sid = struct.unpack("!I", payload[:4])[0] & MAX_STREAM_ID
            active = sorted(states)
            unprocessed = [stream_id for stream_id in active if stream_id > last_sid]
            if len(unprocessed) == len(active):
                raise _UnprocessedStream("GOAWAY confirms active stream(s) were not processed")
            if unprocessed:
                raise H2Error("GOAWAY partially processed a multi-stream exchange")
        elif ftype == RST_STREAM:
            if sid == 0 or len(payload) != 4:
                self._connection_error("invalid RST_STREAM frame")
            if sid in states:
                error_code = struct.unpack("!I", payload)[0]
                if len(states) == 1 and error_code == REFUSED_STREAM:
                    raise _UnprocessedStream("peer refused the stream before processing")
                raise H2Error("stream %d reset by peer (error %d)" % (sid, error_code))
            if sid % 2 == 0 or sid >= self.next_sid:
                self._connection_error("RST_STREAM referenced an idle stream")
        elif ftype == PUSH_PROMISE:
            self._connection_error("server push received despite SETTINGS_ENABLE_PUSH=0")
        elif ftype in (HEADERS, CONTINUATION):
            continuation_sid = self._process_header_frame(
                ftype, flags, sid, payload, states, continuation_sid
            )
        elif ftype == DATA:
            if sid == 0:

View on GitHub (pinned to 0a35b20e39)

When it happens

Trigger: Thrown at lib/request/http2.py:1228 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of sqlmapproject/sqlmap@0a35b20e39 (2026-08-26). Data as JSON: /api/errors/70bb3177f348cd2b. Report an issue: GitHub.