Commit graph

906 commits

Author SHA1 Message Date
Shishir Joshi
c310691dd8 [ruby/net-http] Make Net::HTTPHeader#content_range return nil on non-byte units
* Returning nil from the `content_range` method instead of raising an
  error when the unit in the content-range header is not "bytes".

Fix https://bugs.ruby-lang.org/issues/11450

0b5030dd86

Co-Authored-By: Nobuyoshi Nakada <nobu@ruby-lang.org>
2022-06-16 23:35:27 +09:00
Nobuyoshi Nakada
2223eb082a
Revert "HTTPHeader.content_range throws error on non-byte units"
This reverts commit 63546bfc15.
2022-06-16 22:10:59 +09:00
Shishir Joshi
63546bfc15
HTTPHeader.content_range throws error on non-byte units
* Added a nil check in Net::HTTPHeader#initialize_http_header for keys in the header that do not have any value
* Returning nil from the content_range method instead of raising an error when the unit in the content-range header is not bytes
* Modified initialize_http_header to match trunk

fix [Bug #11450]
fix https://github.com/ruby/ruby/pull/1018
2022-06-16 20:16:47 +09:00
Nobuyoshi Nakada
4cf155e007 [ruby/net-http] [DOC] Get rid of a RDoc bug
RDoc overrides class name by the assigned name unexpectedly when
assigned using a qualified class path.

a7bded0407
2022-05-23 18:23:22 +09:00
Nobuyoshi Nakada
8fa9e168be [ruby/net-http] Make the recommended name formal
`HTTPServerException` is the name deprecated since years ago.

b3028fef5a
2022-05-21 00:41:54 +09:00
Hiroshi SHIBATA
ecf32dbfc0 [ruby/net-http] Bump version to 0.2.2
992d07cb41
2022-05-09 18:20:31 +09:00
Charles Oliver Nutter
cd2613b6a4 [ruby/net-http] Bump version to 0.2.1.pre1
0017cc64c0
2022-04-28 05:56:26 +09:00
Karol Bucek
cf73cf5981 [ruby/net-http] Feature detect to make net/http usable with JRuby
Handle missing session_new_cb= and do not call
session_cache_mode=, as JRuby SSL does not support
these methods.

3237ef4d8c
2022-04-20 13:01:08 +09:00
Jeremy Evans
90ccc5674a [ruby/net-http] Add ignore_eof access to HTTP and HTTPResponse
The ignore_eof setting on HTTPResponse makes it so an EOFError is
raised when reading bodies with a defined Content-Length, if the
body read was truncated due to the socket be closed.

The ignore_eof setting on HTTP sets the values used in responses
that are created by the object.

For backwards compatibility, the default is for both settings is
true.  However, unless you are specifically tested for and handling
truncated responses, it's a good idea to set ignore_eof to false so
that errors are raised for truncated responses, instead of those
errors silently being ignored.

Fixes [Bug #14972]

4d47e34995
2022-04-20 10:22:06 +09:00
Jeremy Evans
0579486f15 [ruby/net-http] Update the content-length heading when decoding bodies
Previously, the content-encoding header was removed and the body
was modified, but the content-length header was not modified,
resulting in the content-length header not matching the body
length.

Don't delete content-length before yielding inflate body, as that
causes a switch to read the entire body instead of reading in
chunks.

Fixes [Bug #16672]

58284e9710

Co-authored-by: st0012 <stan001212@gmail.com>
2022-04-14 00:11:26 +09:00
Jeremy Evans
ebb4378237 [ruby/net-http] Add HTTP#response_body_encoding for setting response body encoding
This allows for the ability to opt-in to a method to set the
encoding of response bodies.  By setting the accessor to a String
or Encoding instance, it will use the specified encoding.
Setting the value of true will try to detect the encoding of the
response body, either using the Content-Type header (assuming it
specifies charset) or by scanning for a <meta> tag in the document
that specifies the encoding.  The default is false in which case
no forcing of encoding will be done (same as before the patch).

Implements [Feature #2567]
Implements [Feature #15517]

6233e6b7c1

Co-authored-by: Yui Naruse <naruse@ruby-lang.org>
2022-04-12 00:17:34 +09:00
Jeremy Evans
7648bae4c8 [ruby/net-http] Revert "Update the content-length heading when decoding bodies"
This reverts commit a7cb30124c.

This is causing errors in Ruby's CI, will revert for now and
try again after testing a fix with Ruby's CI.

7b852b1feb
2022-04-03 06:51:07 +09:00
Jeremy Evans
58adb1636b [ruby/net-http] Update the content-length heading when decoding bodies
Previously, the content-encoding header was removed and the body
was modified, but the content-length header was not modified,
resulting in the content-length header not matching the body
length.

Fixes [Bug #16672]

a7cb30124c
2022-04-02 02:49:21 +09:00
Hiroshi SHIBATA
06f94d1784 [ruby/net-protocol] Bump version to 0.1.3
9cf40af499
2022-04-01 13:56:47 +09:00
Hiroshi SHIBATA
c53bdb8ff6
Removed dependency of net-protocol. There is no plan to remove from stdlib 2022-02-21 17:10:56 +09:00
Hiroshi SHIBATA
79b04790e8
Removed dependency of io-wait. There is no plan to remove from stdlib 2022-02-21 17:10:22 +09:00
Jeremy Evans
7529c53891 [ruby/net-http] Do not set SNI hostname if connecting to IP address
RFC 6066, section 3, explicitly disallows the use of an IP address
as an SNI server name.  So check if the connection is being made
to an IP address using the resolv regexps, and do not set an SNI
hostname in that case.

Recent changes to LibreSSL make it more strictly follow RFC 6066,
resulting an s.hostname= raising an error if passed an IP address.
When such verions of LibreSSL are used, this change not only fixes
the net/http tests, it also fixes tests for webrick and open-uri,
which both make SSL connections to 127.0.0.1 using net/http in
their tests.

Avoid warning in the openssl extension by unsetting
@ssl_context.verify_hostname if connecting to an IP address.
Make changes so that the post_connection_check still happens
when connecting to an IP address, which is necessary to keep
checking that the certificate returned includes the IP address,
which one of the tests depends on.

Revert the previous change that modified the regexp used for
checking the error message.

fa68e64bee
2022-02-03 05:10:21 +09:00
Olle Jonsson
d8c54bac4a [ruby/net-protocol] Fix typo in gem description [ci skip]
35d7b08a54
2022-02-02 21:21:47 +09:00
Olle Jonsson
94687a6826 [ruby/net-protocol] Drop unused gemspec directives
This gem exposes no executables.

3c4def2a64
2022-02-02 21:17:47 +09:00
Brandon Weaver
ac1bb6b510 [ruby/net-http] Rename D to debug in Net::HTTP
Renames `D` to `debug` in `Net::HTTP` and introduces an alias for
backwards compatibility. This was done for readability reasons, in that
`D` did not clearly reflect what the method was doing and can cause some
confusion.

582d6e87d6
2022-01-17 10:17:23 +09:00
Kazuhiro NISHIYAMA
5757696e07
res.response_body_permitted? is not defined
`response_body_permitted?` is a method of request.
2022-01-05 16:20:11 +09:00
Olle Jonsson
c240ccd643 [ruby/net-http] gemspec: Drop unused directive "executables"
This gem exposes no executable files.

3b3743f6ce
2021-11-17 19:09:14 +09:00
Nobuyoshi Nakada
5bff4cd56c [ruby/net-protocol] Update the required ruby version
d4982420e6
2021-11-16 20:56:04 +09:00
Shohei Maeda
52ab9bbee9 [ruby/net-http] Send Accept-Encoding header on HEAD method
9d95c5e3e6
2021-11-11 17:34:00 +09:00
Nobuyoshi Nakada
3d8e1ee40f [ruby/net-http] Warn deprecated old constants
2a97b4729b
2021-11-04 20:51:51 +09:00
Nobuyoshi Nakada
b49dbe025f [ruby/net-http] Fix the typo in a constant name
dada6007bf
2021-11-04 20:51:42 +09:00
Kazuki Yamaguchi
5f2c4e344d [ruby/net-http] Reset keep_alive timer on new connection
The last_communicated timestamp is for HTTP persistent connection, to
decide whether the current TCP connection may be reused for the
subsequent requests or not. Naturally, the timer must be reset if the
connection is recreated since it is no longer relevant.

0a013de42d
2021-11-04 20:44:04 +09:00
180909
6c812c6f4e add missing http response code in doc 2021-10-30 10:16:17 +09:00
Hiroshi SHIBATA
cb4c98f949 [ruby/net-http] Bump up net-http version to 0.2.0
f3e65e2a31
2021-10-21 21:01:06 +09:00
Hiroshi SHIBATA
cc2f76041d [ruby/net-protocol] Bump up net-protocol version to 0.1.2
088e52609a
2021-10-21 21:00:53 +09:00
Miguel Teixeira
60b02db516 [ruby/net-http] Enforce write timeout when body_stream is used
The existing implementation of `Net::HTTP#write_timeout` relies on
`Net::BefferedIO` to trigger the `Net::WriteTimeout` error. This commit
changes `send_request_with_body_stream` to remove the optimization that
was making `Net::HTTP#write_timeout` not work when `body_stream` is
used.

Open issue:
https://bugs.ruby-lang.org/issues/17933

a0fab1ab52
2021-07-29 15:53:54 +09:00
Nobuyoshi Nakada
2b17d2f297 [ruby/net-protocol] Get rid of __send__
Mitigate the security risk:
https://devcraft.io/2021/01/07/universal-deserialisation-gadget-for-ruby-2-x-3-x.html

a9970437e8
2021-06-16 22:23:46 +09:00
Hiroshi SHIBATA
cd2190448d
[ruby/net-protocol] Bump version to 0.1.1
97c4b68528
2021-05-31 17:40:07 +09:00
Hiroshi SHIBATA
be2e2b4805 Promote net-smtp to the bundled gems 2021-05-27 14:42:11 +09:00
Hiroshi SHIBATA
aa9726f7b9 Promote net-pop to the bundled gems 2021-05-27 14:42:11 +09:00
Hiroshi SHIBATA
d5bc6b2337 Promote net-imap to the bundled gems 2021-05-27 14:42:11 +09:00
Hiroshi SHIBATA
e49c998d1e Promote net-ftp to the bundled gems 2021-05-27 14:42:11 +09:00
Shugo Maeda
773c690f25 [ruby/net-ftp] Bump version to 0.1.2
895ba44b3c
2021-05-12 09:20:41 +09:00
Kazuki Yamaguchi
364044e090 [ruby/net-http] Do not require stringio
It is not used in net/http library code since commit 15ccd0118c13
(r36473 in ruby svn trunk, 2012).

require's in test suite are also cleaned up.

996d18a43f
2021-05-06 15:58:41 +09:00
Hiroshi SHIBATA
965719f5eb
Fixed the file path for net-imap.gemspec 2021-05-06 15:24:49 +09:00
Hiroshi SHIBATA
5de6f1ab47
Move net-imap.gemspec to under the lib/net/imap directory. 2021-05-06 15:20:35 +09:00
nicholas a. evans
5a02281fab
[ruby/net-imap] Many documentation improvements
* updated obsoleted RFCs to current versions
* linked most references to their RFCs
* linked extension commands to their RFCs
* removed unidiomatic `()` from instance method links
* escaped `IMAP` in a few places
* converted all response structs to explicit classes: this makes much
  nicer rdoc output than listing them all under "constants"
* grouped flags constants into their own sections

9cd562ac84
2021-05-06 15:20:35 +09:00
nicholas a. evans
b0de2e7fe9
[ruby/net-imap] Move send_*_data into net/imap/command_data
Partially implements #10.

64d1080d63
2021-05-06 15:20:35 +09:00
nicholas a. evans
deae61e939
[ruby/net-imap] Move flags to net/imap/flags
Partially implements #10.

2a9afa83bf
2021-05-06 15:20:34 +09:00
nicholas a. evans
337c0e312b
[ruby/net-imap] Move UTF7 & datetime formatting to net/imap/data_encoding
Partially implements #10.

0d43c5e856
2021-05-06 15:20:34 +09:00
nicholas a. evans
4dc7b82427
[ruby/net-imap] move command data formatters to net/imap/command_data
Partially implements #10.

24e929fdd2
2021-05-06 15:20:34 +09:00
nicholas a. evans
affb51045c
[ruby/net-imap] move response data structs to net/imap/response_data
Partially implements #10.

746757b936
2021-05-06 15:20:34 +09:00
nicholas a. evans
395a287736
[ruby/net-imap] move ResponseParser to lib/net/imap/response_parser
Partially implements #10.

c2408aac9a
2021-05-06 15:20:34 +09:00
nicholas a. evans
2fc91da86c
[ruby/net-imap] Clean up authenticators rdoc
Added RFC links to all SASL mechanism specifications.

53ff4b0c09
2021-05-06 15:20:34 +09:00
nicholas a. evans
912f39b2c3
[ruby/net-imap] Update AUTH=PLAIN to be a little closer to RFC4616
* Add authzid support
* must not contain NULL chars
* improve rdoc

a587fc71b7
2021-05-06 15:20:34 +09:00