# 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.