Project

General

Profile

Bug #12044

net/ftp.rb: add NullSocket#closed? to fix closing not yet opened connection

Added by antstorm (Anthony Dmitriyev) over 3 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
ruby-core
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14]
[ruby-core:73638]

Description

Hi there,

I've opened a PR for this issue on GitHub: https://github.com/ruby/ruby/pull/1232

An instance of NullSocket is stored in a @sock variable of a new Net::FTP, it also has a #close method (that obviously does nothing), but it is never called, because a wrapping Net::FTP#close checks that @sock and not @sock.closed? which crashes with FTPConnectionError because there is no method #closed? on NullSocket. This PR adds it and a test to verify that it works.

Below is the way to reproduce the error in the IRB. As you can see it's quite confusing, you'd expect #closed? not to raise an error, but return true instead.

>> ftp = Net::FTP.new
=> #<Net::FTP:0x007f90c38075e0 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Thread::Mutex:0x007f90c3807590>, @binary=true, @passive=true, @debug_mode=false, @resume=false, @sock=#<Net::FTP::NullSocket:0x007f90c3807568>, @logged_in=false, @open_timeout=nil, @read_timeout=60>
>> ftp.close
Net::FTPConnectionError: not connected
    from /usr/local/var/rbenv/versions/2.3.0/lib/ruby/2.3.0/net/ftp.rb:1277:in `method_missing'
    from /usr/local/var/rbenv/versions/2.3.0/lib/ruby/2.3.0/net/ftp.rb:1168:in `close'
    from (irb):6
    from /usr/local/var/rbenv/versions/2.3.0/bin/irb:11:in `<main>'
>> ftp.closed?
Net::FTPConnectionError: not connected
    from /usr/local/var/rbenv/versions/2.3.0/lib/ruby/2.3.0/net/ftp.rb:1277:in `method_missing'
    from /usr/local/var/rbenv/versions/2.3.0/lib/ruby/2.3.0/net/ftp.rb:1184:in `closed?'
    from (irb):7
    from /usr/local/var/rbenv/versions/2.3.0/bin/irb:11:in `<main>'

Associated revisions

Revision fb28e643
Added by usa (Usaku NAKAMURA) over 3 years ago

merge revision(s) 53810: [Backport #12044]

    * 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/branches/ruby_2_1@54277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 54277
Added by usa (Usaku NAKAMURA) over 3 years ago

merge revision(s) 53810: [Backport #12044]

* net/ftp.rb: add NullSocket#closed? to fix closing not opened
  connection.  [Fix GH-1232]

Revision 5840a393
Added by nagachika (Tomoyuki Chikanaga) over 3 years ago

merge revision(s) 53810: [Backport #12044]

    * 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/branches/ruby_2_2@54330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 54330
Added by nagachika (Tomoyuki Chikanaga) over 3 years ago

merge revision(s) 53810: [Backport #12044]

* net/ftp.rb: add NullSocket#closed? to fix closing not opened
  connection.  [Fix GH-1232]

Revision b2ac0f9c
Added by naruse (Yui NARUSE) over 3 years ago

merge revision(s) 53810: [Backport #12044]

    * 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/branches/ruby_2_3@54377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 54377
Added by naruse (Yui NARUSE) over 3 years ago

merge revision(s) 53810: [Backport #12044]

* net/ftp.rb: add NullSocket#closed? to fix closing not opened
  connection.  [Fix GH-1232]

History

Updated by naruse (Yui NARUSE) over 3 years ago

  • Status changed from Open to Closed

fixed at r53810

Updated by usa (Usaku NAKAMURA) over 3 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: REQUIRED, 2.2: REQUIRED, 2.3: REQUIRED

Updated by usa (Usaku NAKAMURA) over 3 years ago

  • Backport changed from 2.1: REQUIRED, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: DONE, 2.2: REQUIRED, 2.3: REQUIRED

ruby_2_1 r54277 merged revision(s) 53810.

#4

Updated by nagachika (Tomoyuki Chikanaga) over 3 years ago

  • Backport changed from 2.1: DONE, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: DONE, 2.2: DONE, 2.3: REQUIRED

Backported into ruby_2_2 branch at r54330.

Updated by naruse (Yui NARUSE) over 3 years ago

  • Backport changed from 2.1: DONE, 2.2: DONE, 2.3: REQUIRED to 2.1: DONE, 2.2: DONE, 2.3: DONE

ruby_2_3 r54377 merged revision(s) 53810.

Also available in: Atom PDF