Forum OpenACS Q&A: Nsvhr and nsunix for AOLserver 3.3ad13 available
- fixing of several memory leaks within the nsunix module
- use of nssock's output routine within the nsunix module
- new command, ns_vhr, to examine, start, stop proxy activity at runtime.
- new menuUrl behavior: requests to hosts that are not found are redirected to the menuUrl
- new menuUrl and errorUrl behavior: when redirected to these urls, a host parameter and error information is passed as query parameters
- improved support for HTTP/1.0 clients: Specifically, the "location" parameter can now contain information regarding both nsunix and nssock connections, so that HTTP/1.0 clients can be presented a menu that contains appropriate direct PORT connections.
Syntax
This release introduces the nsvhr command that can be used to examine, start, and stop nsvhr redirection at runtime. ns_vhr Overview
Find out information about an ns_vhr configuration, and/or start/top/modify a particular ns_vhr host.
Syntax ns_vhr names ?pattern
ns_vhr get ?pattern
ns_vhr delete host
ns_vhr update host location
Description
ns_vhr names ?pattern similar to array names, returns the names (keys) of the hosts that are being proxied. If pattern is given, the host must match the pattern.
ns_vhr get ?pattern similar to array get returns the names and locations of the hosts that are being proxied. If pattern is given, the hosts must match the pattern.
ns_vhr delete ?host deletes a host from the proxying list. Requests for that host will not be proxied, but will be redirected to the errorUrl or menuUrl.
ns_vhr update ?host ?location updates (or adds) the host to the proxying list. Requests for that host will be proxied to the appropriate location.
Known Issues
The AOLserver implementation of nssock uses an internal buffer
to help make
network reads more efficient. Nsvhr needs to read the bytes out
of this buffer
in order to pass those bytes on to the nsunix module. This
implementation of nsvhr
adds a new socket layer communication procedure: ioctlProc,
which has been implemented
within nssock to both return the number of bytes in the internal
buffer that can
be read without requiring a new network read, and to close a
socket immediately and not
use the standard nssock graceful close procedures.
What does this mean? The communication driver structure increaed in size, with the new slot (at the end of the structure) being used to hold the driver ioctl proc. While it is probably safe to use an AOLserver with these patches with older modules, it is certainly the case that it is safer, to recompile all modules when using them within an AOLserver containing these patches. |
Thank you Joshua!
The bug can be fixed with the patch I am including below.
If this patch gets munged in this post, you can find it at: http://www.theashergroup.com/bboard/q-and-a-fetch-msg.tcl?msg_id=00000G.
Index: nsvhr.c =================================================================== RCS file: /cvs/ad33.13/aolserver/nsvhr/nsvhr.c,v retrieving revision 1.2 retrieving revision 1.3 diff -r1.2 -r1.3 37c37 < static const char *RCSID = "@(#) $Header: /cvs/ad33.13/aolserver/nsvhr/nsvhr.c,v 1.2 2001/08/30 05:33:44 jerry Exp $, compiled: " __DATE__ " " __TIME__; --- > static const char *RCSID = "@(#) $Header: /cvs/ad33.13/aolserver/nsvhr/nsvhr.c,v 1.3 2001/09/19 10:57:03 jerry Exp $, compiled: " __DATE__ " " __TIME__; 1277c1277 < // Ns_LogDumpString(Dev, buffer, numRead); --- > Ns_LogDumpString(Dev, buffer, numRead); 1279c1279 < Ns_DStringAppend(&request, buffer); --- > Ns_DStringNAppend(&request, buffer, numRead); 1316c1316 < Ns_Log(Dev, "nsvhr: sending to unix:%s on socket %d: %d [%s:%d] bytes.", --- > Ns_Log(Dev, "nsvhr: sending to unix:%s on socket %d: %d bytes. [%s:%d] ",