Граф коммитов

892 Коммитов

Автор SHA1 Сообщение Дата
usa 60c7fcf03a Get rid of warnings of test/spec
* lib/net/http/exceptions.rb: revert a part of r63590.  to deprecate
  Net::ProtoServerError seems to be wrong.
  see [ruby-core:87488] [Feature#14688]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-14 09:01:38 +00:00
naruse 51cfea31e5 write_timeout doc upates [skip ci]
From: MSP-Greg <MSP-Greg@users.noreply.github.com>
fix https://github.com/ruby/ruby/pull/1885

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-08 17:20:20 +00:00
kazu 905e89675f Fix typos [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-07 12:06:15 +00:00
naruse 439e50789b Use `Net::HTTPClientException` instead of `Net::HTTPServerException`
`Net::HTTPServerException` has been deprecated since r63590. [Bug #14688]
And `net/http/responses.rb` uses the deprecated constant, so Ruby warns of the deprecation.

Example:

```bash
$ ruby -r net/http -e ''
/home/pocke/.rbenv/versions/trunk/lib/ruby/2.6.0/net/http/responses.rb:22: warning: constant Net::HTTPServerException is deprecated
```

This change suppresses the warning.
From: Masataka Pocke Kuwabara <kuwabara@pocke.me>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-06 12:13:16 +00:00
naruse 8e37f17671 Add Net::HTTPClientException [Bug #14688]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-06 09:01:04 +00:00
naruse 685fdbe64c fix r63587
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-06 08:39:36 +00:00
ko1 37ea653080 fix r63587 with temporal patch to pass the tests. please re-fix it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-06 08:34:39 +00:00
naruse bd7c46a7aa Introduce write_timeout to Net::HTTP [Feature #13396]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-06 08:03:47 +00:00
shugo 59630683d6 net/imap: Fix ArgumentError in send_string_data
Thanks to ShockwaveNN (Pavel Lobashov) for reporting the bug.
[ruby-core:86990] [Bug #14750]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-11 12:39:23 +00:00
normal c4056a4a70 net/imap: set SO_KEEPALIVE on TCP sockets
Otherwise connections (commonly on IDLE, but it could be any
command) may never receive notifications of link errors.

[ruby-core:86628] [Feature #14703]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-04-22 21:21:06 +00:00
naruse 0f7b26ab4e Raise ArgumentError if host component is nil
From: oss92 <mohamed.o.alnagdy@gmail.com>
fix https://github.com/ruby/ruby/pull/1278

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-08 16:07:54 +00:00
normal 3474d5c306 net/http: fix documentation for HTTP connection reuse
Thanks to Paul Kuruvilla <rohitpaulk@gmail.com> for the patch

* lib/net/http.rb: fix documentation for HTTP connection reuse
  [ruby-core:84815] [Bug #14349]

From: Paul Kuruvilla <rohitpaulk@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-30 18:32:40 +00:00
normal 7830a950ef net/pop: make modified strings mutable
Thanks to Michael Zimmerman for the bug report

* lib/net/pop.rb: make modified strings mutable
  [ruby-core:85210] [Bug #14416]
* test/net/pop/test_pop.rb: new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-30 00:22:22 +00:00
kazu 814daf855e Fix warning
``lib/net/protocol.rb:214: warning: `*' interpreted as argument prefix``

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-19 12:15:56 +00:00
normal 7db24a6269 net/http: use writev for HTTP chunked request bodies
This reduces both user and system CPU time for large
uploads with dynamically-generated request bodies.

              user     system      total        real
before:   0.393334   1.580000   1.973334 (  1.971066)
after:    0.223334   0.976666   1.200000 (  1.198514)

------
require 'socket'
require 'net/http'
require 'benchmark'
nr = 1024 * 1024 * 1024
s = TCPServer.new('127.0.0.1', 0)
addr = s.addr
at_exit { Process.waitall }
fork do
  c = s.accept
  # not exactly accurate but fast
  IO.copy_stream(c, '/dev/null', nr + 500000)
  begin
    buf = c.readpartial(16384)
    tmp = ''
    until buf.end_with?(-"0\r\n\r\n")
      buf << c.readpartial(16384, tmp)
    end
  rescue EOFError
  end
  c.write "HTTP/1.1 201 Created\r\nConnection:close\r\n\r\n"
  c.close
end
r, w = IO.pipe
fork do
  r.close
  IO.copy_stream('/dev/zero', w, nr)
  w.close
end
w.close
Net::HTTP.start(addr[3], addr[1]) do |http|
  put = Net::HTTP::Put.new('/dev0/foo')
  put['Content-Type'] = 'application/content-type'
  put['Transfer-Encoding'] = 'chunked'
  put.body_stream = r
  puts(Benchmark.measure { http.request(put) })
end
------

* lib/net/http/generic_request.rb (write): use multi-arg write
* lib/net/protocol.rb (write): support multi-arg
  (write0): ditto
  [ruby-core:84845] [Feature #14339]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61812 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-14 02:44:53 +00:00
kazu 7994269c14 Add `103 Early Hints` to `Net::HTTP::STATUS_CODES` [ci skip]
Update by `ruby lib/net/http/status.rb | sponge lib/net/http/status.rb`

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-12 00:16:59 +00:00
normal 436eef270d net/http: clear compressed chunk after decompression
We no longer need the compressed data once the inflate block is
called; so clear it ASAP to reduce memory overhead.  This is a
small chunk, so it only saves a few hundred kilobytes with the
script below.

before:        RssAnon:     5976 kB
 after:        RssAnon:     5564 kB
------
require 'net/http'
require 'zlib'
response_gz = ARGV.shift or abort "#$0 TEMPORARY_FILE"

 # pre-create response since compressing is slower than decompressing
unless File.readable?(response_gz)
  nr = 16384 * 2
  buf = ((0..255).map(&:chr).join * 128)
  File.open(response_gz, 'wb') do |fp|
    gzip = Zlib::GzipWriter.new(fp)
    nr.times { gzip.write(buf) }
    gzip.close
  end
  buf.clear
end
response_gz = File.open(response_gz)

s = TCPServer.new('127.0.0.1', 0)
pid = fork do
  c = s.accept
  c.readpartial(16384).clear
  c.write("HTTP/1.1 200 OK\r\n" \
          "Content-Length: #{response_gz.stat.size}\r\n" \
          "Content-Encoding: gzip\r\n" \
          "Accept-Ranges: bytes\r\n" \
          "\r\n")
  IO.copy_stream(response_gz, c)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get(-'/') do |res|
    res.read_body(&:clear)
  end
end
puts File.readlines(-'/proc/self/status').grep(/RssAnon/)[0]
Process.waitpid2(pid)
------
* lib/net/http/response.rb (inflate_adapter): clear compressed_chunk

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-08 10:23:27 +00:00
normal b02fc0f9fe net/protocol: read directly into rbuf if it's empty
There's no need to allocate a temporary string when @rbuf is
empty, we can use it as the read_nonblock destination buffer to
save both allocation overhead and avoid a later memcpy.

This results in a halving user CPU time and tiny memory
reduction with the script below:

             user     system      total        real
before   0.603333   0.539999   1.143332 (  1.143347)
       RssAnon:     5624 kB

after    0.283334   0.560000   0.843334 (  0.846072)
       RssAnon:     5592 kB

------
require 'net/http'
require 'benchmark'
s = TCPServer.new('127.0.0.1', 0)
len = 1024 * 1024 * 1024 * 2
pid = fork do
  c = s.accept
  c.readpartial(16384).clear
  c.send("HTTP/1.0 200 OK\r\nContent-Length: #{len}\r\n\r\n", Socket::MSG_MORE)
  IO.copy_stream('/dev/zero', c, len)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get('/') do |res|
    puts(Benchmark.measure { res.read_body(&:clear) })
  end
end
puts File.readlines("/proc/self/status").grep(/RssAnon/)[0]
Process.waitpid2(pid)
------

* lib/net/protocol.rb (rbuf_fill): avoid allocation if rbuf is empty
  [ruby-core:84678] [Feature #14326]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-08 00:34:47 +00:00
normal 816efa9ae1 net/protocol: use binary string buffers
Not an encoding expert, but this seems necessary for the next
change.  All of the IO#read, IO#read_nonblock and related
methods will return a binary string when given a length
argument; so anything appended to these buffers via <<
will be binary.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-08 00:34:42 +00:00
normal 0d63d4eee6 Revert "net/protocol: use binary string buffers"
Oops, not ready, yet (will work on this tomorrow :x).
This reverts commit r61638

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-06 09:23:43 +00:00
normal e56d34001f net/ftp: fix FrozenError in BufferedSocket
I noticed this bug while working on something else with
RUBYOPT=-d on, existing test cases all passed with it.

Note: I use String.new because it is the local style, here,
I prefer +'' (or ''.b, for a future commit)

* lib/net/ftp.rb (BufferedSocket#read): use String.new
* test/net/ftp/test_buffered_socket.rb (test_read_nil): new test
  [ruby-core:84675] [Bug #14323]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-06 09:21:35 +00:00
normal 7d34bdb81d net/protocol: use binary string buffers
Not an encoding expert, but this seems necessary for the next
change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-06 09:21:12 +00:00
kazu 660740a75d Update Status Code
see https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-06 04:55:07 +00:00
kazu 34cd43aca9 Add 103 Early Hints
see https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-06 04:55:06 +00:00
kazu c4e5930f9d Specify frozen_string_literal: true
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61633 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-06 04:55:05 +00:00
normal d9beb7690f net/protocol: optimize large read case
There are several places where rbuf_consume is called with
@rbuf.size as its length arg; simplify that case by avoiding
the slow String#slice! operation in favor of a lightweight
replacement.

The following script exhibits reduced memory usage and
runtimes using the time(1) command:

	2.9s =>  2.6s
	70MB => 12 MB

---------
require 'net/http'
require 'digest/md5'
Thread.abort_on_exception = true
s = TCPServer.new('127.0.0.1', 0)
len = 1024 * 1024 * 1024
th = Thread.new do
  c = s.accept
  c.readpartial(16384)
  c.write("HTTP/1.0 200 OK\r\nContent-Length: #{len}\r\n\r\n")
  IO.copy_stream('/dev/zero', c, len)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get('/') do |res|
    dig = Digest::MD5.new
    res.read_body { |buf|
      dig.update(buf)
      # String#clear is important to reduce malloc overhead,
      # but most Ruby programmers don't do this :<
      buf.clear
    }
    puts dig.hexdigest
  end
end
----------

* lib/net/protocol (rbuf_consume): optimize for @rbuf.size == len
  [Feature #14268]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-05 02:22:23 +00:00
naruse 0078e40115 raise error if value contains CR/LF in iniheader of initialize_http_header
like r59693, initialize_http_header also should raise error. [Bug #14208]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-20 12:06:59 +00:00
nagachika 6d3f72e5be Fix a command injection vulnerability in Net::FTP.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-14 13:41:30 +00:00
shyouhei f2a91397fd Add uplevel keyword to Kernel#warn and use it
If uplevel keyword is given, the warning message is prepended
with caller file and line information and the string "warning: ".
The use of the uplevel keyword makes Kernel#warn format output
similar to how rb_warn formats output.

This patch modifies net/ftp and net/imap to use Kernel#warn
instead of $stderr.puts or $stderr.printf, since they are used
for printing warnings.

This makes lib/cgi/core and tempfile use $stderr.puts instead of
warn for debug logging, since they are used for debug printing
and not for warning.

This does not modify bundler, rubygems, or rdoc, as those are
maintained outside of ruby and probably wish to remain backwards
compatible with older ruby versions.

rb_warn_m code is originally from nobu, but I've changed it
so that it only includes the path and lineno from uplevel
(not the method), and also prepends the string "warning: ",
to make it more similar to rb_warn.

From: Jeremy Evans code@jeremyevans.net
Signed-off-by: Urabe Shyouhei shyouhei@ruby-lang.org


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-12 11:56:25 +00:00
stomar 35bd2ad25e http.rb: improve docs
* lib/net/http.rb: [DOC] fix typos and grammar

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-07 20:13:48 +00:00
naruse 3acc0ba1d8 Host header should add branckets to IPv6 address [Bug #12642]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-26 15:29:36 +00:00
normal 752faf4fb4 net/http: use require_relative to reduce syscalls
require_relative speeds up loading of files by reducing path
lookups.  On a clean install with RubyGems-enabled,
"ruby -rnet/http -e exit" shows a reduction in failed open(2)
syscalls from 410 to 350 (x86-64 GNU/Linux).

I could not measure a time difference on my Linux-based
machines, however this should be noticeable to users of other
kernels with worse syscall and VFS performance than Linux.

Further use of require_relative will reduce lookups in other
places.

* lib/net/http.rb: use require_relative
  [ruby-core:78285] [Feature #12973]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-24 01:22:08 +00:00
hsbt 6693e3e723 Fixed misspelling words.
These are detected by https://github.com/client9/misspell

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-22 11:27:06 +00:00
naruse dcea9198a9 Introduce Net::HTTP#min_version/max_version [Feature #9450]
Set SSL minimum/maximum version.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-21 16:25:22 +00:00
kazu dabdec31e4 Use caller with length to reduce unused strings
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-21 14:40:03 +00:00
kazu 73d128ff2c Fix warning: assigned but unused variable
[Bug #14020][ruby-core:83313]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-17 11:58:51 +00:00
naruse c4130b0958 Net::HTTP.new: Support no_proxy parameter [Feature #11195]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-28 10:51:37 +00:00
kazu 8aebd7e9eb Fix exception class [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-27 12:32:57 +00:00
naruse 4f4d724720 Make retries for Net::HTTP configurable [Feature #10674]
by stereobooster
fix https://github.com/ruby/ruby/pull/1654

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-26 14:00:25 +00:00
naruse 56f91c6ec5 HTTPHeader#add_field should allow binary [Bug #13926]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-25 14:28:53 +00:00
eregon 2dd35a7453 Prefer adapting specs to complicating library code
* lib/net/ftp.rb (Net::FTP#initialize): simplify as per
  the original intent.
* spec/ruby/library/net/ftp/initialize_spec.rb: adapt specs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-20 21:50:14 +00:00
eregon aaf07f7ad5 Adapt tools to follow spec/rubyspec => spec/ruby rename
* [Misc #13792] [ruby-core:82287]
* Prefer test-spec over test-rubyspec in spec/README.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-20 20:19:54 +00:00
naruse 16225d823d include query parameters in Net::HTTP.post
patched by Samuel Giddins <segiddins@segiddins.me>
https://github.com/ruby/ruby/pull/1686 fix GH-1686

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59923 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-15 16:53:55 +00:00
ko1 7e8cdaa6c3 to_str -> to_s
* lib/net/http/header.rb (set_field): `val` can not have `to_str`.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-30 22:23:45 +00:00
naruse 427f5b5713 A HTTP Header value must not contain CR or LF.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-30 17:24:05 +00:00
shugo 21e4ade56b lib/net/imap.rb: Accept continuation requests without response text
The IMAP server of DOCOMO returns such continuation requests.
[ruby-list:50558]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-27 06:32:00 +00:00
kazu 92c52f0832 Fix `NameError: uninitialized constant Net`
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-04 12:00:00 +00:00
kazu c8247a6b47 Fix variable name in example of net/pop
[ci skip]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-02 15:10:42 +00:00
kazu b93aea84d0 Fix net/pop code example syntax error
ref https://github.com/rurema/doctree/pull/455
[ci skip]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-02 15:10:40 +00:00
shugo ae91976d56 lib/net/imap.rb: support CHANGEDSINCE and MODSEQ
Patch by plehoux (Philippe-Antoine Lehoux).  [ruby-core:64272] [Feature #10119]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-26 07:47:34 +00:00
kazu 0055f09bcc Use `unpack1` instead of `unpack` and `[0]`
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-20 23:34:03 +00:00
shugo ece6c6741e lib/net/pop.rb: support timeout for TLS handshake
Patch by ahorek (Pavel Rosický).  [ruby-core:80490] [Feature #13389]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-19 23:38:31 +00:00
shugo 016586824f lib/net/imap.rb: Ignore trailing space for Microsoft Exchange Server
Based on the patch by keysen (Jérémy Carlier).
[ruby-core:81641] [Bug #13649]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-19 23:08:34 +00:00
normal cbedbaf9d9 lib/net/protocol.rb: account read_bytes before caller sees it
Users may modify the chunk yielded to them in Net::HTTPResponse#read_body.
This will allow users to reduce memory usage by calling
String#clear on the buffer once they're done using it.

* lib/net/protocol.rb (read): increment read_bytes earlier
  (read_all): ditto
* test/net/http/test_httpresponse.rb (test_read_body_block_mod): new test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22 07:36:00 +00:00
shugo 27fb27ff42 net/imap: separate @continuation_request_exception from @exception
Otherwise literal data will be sent even if NO response is returned
because @exception is set to nil in receive_responses.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-22 06:13:11 +00:00
normal 8623ba8618 lib/net/protocol: clear short-lived read buffer
Using a parallel Net::HTTP downloader, this reduced memory usage
from around 120MB to 50MB on my 32-bit x86 system.

* lib/net/protocol.rb (rbuf_fill): clear temporary buffer

Test script I used:

  require 'net/http'
  require 'uri'
  require 'digest/sha1'
  url = 'http://80x24.org/git-i-forgot-to-pack/objects/pack/pack-97b25a76c03b489d4cbbd85b12d0e1ad28717e55.idx'
  uri = URI(url)
  use_ssl = "https" == uri.scheme
  thrs = 30.times.map do
    Thread.start do
      cur = Thread.current.object_id
      Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
        req = Net::HTTP::Get.new(uri)
        http.request(req) do |res|
          dig = Digest::SHA1.new
          res.read_body do |buf|
            dig.update(buf)
            #buf.clear # most Ruby programmers don't do this :<
          end
          warn "#{Time.now} #{cur} #{dig.hexdigest}\n"
        end
      end
      :done
    end
  end

  p thrs.map(&:value)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-21 23:52:08 +00:00
naruse 79d9955180 Define classes for r58800
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58803 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-19 16:19:46 +00:00
naruse bd73d37471 Net::HTTP::STATUS_CODES is added as HTTP Status Code Repository [Misc #12935]
Note that 418 I'm a teapot doesn't exist because RFC 2324 and
RFC 7168 are not registered in IANA repository.
https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-19 16:06:25 +00:00
naruse cca77ee9ca Add more HTTP status classes
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-19 16:06:18 +00:00
naruse 67723c1e46 Net::HTTP#start now pass :ENV to p_addr by default [Bug #13351]
To avoid this, pass nil explicitly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-19 15:13:42 +00:00
svn 940f32eb5d * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-19 09:25:53 +00:00
shugo 84c1596342 net/imap: Net::IMAP#append should not block when NO response is received
[ruby-dev:50129] [Bug#13579]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-19 09:25:52 +00:00
shugo 5bf395f4cb net/imap: Revert read_tiemout in r58549.
get_response is called in a receiver thread, so there may be no pending
commands when get_response is called.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-12 09:39:23 +00:00
shugo cea73b2df9 net/imap: Net::IMAP#disconnect need not do anything if already disconnected
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-11 07:56:52 +00:00
shugo 8b51a725db net/imap: handle timeouts
Patch by Pavel Rosický.  [Feature #13379] [ruby-core:80440]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-03 11:32:22 +00:00
naruse c7ec1b1f59 Allow Net::HTTP to fetch user/pass from http_proxy
Note that this feature is enabled only on environment variables are
multi-user safe. In this time the list includes Linux, FreeBSD, or
Darwin. [Bug #12921]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-23 16:19:23 +00:00
kazu 6ca3028eec lib/net/smtp.rb: Specify frozen_string_literal: true.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-12 12:17:33 +00:00
shugo 58935eb8bd lib/net/protocol.rb: preserve backtrace information
BufferedIO#rbuf_fill should preserve backtrace information when raising
EOFError.  Otherwise, users get confused when EOFError is leaked out from
Net::SMTP etc.  [ruby-core:78550] [Bug #13018]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-12 02:19:17 +00:00
kazu 3e34d8a44f lib/net/protocol.rb: Specify frozen_string_literal: true.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-11 14:48:51 +00:00
kazu 1dd076c557 lib/net/pop.rb: Specify frozen_string_literal: true.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57297 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-10 12:32:56 +00:00
shugo fa7066f818 Suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-29 08:44:21 +00:00
shugo 7242e6a9b6 net/ftp: add a new option ssl_handshake_timeout to Net::FTP.new.
The TLS handshake timeout can be specified independently, because the TLS
handshake doesn't start just after the underlying connection is established,
but after the AUTH command is completed.  It's also useful for testing
purposes.  However, if ssl_handshake_timeout is not specified, open_timeout
is used instead for convenience.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-29 02:47:11 +00:00
shugo a4072112b2 net/ftp: close the socket directly when an error occurs during TLS handshake.
Otherwise, @sock.read in Net::FTP#close hungs until read_timeout exceeded.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-29 02:33:34 +00:00
shugo 2660dd5b16 net/ftp: close the connection if the TLS handshake timeout is exceeded.
Otherwise, file descriptor leaks may occur in Net::FTP.new.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-29 02:21:50 +00:00
shugo 473d0d3211 net/ftp: support timeout for TLS handshake.
Net::FTP inherits ssl_socket_connect from Net::Protocol to implement timeout.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-26 09:29:11 +00:00
shugo ae40b481e7 Add CR/LF check to Net::FTP#status.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-23 15:10:19 +00:00
normal c0bc825b50 lib/net/ftp: fix typo
* lib/net/ftp.rb (shutdown): fix typo

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-23 08:10:44 +00:00
shugo a7a1391fc9 Disconnect immediately even if Net::FTP#close is called without quit.
In that case, BufferedSSLSocket#read in FTP#close exceeded timeout because
BufferedSSLSocket#shutdown did nothing.  So BufferedIO#rbuf_fill is
overridden in BufferedSSLSocket to raise an EOFError if the connection is
shut down.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-23 00:34:13 +00:00
shugo e50266f299 Add a new optinal argument pathname to FTP#stat.
Based on the patch by soleboxy.
[Fix GH-1478] [ruby-core:78240] [Feature #12965]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-23 00:03:27 +00:00
shugo d59bfb2d06 Add BufferedSSLSocket#send.
SSLSocket#send is not defined, so use #write instead.  flags and dest are
ignored.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-22 05:17:45 +00:00
normal f845a9ef76 lib/*: remove closed checks
Follow r56795.  Since Ruby 2.2, calling #close on a closed
socket no longer raises exceptions.

* lib/cgi/session.rb (update): remove closed? check
* lib/net/http.rb (finish, transport_request): ditto
* lib/net/imap.rb (disconnect): ditto
* lib/net/pop.rb (do_start, do_finish): ditto
* lib/net/smtp.rb (do_start, do_finish): ditto
* lib/open3.rb (popen_run, pipeline_run): ditto
* lib/pstore.rb (transaction): ditto
* lib/shell/process-controller.rb (sfork):
* lib/tempfile (_close, call, Tempfile.create): ditto
* lib/webrick/httpauth/htdigest.rb (flush): ditto
* lib/webrick/httpauth/htpasswd.rb (flush): ditto
* lib/webrick/server.rb (start_thread, cleanup_shutdown_pipe): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56865 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 23:05:41 +00:00
nobu 8e38387076 ftp.rb: fix typo [ci skip]
* lib/net/ftp.rb (Net::FTP#initialize): [DOC] fix type in option
  name, :username is used but :use is not.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 12:34:54 +00:00
shugo 30cc5ce4bd Add new options open_timeout and read_timeout to Net::FTP.new.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 10:38:31 +00:00
shugo 4c839a2cec Use dynamic dispatch instead of is_a?.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 08:55:25 +00:00
rhe 4081b34d4c net/http: avoid writing/reading from unstarted SSL socket
When net/http connects to an HTTPS server through a CONNECT proxy, it
writes the CONNECT request to an unconnected OpenSSL::SSL::SSLSocket.

OpenSSL::SSL::SSLSocket traditionally fallbacks to a method call on the
underlying IO object if a read/write method is called before the TLS
connection is established. So it automagically works correctly, emitting
the "SSL session is not started yet" warning.

This is not obvious at first glance. The warning is also noisy. Let's
just write to the plain socket instead of relying on the SSLSocket's
behavior.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 05:02:58 +00:00
shugo 714d72c90c Remove an unused variable to suppress a warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-20 09:11:44 +00:00
shugo fb8628ecda remote_address should be called on @bare_sock.
Because @sock.remote_address fails if @sock is an SSLSocket.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-20 01:49:25 +00:00
shugo f0dd33d549 shutdown(2) should not be called for SSLSocket.
SSLSocket#stop is a private method and cannot be called, but explicit calls
are not necessary because SSL_shutdown() is called from SSLSocket#close.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-20 01:44:07 +00:00
shugo 73199e1e82 Use Socket instead of TCPSocket/TCPServer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-19 11:01:55 +00:00
shugo 77403c88cd Expand abbreviated option names.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-19 07:02:32 +00:00
shugo 5f03f753ee Shut down TLS connections gracefully.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-19 04:19:35 +00:00
shugo b1bd36bf8e Remove garbage.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-19 02:40:33 +00:00
svn 1029d32c7f * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-19 02:29:24 +00:00
shugo eb8c73adbc Support TLS and hash styles options for Net::FTP.new.
If the :ssl options is specified, the control connection is protected with
TLS in the manner described in RFC 4217.  Data connections are also
protected with TLS unless the :private_data_connection is set to false.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-19 02:29:23 +00:00
shugo af36e316d7 ftp.rb: use Addrinfo interfaces
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-15 08:16:45 +00:00
nobu 9d6569ff40 ftp.rb: use Addrinfo
* lib/net/ftp.rb (sendport, makeport, makepasv, BufferedSocket):
  use Addrinfo interfaces.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-15 01:39:10 +00:00
nobu 9ec0f8b7cb net/ftp.rb: kwargs
* lib/net/ftp.rb (Net::FTP#open_socket): use keyword argument.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56780 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-14 07:59:50 +00:00
nobu dad2382270 net/protocol.rb: kwargs
* lib/net/protocol.rb (Net::BufferedIO#initialize): add keyword
  arguments for initial attributes.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-14 07:53:32 +00:00
a_matsuda 39edad0380 Fix undefined method 'dump' for nil:NilClass (NoMethodError)
Patch by: Dmitry Vorotilin <d.vorotilin@gmail.com> (@route)
Signed-off-by: Akira Matsuda <ronnie@dio.jp>

closes #1475

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-08 20:25:44 +00:00
shugo 88243c5303 * lib/net/http.rb (Net::HTTP.post): new convenience method to send a POST request.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-05 14:39:06 +00:00
naruse 8ec6fcb2f6 * lib/net/http.rb (transport_request): other than HTTPContinue
in 1xx (HTTPInformation) also needs to continue. [Bug #12890]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-05 14:08:16 +00:00
shugo 73b3b10d8d * lib/net/smtp.rb (tlsconnect): support timeout for TLS handshake.
[ruby-core:76893] [Bug #12678]

* lib/net/protocol.rb (ssl_socket_connect): new method to implement
  timeout for TLS handshake.

* lib/net/http.rb (connect): use Net::Protocol#ssl_socket_connect.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-05 06:47:36 +00:00
hsbt 5c200b9ab5 * lib/net/http/response.rb: Improve document readability.
[fix GH-1411][ci skip] Patch by @stz-seongheon

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-05 09:02:50 +00:00
kazu c616a9fa83 Update URL of Japanese document of net/pop
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56136 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-11 10:34:56 +00:00
hsbt 6f6ed7fbba * lib/net/http/header.rb: Fix typo. [ci skip][fix GH-1407]
* transcode.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 02:18:51 +00:00
shugo 554c879f1f * lib/net/http/generic_rquest.rb (write_header): A Request-Line must
not contain CR or LF.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-06 00:01:20 +00:00
shugo 34a0e098f7 * lib/net/ftp.rb (putline): raise an ArgumentError when
CR or LF is included in a line.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-05 22:14:18 +00:00
nobu 5026a663ab Cache no proxy case
* lib/net/http.rb (Net::HTTP#proxy_uri): cache the case no proxy
  is used.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-28 06:20:20 +00:00
nobu 8ff99deda9 Use conditional operator
* lib/net/http.rb (Net::HTTP#proxy): use conditional operator to
  get rid of confusing ruby-mode.el.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-28 06:19:58 +00:00
nobu 69b8fddd55 Remove dead link [ci skip]
* lib/net/smtp.rb: [DOC] Remove dead link on documentation for
  Japanese of SMTP.  [Fix GH-1380]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-11 06:19:40 +00:00
shugo 0827a7e52b * lib/net/smtp.rb (getok, get_response): raise an ArgumentError when
CR or LF is included in a line, because they are not allowed in
RFC5321.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-08 07:06:57 +00:00
ktsj 02377a3a79 * lib/net/http/header.rb: [DOC] add documentation that
Net::HTTPHeader#{each_header,each_name,each_capitalized_name,
  each_value,each_capitalized} without block returns an enumerator.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-04 09:46:48 +00:00
ktsj 6da2214119 * lib/net/http/header.rb (Net::HTTPHeader#{each_header,each_name,
each_capitalized_name,each_value,each_capitalized}): Return
  sized enumerators.

* test/net/http/test_httpheader.rb: add test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-04 09:46:46 +00:00
nobu e83922a3ce net/http/header.rb: refactor
* lib/net/http/header.rb (connection_close?): match headers
  without making intermediate arrays.

* lib/net/http/header.rb (connection_keep_alive?): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-25 07:56:07 +00:00
hsbt 44dc0f32d3 * lib/net/http.rb: Improve documentation for SSL requests via GET method.
[fix GH-1325][ci skip] Patch by @jsyeo

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-22 02:27:10 +00:00
nobu 0a19e7f0a3 net/ftp.rb: NullSocket#closed?
* net/ftp.rb: add NullSocket#closed? to fix closing not opened
  connection.  [Fix GH-1232]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-02-12 02:50:09 +00:00
hsbt 809d3770e6 * lib/net/http/header.rb: Warn nil variable on HTTP Header.
It caused to NoMethodError. [fix GH-952][fix GH-641] Patch by @teosz
* test/net/http/test_httpheader.rb: Added test for nil HTTP Header.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-29 01:46:02 +00:00
normal 778bbac8ac stdlib: avoid extra calls to eliminate "\n" from Base64
We may use the '0' (zero) to avoid adding the line feed.
Furthermore, the '*' (asterisk) modifier is not needed for
a single-element arrays.

* ext/psych/lib/psych/visitors/yaml_tree.rb (visit_String):
  eliminate chomp
* lib/net/http.rb (connect): eliminate delete
* lib/net/http/header.rb (basic_encode): ditto
* lib/net/imap.rb (authenticate): eliminate gsub
  (self.encode_utf7): shorten delete arg
* lib/net/smtp.rb (base64_encode): eliminate gsub
* lib/open-uri.rb (OpenURI.open_http): eliminate delete
* lib/rss/rss.rb: ditto
* lib/securerandom.rb (base64): ditto
  (urlsafe_base64): eliminate delete!
* lib/webrick/httpauth/digestauth.rb (split_param_value):
  eliminate chop
* lib/webrick/httpproxy.rb (do_CONNECT): eliminate delete
  (setup_upstream_proxy_authentication): ditto
  [ruby-core:72666] [Feature #11938]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-10 00:35:43 +00:00
hsbt 95aadb1426 * lib/net/http/responses.rb: Added new response class for 451 status code.
* lib/net/http.rb: documentation for HTTPUnavailableForLegalReasons

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-30 11:53:15 +00:00
a_matsuda 3a05da1321 [DOC] Fix typos
* benchmark.rb
* getoptlong.rb
* irb.rb
* net/http.rb
* net/http/header.rb
* net/imap.rb
* optparse.rb
* pstore.rb
* webrick.rb
* xmlrpc.rb

[ci skip]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-23 03:43:23 +00:00
normal 268da52347 lib/net/http.rb (open_timeout): update default value in RDoc [ci skip]
[ruby-core:72413]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-21 01:24:12 +00:00
naruse 3e92b635fb Add frozen_string_literal: false for all files
When you change this to true, you may need to add more tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
hsbt 059c9c1cf3 * ext/socket/lib/socket.rb: use safe navigation operator.
[fix GH-1142] Patch by @mlarraz
* lib/drb/extservm.rb: ditto.
* lib/net/http.rb: ditto.
* lib/net/http/response.rb: ditto.
* lib/scanf.rb: ditto.
* lib/uri/generic.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-14 08:05:35 +00:00
naruse dab944e319 fixup! * lib/net/http.rb (connect): detect closed connection and reconnect If the server closes a keep-alive http connection, the client socket reaches EOF. To avoid an EOFError, detect the closed connection and reconnect. Added test to ensure HTTP#post succeeds even if the keep-alive-connection has been closed by the server. by Kristian Hanekamp <kris.hanekamp@gmail.com> https://github.com/ruby/ruby/pull/1089 fix GH-1089
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-27 15:03:24 +00:00
naruse d249be6233 * lib/net/http.rb (connect): detect closed connection and reconnect
If the server closes a keep-alive http connection, the client socket
  reaches EOF. To avoid an EOFError, detect the closed connection and
  reconnect.
  Added test to ensure HTTP#post succeeds even if the
  keep-alive-connection has been closed by the server.
  by Kristian Hanekamp <kris.hanekamp@gmail.com>
  https://github.com/ruby/ruby/pull/1089 fix GH-1089

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-27 14:07:35 +00:00
hsbt f0002bd5a2 * lib/net/http.rb: Fixed regression for Net::HTTP::PUT with "Expect-100"
header.
* test/net/http/test_http.rb: added test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-20 05:57:10 +00:00
hsbt 2c97d69052 * lib/net/http.rb: set hostname before call ossl_ssl_set_session.
[Bug #11401][ruby-core:70152][fix GH-964] Patch by @mkarnebeek

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-20 05:40:04 +00:00
shugo 58af10ecbd * lib/net/ftp.rb (initialize): Connections are in passive mode per
default now.  The default mode can be changed by
  Net::FTP.default_passive=.

* lib/net/ftp.rb (default_passive=, default_passive): new methods.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-11 03:48:45 +00:00
naruse 52e1c3b0ab * lib/net/http.rb (Net::HTTP#initialize):
default value of Net::HTTP#open_timeout is now 60 (was nil).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-07 16:48:49 +00:00
nobu 837babd564 change DOTQ
* defs/id.def (token_ops), parse.y (parser_yylex): change DOTQ
  from ".?" to "&.".  [ruby-core:71363] [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-06 03:39:23 +00:00
shugo e0ea5e903b * lib/net/imap.rb: remove an empty comment line and -*-.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 06:29:08 +00:00
shugo 3eabc555cb * lib/net/ftp.rb (gettextfile, getbinaryfile): use the safe
navigation operator.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 06:23:16 +00:00
shugo 68fc350abe * lib/net/imap (idle): add a new argument timeout for keep-alive.
[ruby-core:63693] [Bug #10031]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 09:32:19 +00:00
shugo 3e70f44ae9 * lib/net/ftp.rb (parse257): refactor.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 08:29:36 +00:00
shugo 5a0f41a588 * lib/net/imap.rb: use frozen_string_literal: true.
* test/net/imap/test_imap.rb: ditto.

* test/net/imap/test_imap_response_parser.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 07:42:34 +00:00
shugo ae6555aa25 * lib/net/ftp.rb: use frozen_string_literal: true.
* test/net/ftp/test_buffered_socket.rb: ditto.

* test/net/ftp/test_ftp.rb: ditto.

* test/net/ftp/test_mlsx_entry.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 07:28:10 +00:00
shugo 275b38937e * lib/net/ftp.rb (mtime): use usec instead of fractions to parse
decimal fractions of a second correctly when the number of digits
  is not 6.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-28 08:43:44 +00:00
shugo 040ae91040 * lib/net/ftp.rb (mtime): parse decimal fractions of a second as
specified in RFC 3659.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-28 07:10:25 +00:00
hsbt 08b54fbd0d * lib/net/http.rb: removed unused variable. It's removed at r13648.
[fix GH-1022] Patch by @nkondratyev

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-25 01:07:30 +00:00
shugo 5425099a9f * lib/net/ftp.rb (parse_mlsx_entry): parse pathnames including
space correctly.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-14 10:27:28 +00:00
shugo ca48cc4ad5 * lib/net/ftp.rb (size, modify, create, type, unique, perm, lang,
media_type, charset): new methods to return standard facts.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-13 00:47:01 +00:00
svn 520796770e * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 14:12:19 +00:00
shugo 2478c7bc33 * lib/net/ftp.rb (file?, directory?, appendable?, creatable?,
deletable?, enterable?, renamable?, listable?, directory_makable?,
  purgeable?, readable?, writable?): new methods.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 14:09:45 +00:00
shugo 2ec793ab27 * lib/net/ftp.rb (FACT_PARSERS): support system dependent facts
UNIX.mode, UNIX.owner, UNIX.group, UNIX.ctime, and UNIX.atime.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 12:29:32 +00:00
shugo 777c719450 * lib/net/ftp.rb (parse_mlsx_entry, mlst) raise an FTPProtoError
when parsing failed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 09:16:21 +00:00
shugo 57785b16b9 * lib/net/ftp.rb (TIME_PARSER): use "Z" instead of "00:00" to
get UTC time.  Thanks, Wilson Bilkovich.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 09:03:44 +00:00
svn 8b3d351f83 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 08:57:58 +00:00
shugo 8a97ffe094 * lib/net/ftp.rb (mlst, mlsd): support new commands MLST and MLSD
specified in RFC 3659.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-12 08:57:17 +00:00
shugo 782e2148af * lib/net/ftp.rb (size, mdtm, system): parse responses according to
RFC 959 and 3659, where reply codes must be followed by SP.

* lib/net/ftp.rb (system): remove LF from the return value.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-11 02:23:31 +00:00
shugo 5c09cb9c1e * lib/net/ftp.rb (getmultiline): refactor.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-10 06:16:37 +00:00
shugo d5d6b149df * lib/net/ftp.rb (list): fetch all the lines before yielding a block
to allow other commands in the block.  [Feature #11454]
  Patched by Srikanth Shreenivas.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-08 06:08:20 +00:00
ktsj 9cf11b70ca * lib/net/http/response.rb (Net::HTTPResponse::Inflater#finish):
fix a bug that empty gzipped response body causes Zlib::BufError.
  [ruby-core:68846] [Bug #11058]

* test/net/http/test_httpresponse.rb: tests for the above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-01 08:23:32 +00:00
ktsj d7bb66df26 * lib/net/http/response.rb (Net::HTTPResponse#inflater):
fix TypeError. An exception object might be nil.
  [ruby-core:68846] [Bug #11058]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51464 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-01 08:22:50 +00:00
hsbt ea67287ac1 * lib/net/http/responses.rb: Added 308 status to CODE_TO_OBJ list.
[fix GH-961] Patch by @billinghamj

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-09 01:19:01 +00:00
naruse 7604ca41ff fix previous commit for nil case
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-29 10:04:33 +00:00
naruse 84de36c748 * lib/net/http/response.rb (inflater): CONTENT_ENCODING can be upper
case. [ruby-core:69670] [Bug #11285] patched by Andy Chu

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-29 07:14:31 +00:00
eregon 6cdc55f4a3 * lib/net/ftp.rb (makeport): close the TCPServer
when sending the port fails.
* test/net/ftp/test_ftp.rb: test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-27 10:10:54 +00:00
naruse bab5bf0c79 * lib/net/http.rb (Net::HTTP#connect): use connect_nonblock and
io/wait. fix GH-899

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-15 02:11:20 +00:00
normal 16aeffefa2 lib/*: use monotonic clock for timeouts
The monotonic clock is preferred as it is guaranteed to be
continuous and not subject to jumps due to adjustments.

* lib/net/resolv.rb (request): use monotonic clock
* lib/net/http.rb (begin_transport, end_transport): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-29 01:40:26 +00:00
hsbt 0b5ecba435 * lib/net/telnet.rb: gemify net-telnet.
[Feature #11083]
* gems/bundled_gems: added net-telnet to bundled gems.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-21 06:46:14 +00:00
shugo f954f0d840 * lib/net/imap.rb (body_ext_mpart): should work even if body-fld-dsp
is omitted.  [ruby-core:69093] [Bug #11128]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-08 06:46:18 +00:00
shugo c8cb2598d1 * lib/net/imap.rb (move, uid_move): support the MOVE command defined
in RFC6851.  Patch by ojab ojab.
  [ruby-core:68960] [Feature #11077]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-22 09:43:55 +00:00
hsbt 325a50fc57 * ext/openssl/*: use license instead of licence.
[fix GH-876][ci skip] Patch by @davydovanton
* lib/net/https.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-20 03:55:09 +00:00
normal b90ad8a2f6 lib/net/*: use io/wait methods instead of IO.select
io/wait is expected to work on any platform where sockets are
supported.  io/wait methods uses fewer allocations and uses
ppoll internally under Linux for better performance on
high-numbered FDs.

[ruby-core:35572] describes the performance advantage of ppoll
on high-numbered FDs.

* lib/net/protocol.rb (rbuf_fill): use IO#wait_*able
* lib/net/http/generic_request.rb (wait_for_continue): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-15 20:11:23 +00:00
normal db2ff03bc0 lib/net/protocol.rb (rbuf_fill): avoid exception with read_nonblock
Exceptions are noisy in debug output and waste allocations.
Use "exception: false" introduced in 2.1 to return symbols for
common errors instead.

Follow-up commits will be prepared to reduce EOFError exceptions
to further quiet debug output and IO.select may be replaced by
io/wait methods if available to reduce allocations.

[ruby-core:68787] [Feature #11044]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50219 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-10 21:05:29 +00:00
naruse 58835a94ef * lib/net/http.rb (edit_path): use path which is absolute ftp url
on using ftp_proxy.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-03 23:18:20 +00:00
shugo cd29e5fcef * lib/net/ftp.rb (chdir, delete, gettextfile, mdtm, mkdir, nlst,
putbinaryfile, puttextfile, rename, rmdir, size): support
  Pathname. Patch by Joe Rafaniello. [fix GH-828]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-10 02:26:06 +00:00
hsbt 1a98f56ae1 * lib/net/http/header.rb: pass header names as symbols.
Patch by @DamirSvrtan [fix GH-805]
* test/net/http/test_httpheader.rb: added test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-08 11:09:44 +00:00
ayumin 1711e80cf1 Revert r49118 [Feature #10652]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-03 11:36:35 +00:00
ayumin 68f7424bde * lib/net/http.rb (proxy_user): retrieve proxy user from http_proxy.
* lib/net/http.rb (proxy_pass): retrieve proxy password from http_proxy.
  Patch by Rafael dos Santos Silva. [fix GH-763]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-03 07:21:56 +00:00
hsbt a84bfcbf00 * lib/net/http.rb: More descriptive error message when net/http fails
to connect to a server. Patch by @xaviershay [fix GH-700]
* test/net/http/test_http.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-03 01:38:59 +00:00
hsbt 2743ad8c25 * lib/net/http.rb (Net::HTTP#send_request): there is no response body
with HEAD request. Patch by @rodrigosaito [fix GH-520]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49105 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-02 12:07:04 +00:00
naruse 0f7e301fe1 * lib/net/http/response.rb (Net::HTTPResponse): require one or more
spaces [Bug #10591].
  by leriksen <leif.eriksen.au@gmail.com>
  https://github.com/ruby/ruby/pull/782 fix GH-782
  NOTE: graph.facebook.com returns without SP Reason-Phrase.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-23 18:10:19 +00:00
shugo a0b80a4410 * lib/net/imap.rb: Fix undefined variable usage & refactor/DRY
code.  Patch by @aledovsky. [Fixes GH-770]

* test/net/test_imap.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-06 01:13:45 +00:00
naruse c7855be25c use clock_gettime to avoid object creation
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-26 08:22:35 +00:00
drbrain 711ece42cd * lib/net/http.rb: Do not attempt SSL session resumption when the
session is expired.  [Bug #10533]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-25 07:09:48 +00:00
usa 9bbfca81ea * lib/net/imap.rb (Net::IMAP::ResponseParser::BEG_REGEXP): no need to use embbed
string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-20 15:29:51 +00:00
svn 5a79fda5b4 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-13 16:32:45 +00:00
shugo 772e9778fb * lib/net/imap.rb (search_response): parse MODSEQ in SEARCH
responses properly.  [ruby-core:64203] [Bug #10112]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-13 16:32:15 +00:00
knu a87c88bcd4 Document that Net::IMAP#fetch will return nil instead of an emtpy array.
* lib/net/imap.rb (Net::IMAP#fetch): [DOC] Document that
  Net::IMAP#fetch will return nil instead of an emtpy array.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-31 07:36:31 +00:00
normal 9bb7dfa247 normalize reference to Timeout::Error
From: John Bachir <j@jjb.cc>

* bootstraptest/test_io.rb (assert_finish):
  normalize rescue for Timeout::Error
* lib/net/ftp.rb (Net#read_timeout): ditto for doc
* lib/resolv.rb (Resolv::ResolvTimeout): ditto for subclass
* lib/webrick/httprequest.rb (_read_data): ditto for rescue
* sample/timeout.rb (p timeout): ditto for call
* test/drb/drbtest.rb (test_06_timeout): ditto
* test/ruby/test_readpartial.rb (test_open_pipe): ditto
* test/thread/test_queue.rb (test_queue_thread_raise): ditto
* thread.c (rb_thread_s_handle_interrupt): ditto for doc
  [ruby-core:65481] [misc #10339]

TimeoutError is a legacy constant, Timeout::Error is the canonical constant.
This patch normalizes all code and comments to reference Timeout::Error.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-07 20:00:09 +00:00
hsbt 3e8515bf36 * lib/drb/drb.rb: use attr_reader instead of Module#attr.
[Feature #10172][ruby-core:64582]
* lib/irb/ruby-token.rb: ditto.
* lib/net/telnet.rb: ditto.
* lib/rdoc/ruby_token.rb: ditto.
* lib/thwait.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-27 12:10:21 +00:00
hsbt ef4c25720a * lib/net/imap.rb: split executable code into sample directory.
* sample/net-imap.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-21 03:40:42 +00:00
hsbt c6efc649f8 * lib/net/imap.rb: removed commented-out code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-21 03:24:06 +00:00
naruse f01485b4ec * lib/net/http.rb (Net::HTTP.proxy_uri): use initializer instead
of parser to handle IPv6 address. [Bug #9129]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-05 19:37:37 +00:00
naruse 90a16cb228 * lib/net/http/requests.rb (Net::HTTP::Options::RESPONSE_HAS_BODY):
OPTIONS requests may have response bodies. [Feature #8429]
  http://tools.ietf.org/html/rfc7231#section-4.3.7

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-05 19:20:28 +00:00
naruse 70a2eb6399 * lib/net/http/generic_request.rb (Net::HTTP::GenericRequest#exec):
handle req['host'] in update_uri.

* lib/net/http/generic_request.rb
  (Net::HTTP::GenericRequest#update_uri):
  use req['host'] if it is explicitly set. Even if URI is given,
  it is already used for the initial value of req['host'].
  Therefore overwritten value should be respected. [Bug #10054]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-05 19:10:23 +00:00
naruse c165203564 * lib/net/http/generic_request.rb
(Net::HTTP::GenericRequest#update_uri):
  handle scheme, host, and port to reflect connection to @uri.

* lib/net/http.rb (Net::HTTP#begin_transport): move trivial handling
  to Net::HTTP::GenericRequest#update_uri.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-05 19:10:05 +00:00
naruse 159fa373f8 * lib/net/http/generic_request.rb
(Net::HTTP::GenericRequest#initialize):
  optimize object allocation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-05 19:09:43 +00:00
hsbt 448c87008e * lib/cgi/core.rb: remove unused variables.
* lib/erb.rb: ditto.
* lib/mkmf.rb: ditto.
* lib/net/http/response.rb: ditto.
* lib/optparse/version.rb: ditto.
* lib/prime.rb: ditto.
* lib/racc/parser.rb: ditto.
* lib/rexml/document.rb: ditto.
* lib/rexml/dtd/dtd.rb: ditto.
* lib/rexml/element.rb: ditto.
* lib/rexml/functions.rb: ditto.
* lib/rexml/parsers/xpathparser.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-27 11:04:28 +00:00
kosaki 00eb720394 * lib/net/smtp.rb (Net::SMTP#data): enable buffering while
'data' send for optimizing Net::SMTP#send_message.
  [ruby-dev:48329] [misc #9981]
  patch by Masahiro Tomita.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46793 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-11 19:22:19 +00:00
naruse d8a2c3c03f * lib/net/htp/response.rb (Net::Inflater#inflate_adapter):
prevent automatic encoding conversion.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-03 19:46:44 +00:00
naruse 6811973d13 * lib/net/http/response.rb (Net::HTTP.each_response_header):
raise first exception even if inflate_body_io.finish raises error.
  when begin block raises error, finish usually raises error too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-03 19:46:34 +00:00
naruse 88df8816f1 change default not tot create useless object
initheader = initheader ? initheader.dup : {}

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-03 17:59:49 +00:00
knu 4fa35e0e9d * lib/net/imap.rb (Net::IMAP#fetch): [DOC] Describe how a range in
+set+ is interpreted, and mention -1 which can be used for '*'.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-23 08:46:11 +00:00
shugo 6479e0b04f * lib/net/ftp.rb (gets, readline): read lines without LF properly.
[ruby-core:63205] [Bug #9949]

* test/net/ftp/test_buffered_socket.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-17 07:44:53 +00:00
hsbt 595782b924 * lib/net/http/responses.rb: added Net::HTTPPermanentRedirect(308)
Contributed by @yorkie [fix GH-638]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-12 09:32:36 +00:00
shugo 87505dd771 * lib/net/imap.rb (body_type_1part): Gmail IMAP reports a body
type as "MIXED" followed immediately by params
	  [ruby-core:62864] [Bug #9885]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-03 04:19:57 +00:00
akr cbd370f669 * lib/net/imap.rb (Net::IMAP#initialize): Close the opened socket when
any exception occur.
  This fixes a fd leak by IMAPTest#test_imaps_post_connection_check
  which start_tls_session() raises an exception.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-28 10:02:54 +00:00
akr 569ca78e97 * lib/net/ftp.rb (transfercmd): Close TCP server socket even if an
exception occur.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46182 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-27 15:14:59 +00:00