Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IO::Socket->new() timeout is unreliable #1193

Closed
p5pRT opened this issue Feb 17, 2000 · 1 comment
Closed

IO::Socket->new() timeout is unreliable #1193

p5pRT opened this issue Feb 17, 2000 · 1 comment

Comments

@p5pRT
Copy link

p5pRT commented Feb 17, 2000

Migrated from rt.perl.org#2162 (status was 'resolved')

Searchable as RT2162$

@p5pRT
Copy link
Author

p5pRT commented Feb 17, 2000

From tom@you-bastards.com

Created by tom@you-bastards.com

On linux 2.2.14 and presumably on other systems with SA_RESTART,
the timeout feature of IO​::Socket->new() doesn't work. new()
uses an alarm() to interrupt connect(), however as "perldoc -f alarm"
states it is necessary to use an eval/die to ensure the call
to connect() is not restarted by the system.

This lack of timeout affects other modules such as LWP​::UserAgent,
which won't respect its timeout setting due to this bug.

On a further note it seems a bit presumptuous of IO​::Socket->new()
to assume that there are no pending alarms on entry and that it can
therefore do alarm(0) to cancel the alarm. It should take note of
the return value from alarm() and reset the alarm there was an alarm
pending on entry. I know this is a bit tricky to do right but
general-purpose library code is a good place to do things right.

Thanks for listening.

Tom.

Perl Info


Site configuration information for perl 5.00503:

Configured by randolph at Sat Jan 15 02:54:11 MST 2000.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
  Platform:
    osname=linux, osvers=2.3.39, archname=i386-linux
    uname='linux samwise.tausq.org 2.3.39 #1 smp wed jan 12 05:59:50 mst 2000 i686 unknown '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
  Compiler:
    cc='cc', optimize='-O2', gccversion=2.95.2 19990906 (prerelease)
    cppflags='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    ccflags ='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    stdchar='char', d_stdstdio=undef, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    alignbytes=4, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lndbm -ldb -ldl -lm -lc -lposix -lcrypt
    libc=, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'

Locally applied patches:
    


@INC for perl 5.00503:
    /usr/lib/perl5/5.005/i386-linux
    /usr/lib/perl5/5.005
    /usr/local/lib/site_perl/i386-linux
    /usr/local/lib/site_perl
    /usr/lib/perl5
    .


Environment for perl 5.00503:
    HOME=/u/home/tom
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
    PERL_BADLANG (unset)
    SHELL=/bin/bash


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant