[pull] master from ruby:master - #1347
Merged
Merged
Conversation
… reads BufferedIO#readuntil resumed searching at the previous buffer end, so a multi-byte terminator split across two fills, such as "\r" ending one chunk and "\n" starting the next, was never matched and readuntil returned data past the terminator. Rewind the search by terminator.bytesize - 1 before refilling, floored at @rbuf_offset. ruby/net-protocol@84ef3aba09 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Cover a terminator split across two reads and across more than two, the negative rewind the floor clamps, the floor keeping the search out of consumed bytes, and the ignore_eof branch that returns data without a terminator. FakeReadPartialIO now signals EOF instead of raising TypeError, and hands out binary chunks so @rbuf stays binary the way a real IO leaves it. ruby/net-protocol@215cc35666 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The bundled_gems workflow has failed every day since 2026-08-16 because rbs 4.0.3's Ripper_test.rb no longer finds Ripper on master. rbs 4.2.0 picks up the upstream fix that requires "ripper" in the stdlib tests. typeprof 0.32.0 never finishes load_core_rbs against rbs 4.2.0, so it is pinned to a master revision until the next release, and the newly added collection_install test is skipped because rbs's bundle_install helper runs whichever bundle comes first on PATH.
rbs was pinned in March 2026 while the 4.0 series was breaking CI. Now that 4.2.0 is in gems/bundled_gems and the tests pass again, the daily workflow can pick up later rbs releases on its own.
rbs 4.2.0 adds Etc and IO#pathconf stdlib tests that need getpwent(), getgrent() and the pathconf constants, none of which exist on Windows, so they go in the Windows-only list. OpenURISingletonTest reaches www.ruby-lang.org and now fails on Ubuntu as well, so its skip moves out of the Windows list into the shared one.
readuntil buffers until the terminator arrives, so a peer that never sends one grows the read buffer without bound. The limit lets a protocol implementation cap what a single read may return, raising the new Net::ReadLimitExceeded instead of reading on. The exception derives from ProtocolError because an over-long line is the peer violating the protocol rather than an I/O failure, and because IOError would place it in the generic socket-error rescue that Net::HTTP retries on. ruby/net-http#315 ruby/net-protocol@e1b38d98b7 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The floor's two reasons fit in one block, and the two tests that restated them are named for what they cover. ruby/net-protocol@6ffd258b7c Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )