The code is simple:
Net::HTTP.start(“code.whytheluckystiff.net”,80) { |http|
print(http.head(‘/yaml’))
}
The error I get is that an EINVAL exception was generated.
Using telnet to preform the same request, everything seems fine.
I am using the latest version of Ruby on Windows ( NT4 SP6 ).
Thaddeus L Olczyk wrote:
The code is simple:
Net::HTTP.start(“code.whytheluckystiff.net”,80) { |http|
print(http.head(‘/yaml’))
}
The error I get is that an EINVAL exception was generated.
Using telnet to preform the same request, everything seems fine.
I am using the latest version of Ruby on Windows ( NT4 SP6 ).
That code seems to work fine on linux with Ruby 1.8.4. I get:
#Net::HTTPOK:0xb7bef67c=> nil
And if I change to .get(‘/yaml’).body I get the body of the page, as
expected.
William C. wrote:
I am using the latest version of Ruby on Windows ( NT4 SP6 ).
That code seems to work fine on linux with Ruby 1.8.4. I get:
#Net::HTTPOK:0xb7bef67c=> nil
And if I change to .get(’/yaml’).body I get the body of the page, as
expected.
Works for me, too.
Local firewall that explicitly blocks accesses from ruby and not from
telnet? Just a wild guess…
robert
On Sat, 19 Aug 2006 12:28:28 +0200, Robert K.
[email protected] wrote:
Works for me, too.
Local firewall that explicitly blocks accesses from ruby and not from
telnet? Just a wild guess…
The firewall I use is zonealarm. It keeps prompting me to allow ruby
to pass ( I keep saying yes ). In fact I even set remember this
setting and yes. I had to remove ruby toi clear it.
It seems to me there is some aspect of Windows networking that is
not working right. It is something that most programs, if they use it,
they do not rely on it. But ruby networking just relies on it. I’m
hoping someone can tell me.
Francis C. wrote:
Using telnet to preform the same request, everything seems fine.
I am using the latest version of Ruby on Windows ( NT4 SP6 ).
What happens if you use a more recent version of Windows?
This works for me on WinXP and a somewhat recent version of Curt’s
Windows build:
require ‘net/http’
Net::HTTP.start(“code.whytheluckystiff.net”,80) { |http|
print(http.head(‘/yaml’))
}
#Net::HTTPOK:0x2b4bff0
I have ZoneAlarm, but it’s been tamed to allow Ruby code. I have the
built-in Windows firewall turned off.
–
James B.
http://www.ruby-doc.org - Ruby Help & Documentation
Ruby Code & Style - The Journal By & For Rubyists
http://www.rubystuff.com - The Ruby Store for Ruby Stuff
http://www.jamesbritt.com - Playing with Better Toys
On Aug 19, 2006, at 4:35 PM, Thaddeus L Olczyk wrote:
It seems to me there is some aspect of Windows networking that is
not working right. It is something that most programs, if they use it,
they do not rely on it. But ruby networking just relies on it. I’m
hoping someone can tell me.
Thaddeus L. Olczyk, PhD
Think twice, code once.
I have seen this same issue on windows before. ZoneAlarm interferes
with ruby’s socket access. You need to uninstall ZoneAlarm and it
will work fine. Just disabling Zone Alarm will not work , you have to
completely uninstall it.
-Ezra
Thaddeus L Olczyk wrote:
The code is simple:
Net::HTTP.start(“code.whytheluckystiff.net”,80) { |http|
print(http.head(‘/yaml’))
}
The error I get is that an EINVAL exception was generated.
Using telnet to preform the same request, everything seems fine.
I am using the latest version of Ruby on Windows ( NT4 SP6 ).
What happens if you use a more recent version of Windows?
On 8/19/06, Thaddeus L Olczyk [email protected] wrote:
#Net::HTTPOK:0xb7bef67c=> nil
setting and yes. I had to remove ruby toi clear it.
If telnet works fine, then it’s probably not a firewall issue. The error
you’re getting is EINVAL, which usually indicates some kind of parameter
error to a system call. You didn’t say whether you tried this with a
more
recent Windows version- it could be that the weirdness Ruby does to
massage
its Unix-like I/O calls doesn’t work on NT4. I would also try it with a
raw
IP address, just to get DNS out of the loop. Ruby definitely does handle
DNS
weirdly.
Ezra Z. wrote:
I have seen this same issue on windows before. ZoneAlarm interferes
with ruby’s socket access. You need to uninstall ZoneAlarm and it will
work fine. Just disabling Zone Alarm will not work , you have to
completely uninstall it.
Interesting. I have ZA installed on two different WinXP boxen, and a
now-gone Win2k box, and never had an issue with Ruby getting out to the
Internet.
However, a recent version of ZA was annoying in one way or another, so I
rolled back to a previous version. So perhaps the more current versions
are Ruby-hostile, but it’s never been an issue for me.
–
James B.
“If you don’t write it down, it never happened.”
On Aug 19, 2006, at 9:22 PM, James B. wrote:
However, a recent version of ZA was annoying in one way or another,
so I rolled back to a previous version. So perhaps the more
current versions are Ruby-hostile, but it’s never been an issue
for me.
–
James B.
It has been a while since I've seen this issue as I don't use
windows very often. But it was completely repeatable when I did have
the issue at the end of last year.
-Ezra
On Sun, 20 Aug 2006 11:32:14 +0900, in comp.lang.ruby you wrote:
That code seems to work fine on linux with Ruby 1.8.4. I get:
The firewall I use is zonealarm. It keeps prompting me to allow ruby
Think twice, code once.
I have seen this same issue on windows before. ZoneAlarm interferes
with ruby’s socket access. You need to uninstall ZoneAlarm and it
will work fine. Just disabling Zone Alarm will not work , you have to
completely uninstall it.
-Ezra
Hmmm.
Hard to say. If you disble it as a service, it should have no effect.
Anyway I’m hesitant to disable my firewall unless I have something
else in place. I wish there were a way ( like Posix’s strace ) to
trace system calls and see exactl;y what is going wrong.
On Sun, 20 Aug 2006 10:45:04 +0200, Robert K.
[email protected] wrote:
That code seems to work fine on linux with Ruby 1.8.4. I get:
to pass ( I keep saying yes ). In fact I even set remember this
else in place. I wish there were a way ( like Posix’s strace ) to
robert
I removed ZA and installed Sygate. No difference.
(Before and after I installed Sygate. )
Thaddeus L Olczyk wrote:
setting and yes. I had to remove ruby toi clear it.
trace system calls and see exactl;y what is going wrong.
You can try Kerio Personal Firewall - personally I like it better than
ZA because it offers more precise control IMHO (disclaimer: I haven’t
tested ZA thoroughly so I may have missed some advanced features).
http://www.sunbelt-software.com/Kerio.cfm
Kind regards
robert
I’ve gone further. This following call snippet fails:
require ‘socket’
t=TCPSocket.open(“code.whytheluckystiff.net”,80)
str1=‘GET /yaml HTTP/1.1\r\n\r\n’
t.write(str1)
of course with an EINVAL error.
AFAIC write a calling a C function. So why would calling
a C function cause a EINVAL ( this is not rhetorical ).
I believe earlier calls have probably been executed earlier in the
same library ( the open works ).
Suggestions?
On Sat, 19 Aug 2006 09:44:16 GMT, Thaddeus L Olczyk [email protected]
wrote:
I am using the latest version of Ruby on Windows ( NT4 SP6 ).
Let me add that it is the one click installer available from rubyforge