ISAPISNOOP - debug/monitoring tool for ISAPI protocol.
isapisnoop [-d 1|2]
Enables the administrator of a web site to report on the runner process to
which the Zeus Web Server delegates out-of-process ISAPI: typically for use
in debugging ISAPI applications. The -d
flag sets the `debugging level' - at level 1, isapisnoop
reports activity between the ISAPI runner and the virtual server; at level
2, it adds information on individual ISAPI function calls.
The isapisnoop
process will create and listen on a socket: if it is running as the same
user, the Zeus Web Server will, on startup, connect to this socket and
deliver information to isapisnoop
via it. You will need to restart-zeus
after starting up isapisnoop
. Serving
isapisnoop
will slow the out-of-process ISAPI runner, hence all requests involving it.
The output produced gives an account of actions performed by the runner.
Since isapisnoop
reports on a wide variety of matters, its output's form is fairly varied.
Making sense of it will typically depend on having some idea of what your
ISAPI filters and extensions should be doing and on recognising the names
of the ISAPI interface routines, which will appear in the output. The
following gives rough guidance on how the output is displayed, but it
should be noted that real output will depend on your ISAPI code and the
data it processes.
Since the runner may be serving several requests concurrently, the output associated with distinct actions may be interleaved. Output comes in non-interleaved chunks, each of which begins with the name of the relevant virtual server, enclosed in angle brackets; often this is followed by the name of the shared object which implements the relevant ISAPI filter or extension. Continuation lines within a chunk are indented using a tab character; however, when a data-value being output as part of a chunk contains newlines, these are reproduced faithfully (i.e. without adding a tab).
A chunk may announce the start or end of some operation: otherwise, it will be describing a portion of the processing in between or stating the reasons for some choice the runner has made. Where a major operation's output comes in several chunks, the first chunk will begin, and the last will end, with markers of form
---------------------------------------- | v ... enclosed output ... ^ | ----------------------------------------
though interleaving may lead to one such enclosure starting or ending within another. To match markers, you will need to examine the first message after the opening marker and the last before the closing one: for example,
---------------------------------------- | v <mysite> Run Extension Request: /mysite/isapi/extensions/dynamite.isapi data size: 0 agelimit: 0 iheaders: Host: myhost:80 Connection: close
srvvars: HTTP_CONNECTION: close HTTP_HOST: myhost:80 ... further output, some from other operations ...
<mysite> Run Extension Done: /mysite/isapi/extensions/dynamite.isapi notification type: -1 iheaders: srvvars: oheaders: ^ | ----------------------------------------
Note that, e.g., the `iheaders' line is indented but, since it reports a multi-line datum, the `Connection' line here appears without indentation or a `<mysite>' prefix.
isapi(7).
$ZEUSHOME/web/bin/isapisnoop - executable program. /var/tmp/zeus.isapi.snoop.[12] - communication sockets.
Copyright (C) 2000-2001 Zeus Technology Limited. All rights reserved.