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

Reduce amount of objects upon headers normalization #318

Merged
merged 1 commit into from
Mar 16, 2016

Conversation

ixti
Copy link
Member

@ixti ixti commented Mar 16, 2016

In response to #317 (comment)

@ixti
Copy link
Member Author

ixti commented Mar 16, 2016

@httprb/core I'll merge this down unless any objections

@zanker
Copy link
Contributor

zanker commented Mar 16, 2016

Looks fine. Only concern would be looking at our header tests it looks like we don't really test our normalization? Could potentially break something without knowing it.

@ixti
Copy link
Member Author

ixti commented Mar 16, 2016

@zanker all methods in https://github.com/httprb/http/blob/master/spec/lib/http/headers_spec.rb have examples with canonical header names and not yet normalized forms.

Generally this patch does not changes anything in logic except it simply avoids creation of new (String|Array) objects when it might be avoided.

@ixti ixti mentioned this pull request Mar 16, 2016
@mhenrixon
Copy link

Thanks for this! I was lucky enough that we already implemented sort of a fix where we support both formats for known keys but this allows us to get rid of some internal hacks eventually.

@tarcieri
Copy link
Member

👍 thanks for doing this!

ixti added a commit that referenced this pull request Mar 16, 2016
Reduce amount of objects upon headers normalization
@ixti ixti merged commit 1f04062 into master Mar 16, 2016
@ixti ixti deleted the improve/header-name-allocation branch March 16, 2016 20:08
jsonn pushed a commit to jsonn/pkgsrc that referenced this pull request Oct 18, 2016
## 2.0.3 (2016-08-03)

* [#365](httprb/http#365)
  Add `HTTP::Response#content_length`
  ([@janko-m])

* [#335](httprb/http#335),
  [#360](httprb/http#360)
  Set `Content-Length: 0` header for `nil` bodies.
  ([@britishtea])


## 2.0.2 (2016-06-24)

* [#353](httprb/http#353)
  Avoid a dependency cycle between Client and Connection classes.
  ([@jhbabon])


## 2.0.1 (2016-05-12)

* [#341](httprb/http#341)
  Refactor some string manipulations so they are more performant
  (up to 3-4x faster) and more concise.
  ([@tonyta])

* [#339](httprb/http#341)
  Always use byte methods when writing/slicing the write buffer.
  ([@zanker])


## 2.0.0 (2016-04-23)

* [#333](httprb/http#333)
  Fix HTTPS request headline when sent via proxy.
  ([@Connorhd])

* [#331](httprb/http#331)
  Add `#informational?`, `#success?`, `#redirect?`, `#client_error?` and
  `#server_error?` helpers to `Response::Status`.
  ([@mwitek])

* [#330](httprb/http#330)
  Support custom CONNECT headers (request/response) during HTTPS proxy requests.
  ([@smudge])

* [#319](httprb/http#319)
  Drop Ruby 1.9.x support.
  ([@ixti])


## 1.0.4 (2016-03-19)

* [#320](httprb/http#320)
  Fix timeout regression.
  ([@tarcieri])


## 1.0.3 (2016-03-16)

* [#314](httprb/http#314)
  Validate charset before forcing encoding.
  ([@kylekyle])

* [#318](httprb/http#318)
  Remove redundant string allocations upon header names normalization.
  ([@ixti])
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.

4 participants