[Net-z3950] First-time use problems
mike at tecc.co.uk
Mon May 20 11:15:45 CEST 2002
> Date: Tue, 14 May 2002 17:22:32 -0500 (CDT)
> From: Chuck Bearden <cbearden at rice.edu>
> In order to debug a problem with my institution's Z39.50 server, I'm
> trying to write a simple client that works. I'm running Debian
> Potato, using the yaz .debs I got from the Index Data site, using
> the latest Net::Z3950 from CPAN, and using MARC.pm 1.15 (though I
> don't think I'm getting far enough for that to matter). I can't
> write a client that works, and I've tried it across several servers.
Interesting one. I have to admit up front that I am rather stumped:
your program works (at least to the pount of the search) against Index
Data's server, but not against your own, which suggests that your
server is at fault; yet the Yaz command-line client works (at least to
the point of the search) against your server.
Let's strip your program down to the opening a connection and
searching part, which is where it starts to go wrong. I've added an
"or die" line to the search so we find out what went wrong, if that
information is available:
$conn = new Net::Z3950::Connection('star.tsl.state.tx.us', 2200,
databaseName => 'unicorn');
$rs = $conn->search('Alamo')
or die "failed: " . $conn->errmsg() . ", " . $conn->addinfo();
print "found ", $rs->size(), " records\n";
Now for me, this prints:
$ perl x.pl
failed: Unspecified error, Expected CONSTRUCTED PDU not found (pdu error: 3002) at x.pl line 11.
In other words, the search() is failing, and the server is returning
the rather unhelpful diagnostic code 100 ("Unspecified error"). Can
you check your server code to see under what circumstances it does
that? Your server provides the rest of the string as "additional
information" (this is the same string you found with the debugger) so
again, you need to check your server's source to see what provokes it
into that error.
If you change the Connection parameters to:
$conn = new Net::Z3950::Connection('bagel.indexdata.dk', 210,
databaseName => 'gils');
You'll see that the program works:
$ perl x.pl
found 0 records
However, I can connect to your server using the Yaz client:
Z> home/mike$ yaz-client star.tsl.state.tx.us:2200/unicorn
Connection accepted by target.
ID : Unicorn 2001 Bath Lvl 1
Name : SIRSI Corporation
Options: search present delSet scan sort namedResultSets
Z> find Alamo
Search was a success.
Number of hits: 403, setno 1
records returned: 0
Z> show 1
Sent presentRequest (1+1).
[UNICORN]Record type: USmarc
008 020416s2001 txu s000 0 eng d
040 $a IKM $c IKM
086 $a Z A025.3 F49AU 2000/1 $2 txdocs
099 9 $a Z A025.3 $a F49AU, 2000/1
049 $a IKMD
245 00 $a Alamo Community College District, San Antonio, Texas, annual financial report for the year ended August 31, 2001.
246 30 $a Annual financial report for the year ended August 31, 2001
260 $a San Antonio, Tex. : $b Garza/Gonzalez & Associates, $c 
300 $a 89 p. : $b ill. ; $c 28 cm.
610 20 $a Alamo Community College District $x Appropriations and expenditures.
710 2 $a Garza/Gonzalez & Associates.
710 2 $a Alamo Community College District.
949 $a Z A025.3 F49AU 2000/1 $w ASIS $c 1 $h TXD $i 36237002485791 $r N
949 $a Z A025.3 F49AU 2000/1 $w ASIS $c 2 $h TXD $i 36237002485809
994 $a E0 $b IKM
596 $a 1
926 $a TSLAC $b TXDOCUMENT $c Z A025.3 F49AU 2000/1 $d BOOK $f 1
926 $a TSLAC $b TXDOCUMENT $c Z A025.3 F49AU 2000/1 $d BOOK $f 2
nextResultSetPosition = 2
It's not at all obvious to me why Net:Z3950 would send a different
APDU from the Yaz client, since they both use the same underlying
Z39.50 encoding utilities (those of the Yaz toolkit).
I guess the way forward with this would be for me to figure out how to
provoke Net::Z3950 to produce an APDU trace, as the "-a -" options ask
the Yaz client to do. Then we could compare the network traffic
generated in the two cases. I'm not going to have time to do this any
time soon, though -- sorry.
/o ) \/ Mike Taylor <mike at miketaylor.org.uk> www.miketaylor.org.uk
)_v__/\ "How can a thing of permanence so swiftly disappear?" --
The Waterboys, "Something that is Gone"
More information about the Net-z3950