NAME

ISAPISNOOP - debug/monitoring tool for ISAPI protocol.


SYNOPSIS

 isapisnoop [-d 1|2]


DESCRIPTION

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.


Output

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.


SEE ALSO

isapi(7).


FILES

 $ZEUSHOME/web/bin/isapisnoop - executable program.
 /var/tmp/zeus.isapi.snoop.[12] - communication sockets.


COPYRIGHT

Copyright (C) 2000-2001 Zeus Technology Limited. All rights reserved.