At 11:24 AM -0400 7/22/03, [EMAIL PROTECTED] wrote:
>Craig Berry wrote:
>
>!+++ lib/Net/Ping.pm Mon Jul 21 19:15:42 2003
>!@@ -316,9 +316,9 @@
>! # set the non-blocking mode (set O_NONBLOCK)
>!
>! my $flags;
>!- if ($^O eq 'MSWin32') {
>!- # FIONBIO enables non-blocking sockets on windows.
>!- # FIONBIO is (0x80000000|(4<<16)|(ord('f')<<8)|126), as per
>winsock.h.
>!+ if ($^O eq 'MSWin32' || $^O eq 'VMS') {
>!+ # FIONBIO enables non-blocking sockets on windows and vms.
>!+ # FIONBIO is (0x80000000|(4<<16)|(ord('f')<<8)|126), as per
>winsock.h, ioctl.h
>! my $f = 0x8004667e;
>! my $v = pack("L", $block ? 0 : 1);
>! ioctl($fh, $f, $v) or croak("ioctl failed: $!");
>
>No that does not seem to work for me. Unfortunately I still
>see this:
>
>$ perl lib/Net/Ping/t/190_alarm.t
snip
>not ok 6
># Failed test 6 in lib/net/ping/t/190_alarm.t at line 52
># lib/net/ping/t/190_alarm.t line 52 is: ok $@ =~ /alarm works/ or die $@;
>fcntl F_GETFL: invalid argument at lib/net/ping/t/190_alarm.t line 43
>%SYSTEM-F-ABORT, abort
Peter, can you double check your application of the patch. I've
looked at this pretty carefully and I just don't see any way you
could hit an fcntl call after the patch. You might well get an ioctl
error, but until we at least see that I'm not sure we've really
tested the patch.
The problem is occurring in a function that switches non-blocking
mode on and off for a socket (so it doesn't really have anything to
do with file locking per se). According to various bits I've
gathered here and there, VMS 7.0 and later should contain an ioctl()
in the CRTL that detects the appropriate support in the network stack
and uses it if present. There are also indications, though, that
this may not have worked quite right until a CRTL ECO that appeared
in the 7.1 timeframe. I have no idea whether Multinet has support
that would be recognized by the CRTL, and if so, what minimum version
would apply.
--
________________________________________
Craig A. Berry
mailto:[EMAIL PROTECTED]
"... getting out of a sonnet is much more
difficult than getting in."
Brad Leithauser