Work still to be done in Net::Z3950.pm
Things that need fixing include, but may not be limited to, the
following. (They're listed in the order that they occurred to me,
which is by no means order of importance or anything.)
- Creating a non-blocking COMSTACK to a non-existent server
(e.g. ECONNREFUSED) is not properly diagnosed,
yielding a SIGPIPE instead of a graceful error
report.
- Support for more types of APDU.
- Support for more of the elements in APDUs of types that are
handled -- for example, the initResponse APDU's
otherInfo field.
- Rework the sample code (including fragments in the SYNOPSIS
sections of the various PODs) to reflect the reality of the
fully-evolved interface more fully.
- Test all the code-paths related to non-blocking multiplexing -
sending a PDU of which only a part can be written in the
initial syswrite(), receiving a PDU of which only a part can
be read in the initial cs_get(), doing both together across
multiple connections, etc.
- Improve the reporting of Z39.50 errors.
- Clue in the Event.pm dispatcher to call the
decodeAPDU() again straight away when
cs_more() is true.
- Fix makeInitRequest() (and no doubt other functions
too) to understand undefined arguments, and pass null pointers
accordingly. (By inspection, all undef arguments are
passed as the same zero-length string - address
0x80b94fc in my most recent run - so it should be
possible to tie this down as the address of a well-known
zero-length object in the Perl run-time system, perhaps
something related to PL_sv_undef.)
- Write a simple command-line Zthes browsing client.