Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #readpartial not respecting max length argument #454

Merged
merged 2 commits into from
Feb 12, 2018

Conversation

janko
Copy link
Member

@janko janko commented Feb 4, 2018

Fixes #384.

response = HTTP.get('http://www.rubydoc.info/github/httprb/http')
5.times { puts response.body.readpartial(10).length }
# 10
# 10
# 10
# 10
# 10

I didn't find an easy way to write specs for this, because everything is stubbed 😛

chunk = @parser.chunk
elsif @parser.chunk
chunk = @parser.chunk.byteslice(0, size)
@parser.chunk[0, size] = ""
Copy link
Member Author

@janko janko Feb 4, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is not correct, that would make @parser.chunk an empty string when there is no content, and then the if @parser.chunk condition would always hold. I'll correct it.

@janko janko force-pushed the fix-readpartial-not-respecting-length branch 2 times, most recently from aa04501 to edfed53 Compare February 11, 2018 23:09
@janko
Copy link
Member Author

janko commented Feb 11, 2018

Rubocop is complaining that the HTTP::Connection class is too large. This should get fixed with #456 😃

@janko janko force-pushed the fix-readpartial-not-respecting-length branch from edfed53 to 06e3604 Compare February 12, 2018 00:17
def chunk
chunk = @chunk
@chunk = nil
def get_chunk(size)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably worth rename this to read? I don't like get_ prefix.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, renamed.

@ixti
Copy link
Member

ixti commented Feb 12, 2018

Looks good to me!

@ixti
Copy link
Member

ixti commented Feb 12, 2018

@tarcieri please take a look and merge if no objections

@tarcieri tarcieri merged commit 4512e50 into httprb:master Feb 12, 2018
@tarcieri
Copy link
Member

Looks good, thanks!

@janko janko deleted the fix-readpartial-not-respecting-length branch February 12, 2018 01:27
marshall-lee added a commit to marshall-lee/http that referenced this pull request Mar 15, 2018
800c581 broke `readpartial` method: it returns same chunk twice :(

Ref httprb#454
ixti pushed a commit that referenced this pull request Apr 22, 2018
800c581 broke `readpartial` method: it returns same chunk twice :(

Ref #454
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 7, 2020
Update ruby-http to 4.4.1.


## 4.4.1 (2020-03-29)

* Backport [#590](httprb/http#590)
  Fix parser failing on some edge cases.
  ([@ixti])

## 4.4.0 (2020-03-25)

* Backport [#587](httprb/http#587)
  Fix redirections when server responds with multiple Location headers.
  ([@ixti])

* Backport [#599](httprb/http#599)
  Allow passing HTTP::FormData::{Multipart,UrlEncoded} object directly.
  ([@ixti])

## 4.3.0 (2020-01-09)

* Backport [#581](httprb/http#581)
  Add Ruby-2.7 compatibility.
  ([@ixti], [@janko])


## 4.2.0 (2019-10-22)

* Backport [#489](httprb/http#489)
  Fix HTTP parser.
  ([@ixti], [@fxposter])


## 4.1.1 (2019-03-12)

* Add `HTTP::Headers::ACCEPT_ENCODING` constant.
  ([@ixti])


## 4.1.0 (2019-03-11)

* [#533](httprb/http#533)
  Add URI normalizer feature that allows to swap default URI normalizer.
  ([@mamoonraja])


## 4.0.5 (2019-02-15)

* Backport [#532](httprb/http#532) from master.
  Fix pipes support in request bodies.
  ([@ixti])


## 4.0.4 (2019-02-12)

* Backport [#506](httprb/http#506) from master.
  Skip auto-deflate when there is no body.
  ([@Bonias])


## 4.0.3 (2019-01-18)

* Fix missing URL in response wrapped by auto inflate.
  ([@ixti])

* Provide `HTTP::Request#inspect` method for debugging purposes.
  ([@ixti])


## 4.0.2 (2019-01-15)

* [#506](httprb/http#506)
  Fix instrumentation feature.
  ([@paul])


## 4.0.1 (2019-01-14)

* [#515](httprb/http#515)
  Fix `#build_request` and `#request` to respect default options.
  ([@RickCSong])


## 4.0.0 (2018-10-15)

* [#482](httprb/http#482)
  [#499](httprb/http#499)
  Introduce new features injection API with 2 new feaures: instrumentation
  (compatible with ActiveSupport::Notification) and logging.
  ([@paul])

* [#473](httprb/http#473)
  Handle early responses.
  ([@janko-m])

* [#468](httprb/http#468)
  Rewind `HTTP::Request::Body#source` once `#each` is complete.
  ([@ixti])

* [#467](httprb/http#467)
  Drop Ruby 2.2 support.
  ([@ixti])

* [#436](httprb/http#436)
  Raise ConnectionError when writing to socket fails.
  ([@janko-m])

* [#438](httprb/http#438)
  Expose `HTTP::Request::Body#source`.
  ([@janko-m])

* [#446](httprb/http#446)
  Simplify setting a timeout.
  ([@mikegee])

* [#451](httprb/http#451)
  Reduce memory usage when reading response body.
  ([@janko-m])

* [#458](httprb/http#458)
  Extract HTTP::Client#build_request method.
  ([@tycoon])

* [#462](httprb/http#462)
  Fix HTTP::Request#headline to allow two leading slashes in path.
  ([@scarfacedeb])

* [#454](httprb/http#454)
  [#464](httprb/http#464)
  [#384](httprb/http#384)
  Fix #readpartial not respecting max length argument.
  ([@janko-m], [@marshall-lee])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants