• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

elixir-mint / mint / 6c531fef0b935e35360f3781069a8ab85cd0dea5
91%

Build:
DEFAULT BRANCH: main
Ran 27 Sep 2026 07:58PM UTC
Jobs 1
Files 22
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Sep 2026 07:56PM UTC coverage: 90.169% (+0.5%) from 89.657%
6c531fef0b935e35360f3781069a8ab85cd0dea5

push

github

web-flow
Validate and track HTTP/2 server push streams (#519)

* Report incomplete HTTP/2 responses on RST_STREAM with NO_ERROR

Streams are removed as soon as the server ends them with END_STREAM, so
a RST_STREAM frame on a stream still being tracked means the response
is incomplete. With the NO_ERROR code it was reported as {:done, ref},
both before any headers and in the middle of a body with a declared
content-length. It now produces {:server_closed_request, :no_error}.

* Reject HTTP/2 responses with connection-specific headers or unsupported status codes

RFC 9113 8.2.2 makes a message containing connection, keep-alive,
proxy-connection, transfer-encoding or upgrade malformed, which is a
stream error. The te header is only allowed in requests, so it's
rejected in responses and trailers as well.

A :status of 101 is not supported in HTTP/2 (RFC 9113 8.6) and used to
be delivered as an interim response, and :status values below 100 were
accepted although HTTP/1 rejects them; both are now stream errors.

* Handle HTTP/2 PUSH_PROMISE frames on streams the client closed

A PUSH_PROMISE on a stream that is no longer in the stream map, for
example because the client cancelled the request before the server
processed the RST_STREAM, raised {:stream_not_found, id} out of
stream/2. The connection stayed open but the socket was never re-armed
with active: :once, frames after the PUSH_PROMISE in the same message
were dropped, and the header block was not decoded, so the next
header block from the server failed with a compression error.

RFC 9113 6.6 requires handling PUSH_PROMISE frames created before the
RST_STREAM was processed. The header block is now decoded to keep the
HPACK table in sync, the promised stream is reset with CANCEL and the
frame is otherwise ignored.

* Validate HTTP/2 PUSH_PROMISE streams and promised requests

Promised stream identifiers were only checked for being even and
unused, so a server could promise stream 0, promise identifiers lower
th... (continued)

102 of 104 new or added lines in 1 file covered. (98.08%)

1761 of 1953 relevant lines covered (90.17%)

669.9 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
95.09
0.9% lib/mint/http2.ex
Jobs
ID Job ID Ran Files Coverage
1 6c531fef0b935e35360f3781069a8ab85cd0dea5.1 27 Sep 2026 07:58PM UTC 22
90.17
GitHub Action Run
Source Files on build 6c531fef0b935e35360f3781069a8ab85cd0dea5
  • Tree
  • List 22
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 6c531fef on github
  • Prev Build on main (#E1599326...)
  • Next Build on main (#BF2455FB...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc