Backport #2708

NoMethodError exception generated when using net/http

Added by John Nishinaga about 2 years ago. Updated 9 months ago.

[ruby-core:28028]
Status:Closed Start date:02/03/2010
Priority:Normal Due date:
Assignee:Shyouhei Urabe % Done:

100%

Category:-
Target version:-

Description

I recently stumbled upon what appears to be a bug in lib/net/http.rb.  Here is example code that illustrates the problem:

  require 'net/http'
  n = Net::HTTP.new('127.0.0.1', 1234) # or any other unused port
  n.request_head('/')

The above code generates a NoMethodError exception, with the message "undefined method `closed?' for nil:NilClass".  The expected result, and what was generated in prior versions of Ruby 1.8.7., is a thrown Errno::ECONNREFUSED exception.

It appears a recent change (r25851) to lib/net/http.rb changed some exception handling behavior and forgot to check if @socket is set.  A proposed patch is attached that adds the additional check.

net_http_socket_close.patch (407 Bytes) John Nishinaga, 02/03/2010 06:26 pm


Related issues

duplicated by Backport87 - Backport #2758: NoMethodError instead of Errno::ECONNREFUSED when Net::HT... Closed 02/19/2010
duplicated by Backport87 - Backport #2779: Net::HTTP#get raises NoMethodError Closed 02/22/2010

Associated revisions

Revision 26553
Added by nobu about 2 years ago

* lib/net/http.rb (Net::HTTP#request): close @socket only after started. [ruby-core:28028]

Revision 27955
Added by shyouhei over 1 year ago

merge revision(s) 26553: * lib/net/http.rb (Net::HTTP#request): close @socket only after started. [ruby-core:28028]

History

Updated by Nobuyoshi Nakada about 2 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100
This issue was solved with changeset r26553.
John, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Updated by Shyouhei Urabe almost 2 years ago

  • Status changed from Closed to Assigned
  • Assignee set to Shyouhei Urabe

Updated by Shyouhei Urabe over 1 year ago

  • Status changed from Assigned to Closed
This issue was solved with changeset r27955.
John, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Also available in: Atom PDF