Hi, I tests IO::Socket::SSL with Storable and received the following
error:
File is not a perl storable at ../../lib/Storable.pm (autosplit into
../../lib/auto/Storable/fd_retrieve.al) line 346, at ./storable-socket-
ssl line 61
my code:
use strict;
use warnings;
package Server;
use IO::Socket::SSL;
use Storable qw(nstore_fd);
use Data::Dumper;
unless (-d "certs") {
if (-d "../certs") {
chdir "..";
} else {
die "Please run this example from the IO::Socket::SSL
distribution directory!\n";
}
}
sub run {
my $socket = IO::Socket::SSL->new(
Listen => 5,
LocalAddr => 'localhost',
LocalPort => 9000,
Proto => 'tcp',
Reuse => 1,
SSL_verify_mode => 0x01,
SSL_passwd_cb => sub {return "bluebell"},
) or die "server: can't open socket over port 9000";
warn "server initialized\n";
while (my $client = $socket->accept()) {
chomp (my $request = <$client>);
next unless $request;
warn "client request: $request\n";
my %hash = (a=>1,b=>2,c=>3);
nstore_fd(\%hash, $client) or die $!;
close($client);
close($socket);
}
}
package Client;
use IO::Socket::SSL;
use Storable qw(fd_retrieve);
use Data::Dumper;
sub run {
my $socket = IO::Socket::SSL->new(
PeerAddr => 'localhost',
PeerPort => '9000',
Proto => 'tcp',
SSL_use_cert => 1,
SSL_verify_mode => 0x01,
SSL_passwd_cb => sub { return "opossum" }
) or die "client: can't connect to 127.0.0.1:9000";
warn "client connected to server\n";
print $socket "hash\n";
my $data = fd_retrieve($socket) or die $!;
warn Dumper($data);
close($socket);
}
1;
if (my $pid = fork) {
run Server;
waitpid($pid,0);
} else {
sleep 1;
run Client;
}
end code
If I run the same example with IO::Socket::INET I receive no error.
#> perl -V
Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
Platform:
osname=linux, osvers=2.6.10, archname=i486-linux-gnu-thread-multi
uname='linux rothera 2.6.10 #1 smp fri may 13 09:24:22 utc 2005
i686 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -
Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/
usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -
Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/
usr/local -Dsitelib=/usr/local/share/perl/5.8.7 -Dsitearch=/usr/local/
lib/perl/5.8.7 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/
man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/
man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -
Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.7 -
Dd_dosuid -des'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -
DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -
D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -
fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.0.3 20051204 (prerelease) (Ubuntu 4.0.2-
5ubuntu2)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=/lib/libc-2.3.5.so, so=so, useshrplib=true,
libperl=libperl.so.5.8.7
gnulibc_version='2.3.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT
Locally applied patches:
SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962
Built under linux
Compiled at Dec 16 2005 07:48:39
@INC:
/etc/perl
/usr/local/lib/perl/5.8.7
/usr/local/share/perl/5.8.7
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
#> uname -a
Linux acd-js 2.6.15-27-386 #1 PREEMPT Sat Sep 16 01:51:59 UTC 2006 i686
GNU/Linux
Cheers,
Jonny