Hello all,
This code fails on WindowsInstallerRuby
ruby 1.7.2 (2002-07-02) [i386-mswin32]
with
[BUG] rb_sys_fail() - errno == 0
but runs on
ruby 1.6.6 (2001-12-26) [i486-linux]
without a problem.
Bug? Well, it says so 
Danny
Hello all,
This code fails on WindowsInstallerRuby
ruby 1.7.2 (2002-07-02) [i386-mswin32]
with
[BUG] rb_sys_fail() - errno == 0
but runs on
ruby 1.6.6 (2001-12-26) [i486-linux]
without a problem.
Bug? Well, it says so 
Danny
ah ha! that’s may be the root of tcp’s and http’s bugs as well!
i had to switch back to 1.6.7 becasue of them. (linux though)
On Tue, 2002-09-10 at 13:04, Danny van Bruggen wrote:
Hello all,
This code fails on WindowsInstallerRuby
ruby 1.7.2 (2002-07-02) [i386-mswin32]
with
[BUG] rb_sys_fail() - errno == 0
but runs on
ruby 1.6.6 (2001-12-26) [i486-linux]
without a problem.Bug? Well, it says so
Danny
require ‘socket’
server=UDPSocket.open
server.bind(nil, 50403)
client=UDPSocket.open
client.connect(‘127.0.0.1’, 50403)
puts ‘works:’
client.send(‘12345’,0)
server.recvfrom(5)
puts ‘fails:’
client.send(‘123456789’,0)
server.recvfrom(5)
–
tom sawyer, aka transami
transami@transami.net
Hmm, I wonder if Winsock isn’t setting errno properly. If that’s the
case, then rb_sys_fail() won’t be sufficient for socket.c.
Paul
On Wed, Sep 11, 2002 at 04:04:50AM +0900, Danny van Bruggen wrote:
[BUG] rb_sys_fail() - errno == 0
Here’s another one:
works:
fails:
-:11:in `recvfrom’: Unknown Error - “recvfrom(2)” (Errno::E10040)
from -:11
C:\ruby\bin>ruby -v
ruby 1.6.6 (2001-12-26) [i586-mswin32]
On Wed, 11 Sep 2002, Paul Brannan wrote:
On Wed, Sep 11, 2002 at 04:04:50AM +0900, Danny van Bruggen wrote:
[BUG] rb_sys_fail() - errno == 0
Hmm, I wonder if Winsock isn’t setting errno properly. If that’s the
case, then rb_sys_fail() won’t be sufficient for socket.c.Paul
According to http://www.sockets.com/a_c2.htm (and a few other sources),
meaningful winsock error information cannot be obtained from errno;
WSAGetLastError() should be used instead. In this situation,
rb_sys_fail won’t work.
If I actually had a compiler installed on Windows, I’d write a patch,
but this should be an easy fix anyway.
This explains why the code was failing with such a strange error
message; I wonder why it was failing in the first place, though.
Paul
On Wed, Sep 11, 2002 at 05:37:40AM +0900, Paul Brannan wrote:
On Wed, Sep 11, 2002 at 04:04:50AM +0900, Danny van Bruggen wrote:
[BUG] rb_sys_fail() - errno == 0
Hmm, I wonder if Winsock isn’t setting errno properly. If that’s the
case, then rb_sys_fail() won’t be sufficient for socket.c.
The other message I sent had a reasonable winsock error for some
reason: 10040.
winsock2.h tells me
#define WSABASEERR 10000
#define WSAEMSGSIZE (WSABASEERR+40)
then we get
http://mail.python.org/pipermail/patches/2001-February/004072.html
which states that I did a recv but the datagram was too big for my
buffer. That’s right. Linux didn’t feel that was an error though. And,
something has changed between Ruby 1.6.6 and 1.7.2 that shouldn’t have
been changed…
There must be someone with a compiler and sourcetree set up for fixing ![]()
Danny
On Wed, Sep 11, 2002 at 05:37:40AM +0900, Paul Brannan wrote:
On Wed, Sep 11, 2002 at 04:04:50AM +0900, Danny van Bruggen wrote:
[BUG] rb_sys_fail() - errno == 0
Hmm, I wonder if Winsock isn’t setting errno properly. If that’s the
case, then rb_sys_fail() won’t be sufficient for socket.c.According to http://www.sockets.com/a_c2.htm (and a few other sources),
meaningful winsock error information cannot be obtained from errno;
WSAGetLastError() should be used instead. In this situation,
rb_sys_fail won’t work.If I actually had a compiler installed on Windows, I’d write a patch,
but this should be an easy fix anyway.This explains why the code was failing with such a strange error
message; I wonder why it was failing in the first place, though.Paul
Hi,
At Thu, 12 Sep 2002 04:33:54 +0900, Paul Brannan wrote:
[BUG] rb_sys_fail() - errno == 0
Hmm, I wonder if Winsock isn’t setting errno properly. If that’s the
case, then rb_sys_fail() won’t be sufficient for socket.c.According to http://www.sockets.com/a_c2.htm (and a few other sources),
meaningful winsock error information cannot be obtained from errno;
WSAGetLastError() should be used instead. In this situation,
rb_sys_fail won’t work.
errno should be set in win32/win32.c:rb_w32_recvfrom().
–
Nobu Nakada
If it should be set, then why was an “errno == 0” error generated?
Paul
On Thu, Sep 12, 2002 at 04:06:32PM +0900, Nobuyoshi Nakada wrote:
errno should be set in win32/win32.c:rb_w32_recvfrom().
Hi,
At Thu, 12 Sep 2002 22:51:15 +0900, Paul Brannan wrote:
errno should be set in win32/win32.c:rb_w32_recvfrom().
If it should be set, then why was an “errno == 0” error generated?
It’s the question.
I found myself misread a little, error in [ruby-talk:49898]
apparently differs from one in first article. If so, in which
line it occurred?
–
Nobu Nakada
Both the error in [ruby-talk:49768] and the error in [ruby-talk:49898]
mentioned “recvfrom(2).” There is only one line in socket.c which calls
rb_sys_fail with a parameter of “recvfrom(2)”.
Or do you mean which line in the Ruby code? The first article didn’t
mention a line number, but the latter one did. I suspect they both
occurred on line 11, though.
Paul
On Thu, Sep 12, 2002 at 11:20:23PM +0900, nobu.nokada@softhome.net wrote:
At Thu, 12 Sep 2002 22:51:15 +0900, Paul Brannan wrote:
If it should be set, then why was an “errno == 0” error generated?
It’s the question.
I found myself misread a little, error in [ruby-talk:49898]
apparently differs from one in first article. If so, in which
line it occurred?