Exception change with net/http in Ruby 187 PL 248/9

Ran into the following problem with net http in Ruby 187 pl248

require net/http.rb
n = Net::HTTP.new('server-that-is-not-listening-on-port-eighty')
n.request_head('/')

Prior to this change:
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25851 the
above code results in an:

Errno::ECONNREFUSED: Connection refused - connect(2)

After the change I receive:

NoMethodError: undefined method `closed?' for nil:NilClass

From line 1060 of net/http.rb. It looks like the code was intended to close
sockets in the event of an error, but it assumes the socket actually exists.

Can anyone else reproduce this issue?

···

--
+ Mitch Williams
+ Software Engineer
+ Socialcast®

+ 19 South Park
+ San Francisco, CA 94107

+ e: mitch@socialcast.com

+ p: 651.964.8521
+ f: 801.348.4750

This e-mail may be privileged and/or confidential, and the sender does not
waive any related rights and obligations. Any distribution, use or copying
of this e-mail or the information it contains by other than an intended
recipient is unauthorized. If you are unsure why this e-mail was sent to
you, please advise me (by return e-mail or otherwise) immediately.

Hi,

···

On Thu, Feb 18, 2010 at 6:19 AM, Mitch Williams <mitch@socialcast.com> wrote:

Ran into the following problem with net http in Ruby 187 pl248

require net/http.rb
n = Net::HTTP.new('server-that-is-not-listening-on-port-eighty')
n.request_head('/')

Prior to this change:
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25851 the
above code results in an:

Errno::ECONNREFUSED: Connection refused - connect(2)

After the change I receive:

NoMethodError: undefined method `closed?' for nil:NilClass

From line 1060 of net/http.rb. It looks like the code was intended to close
sockets in the event of an error, but it assumes the socket actually exists.

Can anyone else reproduce this issue?

Yes, I can reproduce.

Indeed, this looks like unintentional change to me and somewhat
unintuitive. I think, you should file a report on Redmine for this or
raise it on ruby-core mailing list.

Thanks for taking the time to respond Hemant.

I've added a redmine ticket for it here
http://redmine.ruby-lang.org/issues/show/2758

···

On Thu, Feb 18, 2010 at 6:20 AM, hemant <gethemant@gmail.com> wrote:

Hi,

On Thu, Feb 18, 2010 at 6:19 AM, Mitch Williams <mitch@socialcast.com> > wrote:
> Ran into the following problem with net http in Ruby 187 pl248
>
> require net/http.rb
> n = Net::HTTP.new('server-that-is-not-listening-on-port-eighty')
> n.request_head('/')
>
> Prior to this change:
> http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25851 the
> above code results in an:
>
> Errno::ECONNREFUSED: Connection refused - connect(2)
>
>
> After the change I receive:
>
> NoMethodError: undefined method `closed?' for nil:NilClass
>
>
> From line 1060 of net/http.rb. It looks like the code was intended to
close
> sockets in the event of an error, but it assumes the socket actually
exists.
>
> Can anyone else reproduce this issue?
>

Yes, I can reproduce.

Indeed, this looks like unintentional change to me and somewhat
unintuitive. I think, you should file a report on Redmine for this or
raise it on ruby-core mailing list.

--
+ Mitch Williams
+ Software Engineer
+ Socialcast®

+ 19 South Park
+ San Francisco, CA 94107

+ e: mitch@socialcast.com

+ p: 651.964.8521
+ f: 801.348.4750

This e-mail may be privileged and/or confidential, and the sender does not
waive any related rights and obligations. Any distribution, use or copying
of this e-mail or the information it contains by other than an intended
recipient is unauthorized. If you are unsure why this e-mail was sent to
you, please advise me (by return e-mail or otherwise) immediately.