Help Request: Dialup, CardBus Cell Phone, etc. Modem IP Loopback Test

Rubyists,

If any of you having a “not-always-on” internet connection would
be willing to try my test program on your systems, I’d be most
grateful:

http://tastyspleen.net/~billk/ruby/loopback-test/

Years ago, some colleagues and I learned that some operating
systems can attempt to dial out to establish an internet connection,
even when a program is only trying to do inter-process communication
using the IP stack over loopback (localhost). I am hoping that this
has changed in the intervening years.

The purpose of this test is to discover whether your OS can handle
UDP and TCP activity on localhost, without the OS trying to dial
your modem and establish an internet connection.

The program performs two tests. UDP over loopback, and TCP over
loopback. Before the tests, you are asked to verify that your
system is currently NOT connected to the internet. After the tests,
the program gives the option to automatically submit the results
via email, or explains how to submit the results manually.

No personal information will be gathered during this test, and a
summary of the results will be made available to everyone.

Here’s hoping all tests come back negative!

Thanks very much for your help!

Regards,

Bill

Maybe the apps are selecting the wrong ‘local address’, i.e. using the
external address as if it were a loopback address.

I think I’ve even seen that.

Bill K. wrote:

even when a program is only trying to do inter-process communication
using the IP stack over loopback (localhost). I am hoping that this
has changed in the intervening years.

Did you rule out DNS lookups? Try setting
Socket.do_not_reverse_lookup=true.

Pickaxe II on Socket#addr:

Returns the domain, port, name, and IP address of sock as a four-element
array. The name will be returned as an address if the
do_not_reverse_lookup flag is true.

u = UDPSocket.new
u.bind(‘localhost’, 8765)
u.addr ? [“AF_INET”, 8765, “localhost”, “127.0.0.1”]
BasicSocket.do_not_reverse_lookup = true
u.addr ? [“AF_INET”, 8765, “127.0.0.1”, “127.0.0.1”]

Hi James and Joel,

From: “James T.” [email protected]

Maybe the apps are selecting the wrong ‘local address’, i.e. using the
external address as if it were a loopback address.

From: “Joel VanderWerf” [email protected]

Did you rule out DNS lookups? Try setting Socket.do_not_reverse_lookup=true.

The original code (in Java) is now lost to the mists of time
(and previous employers :slight_smile:

So I can’t say for SURE that we were properly binding to loopback
instead of 0.0.0.0.

But at the time we got bitten pretty badly by certain OS’ wanting
to dial the modem, and it was a problem that Apple acknowledged as
unfixable in their OS.9 systems at the time (even over loopback.)
We also experienced the problem on Win 9x systems with AOL accounts.

Given that we only experienced the problem in certain OS and
software environments, I was hoping a variety of dialup users might
try my test program, in the hopes of learning whether there may yet
any systems out there that exhibit the undesired behavior.

Regards,

Bill

On 3 Jan 2008, at 15:31, Bill K. wrote:

The original code (in Java) is now lost to the mists of time
(and previous employers :slight_smile:

So I can’t say for SURE that we were properly binding to loopback
instead of 0.0.0.0.

But at the time we got bitten pretty badly by certain OS’ wanting
to dial the modem, and it was a problem that Apple acknowledged as
unfixable in their OS.9 systems at the time (even over loopback.)
We also experienced the problem on Win 9x systems with AOL accounts.

Although I haven’t spent any time looking at it professionally, some
of the older AOL installations did nasty things hooking over the dial
up and IP stacks. In some versions it would even auto-launch the AOL
branded browser etc.

Given that we only experienced the problem in certain OS and
software environments, I was hoping a variety of dialup users might
try my test program, in the hopes of learning whether there may yet
any systems out there that exhibit the undesired behavior.

Some might. If you want truly local comms, you could use named pipes
and / or unix sockets (clearly there are platform specifics to be
dealt with).

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs