Using the Rover Server
There are two ways to use the Rover server:
standalone daemon and as a
Standalone Daemon Server Advantages
- It avoids the fork associated with running as a
- It maintains persistent state on the basis of a tuple consisting
of: <Host, user, service>.
- It reuses output buffers across calls.
- It guarantees FIFO processing of client requests. The server uses
the MSGID, USER, and HOST fields of requests to
order incoming requests.
Standalone Daemon Server Disadvantages
- It executes each operation as the target user; to do that it needs
to be able to setuid to any user. It does this by running as
root and setting its effective uid to the target user. It
does not change the real uid; this is a potential
- It is currently single-threaded.
- It only accepts requests using the
Forked Server Advantages
- Server state is guaranteed to be completely reset before each
request is serviced (since a new server is started for each request).
- Several servers can be simultaneously executed to service
multiple, simultaneous requests.
- It accepts requests using either the
Forked Server Disadvantages
- It has a start-up performance penalty caused by the extra
processing done in the httpd to support general purpose
requests and because the forked server is started by a fork
and exec operation.
- It does not always preserve the FIFO ordering of requests.
Multiple outstanding requests may be serviced out of order if the
kernel accepts the incoming connections or schedules the forked
servers in a non-FIFO order.
Overall, performance-wise, the Standalone Daemon server is a better
choice than the Forked server. However, memory leaks may cause
problems with the Standalone Daemon that would not negatively affect
the Forked server.
Using the Standalone Daemon Rover Server
The executable for the Standalone Daemon Rover server is located in
the httpd server's cgi-bin/rover directory under the
name nph-rover. The server is setuid root and logs
all debugging output to stderr. Upon startup, the server
creates a child process. The child process listens for incoming
requests either on port 9090, or on the port specified by the optional
command line argument (-port number). If the child
server ends for any reason (e.g., fatalError), the parent server will
report the cause of the termination and start a new child server. The
Standalone Daemon Rover server only recognizes requests using the
nph-rover [-port number] >& debug_log
Using the Forked Rover Server
The executable for the Forked Rover server is located in the
httpd server's cgi-bin/rover directory under the
name nph-e-mailwrap. The server is setuid root, has
no command line arguments, and logs all debugging output to
stderr (which the httpd server redirects to the
logs/error-log file). The httpd server can pass
requests to the Rover server using the
The Rover server is started automatically by the httpd
Last updated by $Author: adj $ on $Date: 1997/12/02 00:43:18 $.
Copyright © 1995-1998 Anthony D. Joseph and Massachusetts
Institute of Technology