2006-06-27 Dossy Shiobara *** AOLserver 4.5.0 RELEASED *** 2006-06-27 Jim Davidson * Makefile: * util/install.sh (new file): Restored pre-4.5 Unix install script installed in bin/ directory again. * include/ns.mak.in: Restored various pre-4.5 Unix install variables. * nsd/adpeval.c: Removed some dead code. 2006-06-25 Jim Davidson * RELEASE (new file): Release notes. * include/ns.h: Update for version 4.5 final. * nsd/adpcmds.c: * nsd/tclcmds.c: Added ns_adp_compress command present in version 4.0.x. * nsd/compress.c: Added Ns_Compress and Ns_CompressGzip routines present in version 4.0.x * nsd/driver.c: Fixed bug with pre-HTTP/1.0 request parsing. * tcl/sendmail.tcl: Updated with fixes in 4.0.x from atp@piskorski.com. * util/nsinstall.tcl: Updated to support installing from a lndir-created symbolic-link tree build directory and fixed bug logging file modes of installed files. * nsproxy/ns_proxy.n: * nsproxy/nsproxylib.c: Added the "send", "wait", and "recv" options to the ns_proxy command to support async requests. Also, updated the extended error response info. * doc/man.macros (deleted) * include/man.macros (new file): Moved man pages include file to the include directory where it's installed for use by extension man pages. * doc/Ns_ConnReturnStatus.3: Added details on the Ns_RegisterReturn(3) routine. 2006-06-22 Nathan Folkman * nsd/adprequest.c: Fixed bug preventing ns_adp_stream from working correctly due to NsAdpReset() being called when it should not have been. 2006-06-19 Jim Davidson * nsd/adprequest.c: * nsd/adpeval.c: * nsd/adpcmds.c: Fixes for bug #1389389 where calls to ADP outside a normal ADP request (e.g., within an ns_register_proc callback) caused the connection to close. * nsd/adpparse.c: Based on a patch from Alastair Young, restored the AOLserver 3.x ADP parsing order where registered tags, <% ... %> scripts, and tags all have the same precedence. Also, fixed the parser to handle nested sequences, e.g.: <% ns_adp_puts [ns_adp_eval {<% ... %>} %> 2006-06-02 Jim Davidson * configure: * configure.in: Added check for Darwin (OS/X) to disable detection of poll which appears broken. Result is select is used instead. * nsd/driver.c: Fixed spurious "recv failed" messages when clients dropped which should only have shown up when the "debug" flag was set for a comm driver. * nsd/tclinit.c: * nsd/tclloop.c: Minor edits to silence compiler warnings. 2006-05-01 Zoran Vasiljevic * nsproxy/nsproxylib.c: CloseProxy() did not set "once" after creating the cleanup thread, resulting in many cleanup threads (needlessly) created. 2006-04-28 Jim Davidson * nsd/adpcmds.c: * nsd/adprequest.c: Fixed crash bug with NsAdpAppend being called without an active ADP execution frame. * doc/Makefile: * util/nsinstall-man.sh: Makefile now installs man.macros into the AOLserver include/ directory. The install script will search there and other common locations to support installing man pages located outside the doc/ directory. 2006-04-19 Nathan Folkman * include/ns.mak.in: Fixed to better support building 64-bit on Mac OS X. Assuming Tcl is built with 64-bit extensions enabled, it is no longer necessary to explicitly set CC. * nszlib/Makefile: Added optional ZLIB environment variable to allow user to define location of libz. Default is /usr/lib. 2006-04-19 Jim Davidson * configure: * configure.in: Removed check for zlib now loadable by nszlib module. * doc/Ns_Conn.3: * doc/Ns_ConnClose.3 (new file): * doc/Ns_ConnContent.3: * doc/Ns_ConnCopy.3: * doc/Ns_ConnDriver.3: * doc/Ns_ConnFlush.3 (new file): * doc/Ns_ConnHeaders.3 (removed): * doc/Ns_ConnQuery.3: * doc/Ns_ConnQueueHeaders.3 (new file): * doc/Ns_ConnRead.3: * doc/Ns_ConnRedirect.3 (new file): * doc/Ns_ConnReturn.3: * doc/Ns_ConnReturnData.3 (new file): * doc/Ns_ConnReturnFile.3 (new file): * doc/Ns_ConnReturnOpen.3 (new file): * doc/Ns_ConnReturnStatus.3 (new file): * doc/Ns_ConnSend.3: * doc/Ns_ConnSetHeaders.3 (new file): * doc/Ns_ConnStatus.3 (new file): * doc/Ns_ConnType.3 (new file): * doc/Ns_ConnWrite.3 (removed): * doc/Ns_Gzip.3 (new file): * doc/Ns_Info.3: * doc/Ns_Pathname.3: Update various man pages. * include/ns.h: Added Ns_Gzip, Ns_SetGzipProc, and Ns_BinPath. * nsd/compress.c: Changed from Ns_Compress to Ns_Gzip and moved code to new nszlib module. * nsd/connio.c: Updated to call Ns_Gzip, added Ns_ConnFlushDirect, and fixed bug reading final line in Ns_ConnReadLine. * nsd/fastpath.c: Fixed bug with mapped content. * nsd/modload.c: Removed legacy pre-10.4 OS/X module loading code as dlopen, etc. is now supported. * nsd/pathname.c: Added Ns_BinPath. * nsd/return.c: Now uses Ns_ConnFlushDirect in ReturnData and changed Ns_ConnReturnHtml to call Ns_ConnReturnCharData to ensure text is encoded as needed. * nproxy/Makefile (new file): * nsproxy/nsproxy.c (new file): * nsproxy/nsproxy.h (new file): * nsproxy/nsproxylib.c (new file): * nsproxy/nsproxymod.c (new file): New AOLserver/Tcl pipe-based proxy support. * nszlib/ChangeLog (new file): * nszlib/Makefile (new file): * nszlib/README (new file): * nszlib/example.tcl (new file): * nszlib/ns_zlib.n (new file): * nszlib/nszlib.c (new file): * nszlib/nszlib.h (new file): New zlib extension for AOLserver 4.5. Provides both the "ns_zlib" command and enables the Ns_Gzip routine. Based on work by Vlad Seryakov . 2006-04-14 Nathan Folkman * nsthread/reentrant.c: Updated ns_inet_ntoa() to be 64-bit safe. 2006-04-13 Jim Davidson * include/Makefile.global: * include/Makefile.module: Backwards compatible makefiles which map variables and include the new ns.mak. * Makefile: Added install-tcl, install-skel, install-util, install-bins, and install-docs directives. * configure: * configure.in: Uses CC var on OS/X which can be set for 64bit build. Regenerated configure from configure.in * nscgi/nscgi.c: Removed minor memory leak when no CGI mappings are present. * nsd/Makefile: * nsd/tclloop.c: Added new ns_for, ns_foreach, ns_while, and ns_loop_ctl commands to support monitored Tcl loop structures. * nsd/adpparse.c: Clarified difference between script, proc, and adp registered tags. * nsd/conn.c: Added optional arg to ns_conn status to set result status if present. * nsd/connio.c: Switch to memchr to avoid running off the end of mmap'ed content. * nsd/driver.c: * nsd/queue.c: Moved free of various conn structures to driver where they were allocated to avoid illusion of driver constantly leaking memory freed in conn threads. * nsd/init.tcl: Init and interp dup code now makes better use of ns_ictl. * nsd/nsd.h: * nsd/server.c: Added support for ns_ictl package and once in the NsInterp struct. * nsd/nsmain.c: Added call to Tcl_Finalize on exit. * nsd/sockcallback.c: Switched to NsPoll from direct poll. * nsd/tclcmds.c: Added ns_adp_registerscript, ns_for, ns_foreach, and ns_while commands and removed the dummy ns_init and ns_cleanup commands. * nsd/tclinit.c: Updated trace execution order to be FIFO and LIFO for init and cleanup callbacks and moved more of the interp dup code to the bootstrap script. Also, added the ns_ictl package and once commands. * nsd/tclobj.c: Removed panic when compiling on 64bit machines and simplified int to time conversion code. * doc/Ns_Alloc.3: * doc/Ns_Exec.3: * doc/ns_addr.n * doc/ns_at.n * doc/ns_cache.n * doc/ns_chan.n * doc/ns_init.n * doc/ns_urlencode.n: Updated some man pages (much more to do). * doc/ns_adp.n: Modified to be an ADP overview only with commands in separate files. * doc/ns_proc.n (removed): Moved to ns_register_proc.n. * doc/ns_crash.n (removed): Not implemented. * doc/Makefile: Uses new simple man page install independent of section and added install of index.adp html browser. * doc/index.adp (new file): * doc/ns_adp_ctl.n (new file): * doc/ns_adp_debug.n (new file): * doc/ns_adp_exception.n (new file): * doc/ns_adp_include.n (new file): * doc/ns_adp_mimetype.n (new file): * doc/ns_adp_puts.n (new file): * doc/ns_adp_registertag.n (new file): * doc/ns_adp_stats.n (new file): * doc/ns_ictl.n (new file): * doc/ns_lctl.n (new file): * doc/ns_register_proc.n (new file): New man pages. * include/ns.mak.in: Simplified man page install and added support to convert man pages to html. * util/nsinstall-man.sh: Added -h option to generate html pages with groff instead of man pages and removed the -e, -s, and -z options not used. 2005-10-25 Nathan Folkman * tcl/return.tcl (new file): Implements ns_returnmoved command. More information can be found here: http://panoptic.com/wiki/aolserver/Ns_returnmoved 2005-10-24 Daniel P. Stasinski * nsd/compress.c: Fixed gzip compression of ADP files. 2005-10-09 Jim Davidson * nsd/init.c: Fixed bug with NsInitFd called before NsInitLog. * nsd/fd.c: * nsd/nsmain.c: Moved code to increase open fd limit to NsInitFd and * nsd/sock.c: Added comments for NsPoll and renamed poll emulation function to ns_poll. * nsd/driver.c: Simplified code to reset a Conn after a connection, simply zero'ing all fields except the I/O buffers. This fixed a bug with recursionCount not being reset. * nsd/nsd.h: Fixed bug with large responses caused by 'sendwait' fields in Ns_Driver and Driver not being aligned due to addition of 'fullname' field in Ns_Driver alone. 2005-10-06 Dossy Shiobara * nsd/: op.c (1.15), return.c (1.48), tclcmds.c (1.54), tclresp.c (1.20): Add ns_internalredirect Tcl command to make Ns_ConnRedirect available from Tcl. Moved recursion detection into Ns_ConnRunRequest. Closes SF RFE #1315460. 2005-09-26 Nathan Folkman * nsd/mimetypes.c: Updated with additional MIME types. 2005-08-24 Nathan Folkman * examples/config/README (new file): * examples/config/base.tcl (new file): * examples/config/nscp.tcl (new file): * examples/config/stats.tcl (new file): Examples showing various configuration options for the core AOLserver, as well as other standard AOLserver modules. * sample-config.tcl (removed): This file has been replaced by examples/config/base.tcl. * full-config.tcl (removed): This file is being replaced by smaller, more specific, configuration example files. * Makefile: Updated to install examples/config/base.tcl as the default configuration example. * README: Updated to reflect changes made to default configuration file. 2005-08-23 Jim Davidson * include/ns.h: * nsd/fastpath.c: * nsd/nsd.h: * nsd/server.c: * nsd/tclcmds.c: * nsd/tclrequest.c: Applied patch from Stephen Deasey for new ns_register_fastpath command. 2005-08-23 Jim Davidson * include/ns.h: * include/nsattributes.h (new file): * include/nsthread.h: * nsd/info.c: * nsd/log.c: * nsd/queue.c: * nsd/tclfile.c: * nsd/tclinit.c: * nsd/tcljob.c: * nsd/tclmisc.c: * nsd/tclthread.c: * nsd/tclvar.c: * nsthread/thread.h: Applied patches from Stephen Deasey for better compile time error checking. * nsd/driver.c: * nsd/exec.c: Fixed bugs found by new compile time checks. * nsthread/error.c: Silence compiler warning from new compile time checks. 2005-08-21 Jim Davidson Several updates to simplify maintenance of the build process. Basically, the makefiles support both gmake on Unix and nmake on Windows by including a platform-specific include/ns.mak created by the nsconfig.tcl script. See comments README for instructions. README: Updated with new build instructions. include/Makefile.global.in (removed): include/Makefile.module.in (removed): include/Makefile.build (removed): include/ns.mak.in (new file): include/ns-mak.inc (new file): Unix and Windows templates for include/ns.mak, replacing the previous include/Makefile.* files. nsconfig.tcl (new file): Tcl configure script which calls configure on Unix and creates include/ns.mak directly on Windows. util/nsinstall.sh (removed): util/nsmakeall.tcl (new file): util/nsinstall.tcl (new file): util/nsremove.tcl (new file): Tcl shell utility scripts called by include/ns.mak. ini2tcl.tcl (removed): tcl2ini.tcl (removed): util/ini2tcl.tcl (new file): util/tcl2ini.tcl (new file): Moved files from top level. util/nsinstall-man.sh: Updated to create directories as needed (Unix only). Makefile: aclocal.m4: configure.in: configure: doc/Makefile: nscgi/Makefile: nscgi/Makefile: nscp/Makefile: nsd/Makefile: nsdb/Makefile: nslog/Makefile: nsperm/Makefile: nssock/Makefile: nsthread/Makefile: nstclsh/Makefile: Updated to build using include/ns.mak. win32/ (removed): Removed previous Windows build enviornment. sample-config.tcl: Updated to change module file extension to .so on Windows to match Unix. include/nsdb.h: nsdb/db.h: nsthread/thread.h: Updated to export public functions on Windows. 2005-08-19 Nathan Folkman * full-config.tcl (new file): Currently just a copy of the original sample-config.tcl. Over time this file will contain all of the configurable options for AOLserver along with detailed comments. * sample-config.tcl: Stripped away as much as possible in order to simplify the default configuration example. Also update to enable the Web statistics interface by default, as well as also enabling the control port. You should be sure to update the default user names and passwords for both the stats interface and control port before installing in a production environment. 2005-08-11 Jim Davidson * include/ns.h: * nsd/conn.c: Added Ns_ConnGet/SetGzipFlag API's. * nsd/adpeval.c * nsd/adprequest.c: * nsd/nsd.h: * nsd/server.c: Added autoabort config/flag to raise adp abort exception when a flush fails. * nsd/tclresp.c: Cleaned up error message on no conn. * nstclsh/nstclsh.c: Added call to fully initialize Tcl shell. * include/nsmodinit.c: * nsd/nswin32.c: Minor fixes for Win32. 2005-08-09 Jim Davidson * nsd/adpeval.c: Updated to suppress multiple error log messages in stricterror mode * nsd/driver.c: * nsd/nsd.h: * nsd/request.c: * nsd/return.c: Updated to match response http version with client version. * nsd/init.tcl: * nsd/tclcmds.c: Removed ns_adp_include proc now in tclcmds.c. 2005-08-08 Jim Davidson * include/ns.h: * nsd/conn.c: * doc/Ns_ConnContent.3: Incorporated patch from Fred Cox to add the Ns_ConnContentOnDisk API. * include/nsmodinit.c (new file): * include/nslibinit.c (new file): * include/Makefile.global.in: * include/Makefile.module.in: New stubs and makefile targets to support building a library or module in a consistent way which separates the library code installed as both a static archive and dynamic lib from the library and/or module init calls. * nscp/Makefile: * nscp/nscp.c: * nsdb/Makefile: * nsdb/nsdb.c: * nslog/Makefile: * nslog/nslog.c * nsperm/Makefile: * nsperm/nsperm.c: * nssock/Makefile: * nssock/nssock.c: Updated to use init stubs described above. * include/ns.h * include/nsthread.h * nsthread/Makefile: * nsthread/thread.c: * nsthread/pthread.c: * nsthread/winthread.c: * nsthread/nsthreadtest.c: * nsd/Makefile: * nsd/init.c: * nsd/nsmain.c: * nsd/tclinit.c: Added Ns_LibInit and NsThreads_LibInit which, in addition to being called at dynamic library load time, are now also called at the Ns_Main and Ns_TclInit entry points to support initialization of static builds assuming code starts at the two supported entry points. * nscgi/Makefile * nscgi/nscgi.c: Updated to use new mod init stub and new Ns_DevNull and Ns_ContentFd API's. * nstclsh/: New simple Tcl shell with AOLserver commands. * examples/mynsd/: Example of building a custom static linked nsd binary. 2005-08-04 Jim Davidson * doc/ns_adp.n: Updated docs, needs more work. * nsd/nsd.h: * nsd/adpeval.c: * nsd/adpcmds.c: * nsd/adprequest.c: Updated the init/re-init approach for adp options so they can be set before the first include. Also, fixed AdpRun so it detects parse/compile safe and/or singlescript options may have changed. 2005-08-05 Nathan Folkman * nsd/log.c: * nsd/nsconf.c: * nsd/nsd.h: Fixed bug where NsLogConf() procedure was not defined or being called during server initialization. 2005-08-03 Jim Davidson * adpeval.c: Moved frame management directly into AdpEval with better comments to describe how Tcl errors and ADP exceptions are treated. Also, further tweaked the error message format. * adpparse.c * adpcmds.c: * adprequest.c * nsd.h: * server.c: Moved remaining server-wide ADP flags to interp-level which can be set/unset via ns_adp_ctl and added "trimspace" option and config to trim leading whitespace from output (helpful when generating xml). 2005-08-02 Jim Davidson Some updates to get code to compile on Win32. Unfortunately there is still no simple way to export the build environment so the project/workspace files in the win32/ directory will still be a struggle to use. * Makefile: * install-sh: Updated to not overwrite existing index.adp. * nsd/adpeval.c: Fixed bug checking result of Ns_CheckStack. * nsd/nsd.h * nsd/adpparse.c: * nsd/adprequest.c: * nsd/server.c: Separated adp server config and interp option flags. * nsd/connio.c: Ns_ConnSendFdEx disabled for Win32 (no pread). * nsd/queue.c: * nsd/pools.c: Connection threads are now joined and don't run detached. * nsthread/thread.h: * nsthread/thread.c: * nsthreadd/winthread.c: Updates for Win32 including adding NsGetStack (which, unfortunately does not actually get the stack). 2005-08-01 Jim Davidson Work to enhance ADP error handling and reporting. * nsd/adpcmds.c: * nsd/nsd.h: * nsd/server.c: Added strict, display, and detail error options which can be set via server config and/or ns_adp_ctl. Example (with defaults): ns_section "ns/server/server1/adp" ns_param stricterror false; # Stop execution on error. ns_param detailerror true; # Include connection detail. ns_param displayerror false; # Return error message in page. * nsd/adpeval.c: Support for error options above plus inhibit cacheing of failed execution results (more work required here). 2005-08-01 Nathan Folkman * nsd/adpeval.c: * nsd/nsd.h: * nsd/server.c: Added new configurable option which allows you to specify the max size (in characters) of the ADP trace output. Example (with defaults): ns_section "ns/server/server1/adp" ns_param trace false; # Enable text/script debug info. ns_param tracesize 40; # Max chars of each chunk to log. 2005-08-01 Jim Davidson Quite a few changes, mostly to enable all commands to run outside a virtual server as a step toward enabling more effective unit testing of individual compontents. Also, updated ADP to enable much more detailed error messages on execeptions which includes line numbers, include file traces, and connection details. * nsd/Makefile: Added ctags target. * nsd/adpeval.c: * nsd/adprequest.c: New ADP frame management approach for enhanced error messages (file trace and connection details) and relocation of init/flush calls to top level frame. * nsd/adpcmds.c: Added ns_adp_ctl "channel" option and updated code for new ADP frame management. * nsd/adpparse.c: Updated parser to save line number info for possible error reporting. * nsd/conn.c: * nsd/tclresp.c: Standard usage of NsTclGetConn to verify and active connection and cleanup of ns_startcontent command. * nsd/auth.c: * nsd/encoding.c: * nsd/info.c: * nsd/tclrequest.c: * nsd/tclset.c: Use of NsTclGetServer call to verify when a server is required for a command. * nsd/config.c: * nsd/dns.c: * nsd/log.c: * nsd/nsconf.c: * nsd/nsconf.h: * nsd/nsd.h: * nsd/pidfile.c: Moved components of nsconf struct to cooresponding private code and added NsParam functions to simplify core parameter config. * nsd/driver.c: Added debug config option which will enable logging of unusual I/O or protocol errors. * nsd/fastpath.c: Minor edits. * nsd/fd.c: * nsd/nsmain.c: Moved core fd init code from Ns_Main to NsInitFd. * nsd/init.c: Re-ordered inits to ensure fds and log are initialized first. * nsd/queue.c: Disabled ns_server "keepalive" option as the cooresponding variable was no longer being maintained. * nsd/return.c: Cleaned up and isolated the complex keep-alive check and enabled configurable HTTP response version (default 1.1). * nsd/server.c: Enabled a global, psuedo-server, to support all Tcl commands outside the context of a virtual server. * nsd/task.c: * nsd/tclcache.c: * nsd/tclfile.c: * nsd/tclimg.c: Minor edits to silence the compiler. * nsd/tclcmds.c: Made all commands available outside a virtual server and moved ns_adp_include proc creation to C. * nsd/tclinit.c: Fixed async cancel support which is really the ability to send a thread a signal to cancel Tcl script eval in the currently active interp, if any. Also, updated code to support running outside a virtual server. * nsd/tcljob.c: * nsd/tclshare.c: * nsd/tclsock.c: * nsd/tclthread.c: Updated to work outside a virtual server. * nscgi/nscgi.c * nsd/tclhttp.c: Switched to strtol fromm atoi which evidently isnt always thread safe. 2005-07-22 Jim Davidson * doc/Makefile: Fix install target bugs. 2005-07-21 Nathan Folkman * Makefile: * index.adp: Created new default index.adp page which displays a number of AOLserver configuration settings. Updated the Makefile to install in the default page root. * nsd/dns.c: Fixed infinite recursion bug in GetAddr(). 2005-07-20 Nathan Folkman * nsd/nsconf.c: * nsd/nsconf.h: Added new logdebug parameter for consistency. Supported parameters are: (debug or logdebug), logdev, and lognotice. Updated dnscachemaxentries to use new DNS_MAX_ENTRIES constant. 2005-07-19 Nathan Folkman * nsd/log.c: Fixed bug where log level "Dev" wasn't supported. 2005-07-18 Jim Davidson * Makefile: * doc/Makefile: * doc/mkLinks (removed): * doc/install-doc (removed): * doc/nsinstall-man-sh: New approach to installing man pages. * doc/Ns_ConnContent.3: * doc/Ns_ConnQuery.3: * doc/Ns_Conn.3: Broke out some Ns_Conn related man pages. * doc/Ns_Config.3: * doc/Ns_Exec.3: Cleaned out some trailing linefeeds. * nsd/Makefile: * nsd/tclcache.c: * nsd/tclcmds.c: * nsd/tclthread.c: New ns_cache command based on ideas from nscache module and made ns_thread an object command. * include/ns.h * nsd/conn.c: * nsd/connio.c: * nsd/driver.c: * nsd/fastpath.c * nsd/fd.c * nsd/form.c: * nsd/nsd.h * nsd/return.c: Finished up support for temp-file based content, allowing access via Ns_ConnContent or Ns_ConnContentFd. Also, added new Ns_ConnFile routines to access uploaded files and Ns_ConnSendFdEx and Ns_ConnReturnOpenFdEx routines to send open file descriptors using pread, allowing multi-threaded use. * nsd/queue.c: Moved code from Ns_ConnInit to the core as Ns_ConnInit is now a no-op to avoid confusing folks on whether it's required to call or not. * nsd/quotehtml.c: Fix to support UTF-8. * nsd/fd.c: * nsd/init.c: Support for new Ns_DevNull API which was going to be used by Ns_ConnContentFd. * nsd/server.c: * nsd/tclhttp.c: Removed old-style ns_http in favor of only the new Ns_Task-based code. * nsdb/nsdb.c: Fixed crash loading nsdb outside a virtual server. * nsd/adpcmds.c: * nsd/adpeval.c: * nsd/binder.c: * nsd/callbacks.c: * nsd/compress.c: * nsd/dns.c: * nsd/listen.c: * nsd/log.c: * nsd/nswin32.c: * nsd/rollfile.c: * nsd/sock.c: * nsd/sockcallback.c: * nsd/task.c: * nsd/tclinit.c: * nsd/tcljob.c: * nsd/tclsched.c: * nsd/tclsock.c: * nsd/tclvar.c: * nsd/unix.c: Code cleanup to avoid duplicate routine and struct names across files. 2005-06-21 Jim Davidson * nsd/connio.c: Fixed bad return code for Ns_ConnReadLine. * nsd/task.c: Fixed to handle a return of POLLHUP from poll. 2005-03-27 Jim Davidson * nsdb/dbtcl.c: Updated ns_db to be an object command. * nsd/driver.c: * nsd/limits.c: * nsd/pools.c: * nsd/tcljob.c: * nsd/tclrequest.c: Fixed usage of Tcl_GetIndexFromObj. * nsd/exec.c: Sets errno from child in parent for better error messaging. 2005-03-24 Jim Davidson Several changes to cleanup and clarify Tcl resource management, add support for large content overflow to temp file (minimal testing, likley more work to be done), and simplify encoding management. Also, updated the version to 4.5 given the scope of changes since 4.0 * include/ns.h: Added Ns_FindCharset and Ns_GetCharsetEncodingEx. and bumped version to 4.5. * nsd/nsd.h: Simplified connection encoding config, renamed NsGetInterp to more clear NsGetInterpData. * nsd/tclshare.c: * nsd/tclset.c: * nsd/tclthread.c: Changed NsGetInterp to NsGetInterpData. * nsd/adprequest.c: Removed some connection setup code now part of Ns_GetConnInterp. * nsd/connio.c: Simplified Ns_WriteCharConn and added code to set the input encoding in Ns_ConnInit. * nsd/driver.c: * nsd/conn.c: Added support for large content requests spooled to a temp file. In these cases, the NS_CONN_FILECONTENT flag is set and the content can be accessed via the the new Ns_ConnContentFd routine or ns_conn contentchannel option (limited test, feedback appreciated). * nsd/form.c: Updated to use Ns_ConnGetUrlEncoding. * nsd/nsconf.c: Removed call to NsUpdateUrlEncode no longer required. * nsd/queue.c: Call to new private NsFreeConnInterp instead of Ns_FreeConnInterp which is now a no-op. * nsd/encoding.c: * nsd/urlencode.c: * nsd/request.c: * nsd/server.c: Simplified charset/encoding config for process-wide url decoding and per-virtual server defaults for dyanmic Tcl requests. * nsd/tclcmds.c: Made ns_atclose an object command. * nsthread/tls.c: * nsd/Makefile: * nsd/tclatclose.c: * nsd/tclinit.c: Restructured to be more clear and added detailed comments to help describe the Tcl management complexity. Also, incorporated code from tclatclose.c and moved call to Tcl_FinalizeThread directly into the nsthread library. * nsthread/pthread.c: Fixed comments. * nsd/tclrequest.c: * nsd/return.c: Some minor cleanup. 2005-03-04 Nathan Folkman * nsd/limits.c: Fixed bug where limitsPtr->name was incorrectly being set to NULL. Updated FindLimits() to initialize all values in Limits structure. Renamed keys returned by LimitsResult() to distinguish between items which are counts (ntimeout, ndropped, noverflow, etc.) and items which are configuration parameters (maxwait, timeout, maxrun, etc.) 2005-01-18 Nathan Folkman * nsd/tcljob.c: Minor clean up to "cannot wait on job" error message which wasn't correctly implemented. 2005-01-17 Jim Davidson Some work fixing up the new thread pools and limits code. Quick background: Pools are designed to allow certain requests to be handled by specific collections of threads. This could, for example, ensure multiple long running requests don't block other short running requests. Pools are selected based on method/url pairs using url-specific data. By default, all requests are handled by a single unlimited "default" pool. There is also an "error" pool described below. You can create and configure additional pools with the ns_pools command. Limits are designed to manage resources before the connection is ready to run. They are also keyed on the method/url pair and include such items as max concurrent connections, max file upload size, and timeouts for I/O and run wait. When limits are exceeded, the driver thread will dispatch the connection to the "error" pool to generate a quick response. By default all requests share the same default limits. You can create and configure additional limits with the ns_limits command. * nsd/nsd.h: * nsd/driver.c: Renamed NsGetLimits and NsGetPool to NsGetRequestLimits and NsGetConnPool for a bit of clarity. * nsd/queue.c: Re-enabled ns_server command, now with optional thread arg to specify the thread pool to query (default is "default"). * nsd/pools.c: * nsd/limits.c: Cleaned up code and added comments. * nsd/encoding.c: Bug fix. 2005-01-17 Jim Davidson * include/ns.h: * nsd/connio.c: * nsd/conn.c: Added new Ns_ConnSetStatus and Ns_ConnGetStatus routines to set/get HTTP response status code to be sent in reponses by Ns_ConnFlush. * doc/mkLinks: * doc/Ns_ConnHeaders.3: Added placeholders for new Ns_ConnGetStatus and Ns_ConnSetStatus routines. * nsd/nsd.h: * nsd/encoding.c: Removed previous private type/encoding code now integrated into new public Ns_ConnSetType. * nsd/return.c: Updated ReturnCharData to use new Ns_ConnFlush. * nsd/server.c: Removed some config code to set encodings now determine when needed based on charsets. * nsd/form.c: New NsCheckQuery private routine to verify query form was decoded with current encoding. * nsd/queue.c: Fixed possible race in NsConnArgProc. * nsd/adprequest.c: * nsd/driver.c: Minor cleanup. 2005-01-15 Jim Davidson Among some general code cleanup, several changes to factor out previous ADP-only code for encoding, compressing, and/or chunking output via a more general Ns_ConnFlush routine. ADP output semantics should now be closer to those of stdio including a specific "ns_adp_flush" mechanism to force a valid streamed response (likely in HTTP/1.1 "chunked" format) during execution as well as a buffer high-water mark which will force flushing on overflow (default 1meg). These changes should both be more flexible to use and allow ADP's which generate very large results to avoid consuming memory waiting to send a single, large response. Ordinary ADP's which generate a normal, relatively small responses, will behave as before. * include/ns.h: Added Ns_ConnFlush, Ns_ConnSend, Ns_ConnSetType, and Ns_ConnGetType along with some new NS_CONN constaints. * nsd/connio.c: Added Ns_ConnFlush which provides a general encoding, compressing, chunking response capbility which was mostly previous ADP-only code. * nsd/conn.c: Added Ns_ConnSetType and Ns_ConnGetType routines. * nsd/form.c: Added checks to better catch a change in URL encoding. * nsd/tclcmds.c: * nsd/adpcmds.c: Added ns_adp_ctl, ns_adp_flush, and ns_adp_close commands and simplified code with new NsAdpGetBuf routine. Also, use of new Ns_ConnSetType and Ns_ConnGetType to factor out previous ADP-only code. * nsd/nsd.h: Combined AdpParse and AdpCode structs, several new ADP_ and SERV_ flag bits, and several new ADP internal routines. * nsd/adpeval.c: * nsd/adpparse.c: Simplified code by combining AdpParse and AdpCode structs and added new AdpTrace facility to monitor ADP internals. * nsd/adprequest.c: Added NsAdpGetBuf API and factored out flush/close code to use new more general Ns_ConnFlush API. * nsd/driver.c: Now truncates instead of freeing I/O dstring bufs to avoid repeated realloc calls between connections (potential source of additional memory growth). * nsd/request.c: Added comment for for NsAppendRequest. * nsd/return.c: * nsd/server.c: Use of new flag bits instead of specific bool's and several new config options. Also, added * doc/ns_adp.n: * doc/mkLinks: * doc/Ns_ConnHeaders.3: * doc/Ns_ConnRead.3: * doc/Ns_ConnWrite.3: Added placeholders for new ns_adp_close, ns_adp_ctl, and ns_adp_flush commands and Ns_ConnFlush, Ns_ConnGetType and Ns_ConnSetType routines (unfortunately no actual documentation yet). * nsd/compress.c: * nsd/fastpath.c: * nsd/fd.c: * nsd/limits.c: nsd/nsmain.c nsd/quotehtml.c: Minor casts to silence compiler. 2005-01-03 Zoran Vasiljevic * nsd/tclfile.c: Certain command sequence with [ns_chan] may cause server to crash (see SF BUG #1094480). Fixed now. Also, fixed channel tables cleanup and channel-closing which also cored the server due to better Tcl library checking. 2004-12-06 Dossy Shiobara * include/ns.h (1.73), nsd/dns.c (1.12), nsd/tclsock.c (1.21), tests/new/ns_addrbyhost.test (1.2): Implement Ns_GetAllAddrByHost() and [ns_addrbyhost -all]. Closes SF RFE #999452. 2004-12-01 Dossy Shiobara * include/ns.h (1.72): Provide NS_VERSION_NUM definition to make conditionalized testing of AOLserver version at build time easy. 2004-11-20 Dossy Shiobara * nsd/tclsched.c (1.6): Option parsing needed to be more careful, leading to segfaults when a bad command like [ns_schedule_proc -thread -only] is executed. Closes SF Bug #1068836. 2004-11-19 Dossy Shiobara * configure (1.24), configure.in (1.19): autoconf now detects if libgcc is built shared, in which case LIBS needs -lgcc_s. Without it, the nsd binary will fail to link because of unresolved symbols __umoddi3 and __udivdi3 in nsd/dsprintf.c. 2004-11-19 Dossy Shiobara * nsd/Makefile (1.43): Adding -lz to LIBS is now redundant. 2004-11-19 Dossy Shiobara * include/nsthread.h (1.28): Need to include on some platforms (OS X, Solaris 10) to get C99 "uint32_t" and other types. 2004-11-19 Dossy Shiobara * configure (1.23), configure.in (1.18), include/Makefile.global.in (1.17), nsd/compress.c (1.2): Add --with-zlib configure option (on by default) and add ifdef's to nsd/compress.c. 2004-11-19 Dossy Shiobara * nsd/Makefile (1.42), nsd/compress.c (1.1), include/ns.h (1.71): Add new Ns_Compress() function to gzip data using Zlib. 2004-11-17 Dossy Shiobara * nsd/adprequest.c (1.18): Don't send Content-Length if streaming is on. 2004-11-15 Dossy Shiobara * nsd/nsmain.c (1.60): AOLserver will now allow setting the fd limit (via "ulimit -Hn", etc.) and only log a warning if it exceeds FD_SETSIZE. Do this at your own risk, as things which still use select(), i.e., Tcl, are likely to break. 2004-11-05 Dossy Shiobara * nsd/sockcallback.c (1.15): Dereferencing cbPtr->nextPtr is dangerous since cbPtr could have been freed. 2004-10-27 Jim Davidson * include/nsd.h: * nsd/adpcmds.c: * nsd/adpeval.c: Updates to new ADP cache capability, changing ns_adp_include -ttl option to -cache and adding -nocache option. 2004-10-26 Jim Davidson * ns.h: * nsd/adpcmds.c: * nsd/adpeval.c: * nsd/adprequest.c: * nsd/nsd.h: * nsd/server.c: Added new ADP caching capabilities enabled via configuration and/or ns_adp_include -ttl (work in progress). * nsd/queue.c: * nsd/driver.c: * nsd/request.c: Fixes to avoid thread race conditions when when using ns_info threads. 2004-10-06 Jim Davidson * include/ns.h: * nsd/task.c: * nsd/server.c: * nsd/tclcmds.c * nsd/tclnhttp.c: Added new I/O task API and a new implementation of ns_http which uses and has more flexible argument processing. A tcl/oldhttp server config option (default on) bypasses the new ns_http for the previous implementation based on the sock callback API. * nsd/nswin32.c: * nsd/unix.c: * nsd/sock.c: Moved duplicate poll() emulation code to sock.c and added the NsPoll() wrapper used in driver.c and task.c. * nsd/log.c: * nsd/nsmain.c: Ns_Fatal now calls abort() on Ns_Fatal when running in debugger mode (i.e., with the -d command line option). * nsd/nsd.h: Various updates to support the above additions. 2004-09-30 Dossy Shiobara * include/ns.h (1.68), nsd/tclhttp.c (1.21), nsd/sockcallback.c (1.14): Implement Ns_SockCancelCallbackEx() in order to correctly cancel actions in the SockCallbackThread. Fix for SF Bug #1037196. 2004-09-29 Dossy Shiobara * include/ns.h (1.67), nsd/tclhttp.c (1.20), nsd/sockcallback.c (1.13): Fix a thread hang issue when ns_http fails but HttpCancel() never executes because poll() returns revent == POLLPRI. Closes SF Bug #1037196. 2004-09-24 Dossy Shiobara * include/nsthread.h (1.27): Win32 supports the get{addr,name}info() API, so use it. 2004-09-24 Dossy Shiobara * nsd/dns.c (1.11): Small memory leak introduced on platforms w/ getaddrinfo. Closes SF Bug #1033575. 2004-09-22 Dossy Shiobara * configure (1.22), configure.in (1.17): get{addr,name}info on Solaris 9 is in -lsocket. 2004-09-21 Dossy Shiobara * configure (1.21), configure.in (1.16): Ensure we use the compiler from the Tcl build during AOLserver configure process, unless it's explicitly overrided during the AOLserver build. 2004-09-21 Dossy Shiobara * aclocal.m4 (1.4): Make detection of gethostby{addr,name}_r more robust. Closes SF Bug #1032231. 2004-09-20 Dossy Shiobara * nsd/: nsmain.c (1.58), nsd.h (1.91), unix.c (1.18): Need to set the dumpable flag on Linux in order to get a core file after uid/gid is changed. Closes SF Bug #1031599. 2004-09-17 Dossy Shiobara * nsd/connio.c (1.16): Ns_ConnSend() now bubbles up the error from NsSockSend() on first send, which is what the C API documentation says. Closes SF Bug #1029512. 2004-09-08 Dossy Shiobara * nslog/nslog.html (1.2): Updated nslog module documentation. Closes SF Bug #466236. 2004-09-08 Dossy Shiobara * nscgi/nscgi.html (1.3): Add datatype for config options to doc. 2004-09-07 Dossy Shiobara * tests/new/all.tcl (1.3): Fix test runner script to work when LD_LIBRARY_PATH isn't set. 2004-09-07 Dossy Shiobara * Makefile (1.52), tests/new/harness.tcl (1.3), tests/new/ns_addrbyhost.test (1.1), tests/new/ns_hostbyaddr.test (1.1), tests/new/test-ns_addrbyhost.adp (1.2), tests/new/test-ns_hostbyaddr.adp (1.2), tests/new/test-ns_hrefs.adp (1.2): Rework tests and harness to run in tclsh. 2004-09-03 Dossy Shiobara * nscgi/nscgi.html (1.2): Updated nscgi module documentation for 4.0. Closes SF Bug #465907. 2004-09-01 Dossy Shiobara * nsd/: info.c (1.17), nsd.h (1.90), nsmain.c (1.57): Expose "-s" cmdline arg to config interp via [ns_info server]. Fixes SF Bug #421740. 2004-08-27 Jim Davidson * nsd/nsd.h * nsd/driver.c * nsd/tclrequest.c: Removed (the undocumented) Ns_RegisterPreQue in favor or a new NS_FILTER_PRE_QUEUE flag for Ns_RegisterFilter. * nsd/limits.c: Set more reasonable default limits. 2004-08-25 Dossy Shiobara * nsd/driver.c (1.37): In the event of a SockRead() error, the connection is no longer eligible for HTTP Keep-Alive. Explicitly set the SOCK_CLOSEWAIT state. 2004-08-25 Dossy Shiobara * Makefile (1.51): Add install command to copy over the automated test config. 2004-08-21 Dossy Shiobara * tests/new/all.tcl (1.2): Non-threaded tclsh doesn't even set ::tcl_platform(threaded) at all. 2004-08-20 Jim Davidson * nsd/op.c: Handled error case requests based on overflow flag instead of response status. * nsd/limits.c: Added some more info returned with the get option. * nsd/pools.c: Added "error" pool to handle overflows. * nsd/nsd.h: * nsd/queue.c: * nsd/tclcmds.c: * nsd/driver.c: Fixed shutdown bugs and further simplified code. Also, added a query mechanism to peek into the state of a driver via the new ns_driver command. 2004-08-20 Dossy Shiobara * Makefile (1.50), tests/new/all.tcl (1.1), tests/new/harness.tcl (1.2), tests/new/ns_hrefs.test (1.1): Implement automated tests that can be run from a stand-alone tclsh. New Makefile target added called "test" which runs the tests. 2004-08-17 Dossy Shiobara * tcl/fastpath.tcl (1.10): If _ns_dirlist gets an URL without a trailing slash, issue a 302 redirect back to the same url WITH the trailing slash. Fixes SF Bug #935907. 2004-08-17 Dossy Shiobara * nsd/driver.c (1.35): Fix stupid crash bug on Win32 -- put the ns_free() in the wrong place. 2004-08-17 Dossy Shiobara * win32/build.tcl (1.6): Parse command line args at start. Attempt to build "debug" and "release" binaries. Still needs work. 2004-08-17 Dossy Shiobara * nsd/fastpath.c (1.21): Minor change to eliminate Win32 compile-time warning. Closes SF Bug #696806. 2004-08-16 Dossy Shiobara * nsd/driver.c (1.34): Win32 platform doesn't support mmap(). Maybe should define HAVE_MMAP instead in the future. 2004-08-16 Dossy Shiobara * win32/build.tcl (1.5): Add new limits.c and pools.c to nsd.dll target. 2004-08-16 Dossy Shiobara * nsd/tclcmds.c (1.41): Alphabetize list of Tcl ObjCmd procs. 2004-08-14 Jim Davidson * nsd/nsd.h * nsd/server.c * nsd/adpeval.c * nsd/adpparse.c: Updated ADP parser to allow post-processing text/script blocks into a single script block to allow incomplete scripts to span multiple blocks (e.g., <% if $cond %> ... <% } %>). The "singlescript" ADP config option enables this on a per-virtual server basis. Also, a "safeeval" config was added as well to enable safe evaluation of ADP files as is possible with ad-hoc ADP (safe Tcl ignores <% ... %> blocks, allowing only pre-configured ADP tags to execute). 2004-08-14 Dossy Shiobara * aclocal.m4 (1.3), configure (1.19), nsd/dns.c (1.10): Solaris 7 uses gethostbyaddr_r(), and the autoconf and GetHost() versions didn't work. Fixed now. 2004-08-13 Dossy Shiobara * configure (1.18), configure.in (1.15), aclocal.m4 (1.2), nsd/dns.c (1.9): gethostbyaddr() and gethostbyname() are not thread-safe. Use the new getaddrinfo() and getnameinfo() API where available, otherwise use gethostbyaddr_r() and gethostbyname_r() if available. Otherwise, continue to use the non-safe versions but emit a warning at configure time. Fixes SF Bug #1008721. 2004-08-13 Dossy Shiobara * Makefile (1.49): The CVS/ directory was getting included in install-tests-new target, oops. 2004-08-13 Dossy Shiobara * win32/: nscgi/nscgi.dsp (1.6), nscp/nscp.dsp (1.6), nsd/nsd.dsp (1.15), nsdb/nsdb.dsp (1.2), nslog/nslog.dsp (1.6), nsperm/nsperm.dsp (1.6), nssock/nssock.dsp (1.9), nsthread/nsthread.dsp (1.8), threadtest/threadtest.dsp (1.6): Change Win32 .dsp files to reflect change in Tcl from "tcl84td.lib" to "tcl84tg.lib". Fixes SF Bug #996342. 2004-08-13 Dossy Shiobara * nsd/tclmisc.c (1.31), tests/new/test-ns_hrefs.adp (1.1): ns_hrefs is now more robust. Fixes SF Bug #995078. 2004-08-13 Dossy Shiobara * Makefile (1.48): New "install-tests-new" target to install new automated tests. 2004-08-13 Dossy Shiobara * tests/new/harness.tcl (1.1): Really basic test harness for automating tests. 2004-08-11 Dossy Shiobara * nsd/nsconf.c (1.34): Inability to resolve nsconf.hostname to set nsconf.address is no longer fatal, and instead defaults to "0.0.0.0". Fixes SF Bug #994072. 2004-08-11 Dossy Shiobara * nsd/driver.c (1.31): Ensure defMapPtr is initialized. 2004-08-11 Dossy Shiobara * nsd/driver.c (1.30): Fixed crash bug when virtual servers are configured, but the "hostname" parameter didn't match any of the virtual servers. Fixed by introducing new "defaultserver" parameter in the comm. config that must refer to one of the virtual servers being defined. 2004-08-11 Dossy Shiobara * sample-config.tcl (1.14): Add "defaultserver" parameter in sample config. 2004-08-10 Dossy Shiobara * nsd/driver.c (1.29): Crash due to FreeConn() happening twice, once from DriverThread() and once from SockClose(). Commented out call from SockClose() for now. Don't decrement limitPtr->nrunning if the connPtr->flags indicated overflow or timeout, since we didn't increment nrunning. Set responseStatus to 503 so requests actually overflow or timeout again. 2004-08-10 Jim Davidson * nsd/driver.c (1.28): Restructured code (again) to better support overload and timeout conditions (work in progress). 2004-08-10 Jim Davidson * nsd/: nsd.h (1.86), pools.c (1.4), queue.c (1.27): Moved pool selection to pools.c from queue.c and added timeout pool config option. 2004-08-10 Jim Davidson * include/ns.h (1.65): Added conn flags to track overflow and timeout conditions. 2004-08-05 Rob Crittenden * nsd/tclhttp.c: Add new option to ns_http wait, -servicetime, so you can capture how long the HTTP request took. Backported from aolserver_v40_bp. 2004-07-30 Dossy Shiobara * nsd/: limits.c (1.3), pools.c (1.3): Fixed mistake adding "default" pool to pools hashtable. Change ns_pools set options to include leading "-" just like ns_limits. 2004-07-30 Dossy Shiobara * nsd/driver.c (1.27): Fixes nslog logging incorrect number of bytes sent in access.log. 2004-07-30 Dossy Shiobara * include/ns.h (1.64), nsd/driver.c (1.26), nsd/limits.c (1.2), nsd/nsd.h (1.85), nsd/op.c (1.13), nsd/pools.c (1.2), nsd/queue.c (1.26), nsd/return.c (1.41): Implement the "maxwait" limit. Use connPtr->responseStatus to short circuit request processing, for returning HTTP 400 and 503 status responses indirectly from the driver thread. 2004-07-29 Dossy Shiobara * nsd/driver.c (1.25): Missed incrementing connPtr->roff when applying Jim's changes. Oops. 2004-07-29 Dossy Shiobara * include/ns.h (1.63), nsd/Makefile (1.40), nsd/connio.c (1.15), nsd/driver.c (1.24), nsd/fastpath.c (1.20), nsd/init.c (1.9), nsd/limits.c (1.1), nsd/nsd.h (1.84), nsd/nsmain.c (1.56), nsd/pools.c (1.1), nsd/queue.c (1.25), nsd/server.c (1.29), nsd/tclcmds.c (1.40): (These changes are actually Jim Davidson's, I just merged them and am checking them in on his behalf.) This commit completes (yet another) rewrite of the driver thread mechanism, along with implementing connection classes ("ns_limits") and request processing pools ("ns_pools"). The code compiles, but does NOT work yet. I will be correcting the few remaining issues, soon. 2004-07-29 Dossy Shiobara * doc/Ns_TclInit.3 (1.7): Change version number in doc header. 2004-07-29 Dossy Shiobara * nsd/return.c (1.40): Remove unused local variable. 2004-07-29 Dossy Shiobara * nsd/tcljob.c (1.26): Change mutex name to conform to naming standard. 2004-07-28 Dossy Shiobara * doc/Ns_TclInit.3 (1.6): Better documentation on Tcl interp init C API. 2004-07-28 Dossy Shiobara * configure (1.17): Forgot to re-run autoconf2.13 after the very last change to configure.in. 2004-07-28 Dossy Shiobara * include/ns.h (1.62): BUMP: 4.1.0a 2004-07-28 Dossy Shiobara * configure.in (1.14), configure (1.16): Clean up configure.in, regenerate configure with autoconf2.13, and clear CCRPATH/LDRPATH if CCRFLAGS/LDRFLAGS are empty. Closes SF Bug #640754. 2004-07-28 Dossy Shiobara * win32/build.tcl (1.4): DEBUG=2 now yields a really noisy build. 2004-07-26 Dossy Shiobara * win32/build.tcl (1.3): Now some build variables can be overrided from the command line. 2004-07-22 Dossy Shiobara * sample-config.tcl (1.13): Use [info sharedlibextension] so that we don't have to name DLLs under Win32 with a .so extension. 2004-07-22 Dossy Shiobara * win32/build.tcl (1.2): Ensure we're using the version of Tcl we built against by having the "install" target place it into the AOLserver install dirs. 2004-07-22 Dossy Shiobara * win32/build.tcl (1.1): Simple Tcl script to produce the Win32 build of AOLserver. 2004-07-19 tag aolserver_v40_r7 2004-07-19 Dossy Shiobara * nsd/init.c (1.8): While harmless, don't call NsInitInfo() twice. Oops. 2004-07-18 Dossy Shiobara * nsd/: nsd.h (1.83), nsconf.c (1.33), init.c (1.7): Ns_GetAddrByHost() reports errors via Ns_Log(), so calls to it should be done after Ns_Log has been initialized, otherwise very unhelpful error messages are produced. In particular, this happens when the server is started and the hostname as returned by gethostname() cannot be resolved, because the network interface is down AND no entry exists in /etc/hosts. Closes SF Bug #868362. 2004-07-16 Dossy Shiobara * nsd/driver.c (1.23): Setting request->method to static storage, which later gets ns_free()'d in Ns_FreeRequest(), caused server to crash. 2004-07-16 tag aolserver_v40_r6 2004-07-13 Dossy Shiobara * nsd/: driver.c (1.22), op.c (1.12): Needed a more graceful way of taking a pre-queue socket and send it a 400 Bad Request. Still a hack, but I think it's safer this way. 2004-07-13 Dossy Shiobara * nsd/driver.c (1.21): Change to make HTTP request "Host:" header mandatory for HTTP/1.1 connections by returning 400 Bad Request response. Closes SF Bug #787728. Also, changed virtual server code to use the "hostname" param from the "ns/module/nssock" section to map the default virtual server based on the value (hostname) from the "ns/module/nssock/servers" section, when the "Host:" header is either not specified (HTTP/1.0) or is not found in the virtual server table. Closes SF Bug #812036. 2004-07-13 Dossy Shiobara * nslog/nslog.c (1.15): conn->headers can be NULL causing segfault. Closes SF Bug #990439. 2004-07-13 Dossy Shiobara * include/nsthread.h (1.26): OpenBSD 3.5 doesn't define ENOTSUP, so we'll define it ourselves. Closes SF Bug #985076. 2004-07-06 Dossy Shiobara * nsd/return.c (1.39): Fix bug where internal redirect for 401 omitted including the HTTP auth. "WWW-Authenticate:" header. Fixes bug #674033. 2004-07-02 Dossy Shiobara * nsd/mimetypes.c (1.12): Ns_GetMimeType() was returning defaultType instead of noextType if the path contained a directory with a "." but the filename component had no extension. Fixes bug #739049. 2004-07-02 Dossy Shiobara * nsd/: fastpath.c (1.19), return.c (1.38): Enable ADP/Tcl code to override Last-Modified: header from ns_respond when -headers AND -file are specified. Closes bug #879076. 2004-07-02 Dossy Shiobara * nsd/tclresp.c (1.17): lots of refactoring of ns_respond code to remove duplication 2004-07-02 Dossy Shiobara * nsd/init.tcl (1.31): ns_eval of script containing comments (i.e., lines starting with #) cause an error because is a list, which gets evaluated differently than a plain string script. Fixes bug #833940. 2004-07-01 Dossy Shiobara * nsd/: nsd.h (1.82), nsmain.c (1.55): Ensure that supplementary groups from /etc/group are set if -u username is specified, or dropped if a uid is specified so that the nsd doesn't run with root's supplementary groups. Closes bug #425401. 2004-07-01 Dossy Shiobara * nsd/: nsd.h (1.81), nsd.h (1.77.2.4): trivial - eliminate compiler warning for nsd/nsmain.c 2004-07-01 Dossy Shiobara * nsthread/tls.c (1.3): Make the Tcl_Panic() message from Ns_TlsGet() and Ns_TlsSet() include the full function name to aid in debugging. 2004-06-30 17:03 Dossy Shiobara * nsd/unix.c: Ensure synchronous signals are handled correctly under LinuxThreads. Possible fix for Bug #982955. 2004-06-30 01:16 Dossy Shiobara * include/ns.h: Fix build on alpha arch, removing extra INT64 typedef. Closes bug #896962. 2004-06-23 Zoran Vasiljevic * nsd/tclxkeylist.c: fixed improper handling of objects returned by reference in Tcl_GetKeyedListField wrapper. Also, fixed typo in the ckstrdup macro. Also, using correct size_t types in various places. 2004-06-23 Rob Crittenden * nsd/log.c: ns_log now logs to a custom logger as well. 2004-06-22 Zoran Vasiljevic * nsd/tclxkeylist.c: added compatiblity layer for the following functions, since it broke some older code: Tcl_GetKeyedListKeys Tcl_GetKeyedListField Tcl_SetKeyedListField Tcl_DeleteKeyedListField The compatiblity layer for the string-based Tcl-API is not done. I will add this if requested. 2004-06-20 Zoran Vasiljevic * include/ns.h: * nsd/nsd.h: * nsd/tclcmds.c: * nsd/tclinit.c: * nsd/tclxkeylist.c: added objectified version of TclX keyed-list implementation (Patch #812522). 2004-06-19 Zoran Vasiljevic * nsd/tclsock.c: Improved NsTclSockOpenObjCmd() to accept two optional parameters: -localhost and -localport as per patch #815889 from Vlad Seryakov. The patch itself was used as a starting point but the implementation is different i.e. the command-option parsing is rewritten to be much more tight than in the patch and also in the previous implementation. 2004-06-14 20:28 Dossy Shiobara * nsd/connio.c: If nsend == 0, we would never call Ns_WriteConn to flush the queued headers. This could happen when we're sending zero bytes of data as a response. This fixes bug #971016 in the case where fastpath.cache=false and fastpath.mmap=false and a zero byte file is requested. 2004-06-14 20:25 Dossy Shiobara * nsd/return.c: unnecessary test for data != NULL actually caused part of bug #971016 when fastpath.cache=false and fastpath.mmap=true and the file requested is zero bytes, mmap() returns 0 which gets passed along as data == NULL, causing ReturnCharData() to not flush the queued headers. removing the if is safe as Ns_WriteConn will simply flush any queued data 2004-06-08 Rob Crittenden * Makefile: remove Makefile.module on distclean. * include/ns.h, nsd/log.c: Allow users to override logging functions. * nsd/str.c: Fix crash bug in Ns_Trim* when trimming NULL strings. 2004-06-08 Rob Crittenden * TAG aolserver_v40_r5 2004-03-09 13:35 Rob Crittenden * nsd/tclhttp.c: The last header was being missed because the pointer was being advanced past the \r\n. 2004-02-26 14:37 Dossy Shiobara * nsd/unix.c: uid_t is supposed to be unsigned, but apparently isn't on OSX, apparently. 2004-02-25 19:56 Dossy Shiobara * nscgi/nscgi.c: Ns_ConnSetRequiredHeaders now requires length < 0 if you don't want a Content-Length header 2004-02-25 19:55 Dossy Shiobara * nsd/return.c: fix so that it's still possible to formulate a response with no Content-Length header (such as for nscgi, or HTTP streaming) where you don't know the Content-Length header in advance 2004-02-24 07:15 Dossy Shiobara * nsd/: nsmain.c, nsd.h, driver.c: fix race condition where DriverThreads are spawned but before they can Ns_SockListenEx, the main thread does its NsClosePreBound and closes the prebound sockets, making them unavailable to the DriverThreads if they require root priv to listen on 2004-02-18 01:30 Dossy Shiobara * nsperm/nsperm.c: fixed bug #899364, restoring old nsperm functionality as it was in 3.x. 2004-02-15 Jim Davidson * nsd/conn.c: * include/ns.h: * nsd/return.c: Added new Ns_ConnGet/SetKeepAliveFlag APIs to allow custom request procedures to enable keep-alive directly. * nsd/driver.c: Minor updates to separate conn & driver structs. 2004-01-01 Scott S. Goodwin * nsd/adpparse.c: fixed bug #868600, where tag attribute values encapsulated within single quotes weren't being parsed properly. 2003-12-27 Scott S. Goodwin * nsd/urlopen.c: fixed bug #844809. * sample-config.tcl: fixed bug #805761. 2003-12-24 Scott S. Goodwin * include/nsthread.h: Bumped up NS_THREAD_NAMESIZE from 32 to 64. Mutex names were being truncated, making it impossible to distinguish mutexes with longer names when looking at stats. * nscgi/nscgi.c: Changed HTTPS env variable to be set to "on" or "off" instead of "1" or "0". There doesn't appear to be any standard for this, but Apache uses the on/off string in the environment. 2003-12-16 Scott S. Goodwin * nscgi/nscgi.c: Fixed issue with HTTPS environment variable not being set, and port not being set to 443 if connection is SSL'd. Manually applied these changes from a patch supplied by Vinod Kurup. 2003-11-16 Jim Davidson * include/ns.h: Update version ids, added NS_SOCK_DROP and NS_TCL_TRACE constants and pre-queue function definitions. * nsd/nsd.h: Added new "times" struct to Conn for more fine-grained timing. Need to provide options to enable these time stamps plus ways to get the data. * nsd/driver.c: Restructured in a few ways: 1. Each loaded driver now has it's own thread. This should allow some more concurrency (if necessary) and generally made the code more manageable. 2. New pre-queue I/O callback API. The API will be documented with an example HTTP module later. 3. Conn allocation is handled by the driver threads and request buffers have been moved to the Conn from the Sock. 4. Reads for synchrounous drivers (i.e., SSL) are handled by a pool of reader threads instead of by the conn threads. The number of threads is set with a "maxreaders" config option. This change should enable both Host: header based virtual servers and pre-queue callbacks for SSL connections. 5. New "maxsocks" config for drivers is now used to manage the concurrency limit of the server. Conn's are now queued without limit into the connection pools and the previous "maxconns" virtual-server config is ignored. * nsd/queue.c: Cleaned up "connsperthread" code and updated NsQueueConn to support new driver code. * nsd/conn.c: * nsd/connio.c: * nsd/form.c: * nsd/nsd.h: * nsd/queue.c: * nsd/return.c: Moved connection request buffers from Sock to Conn structure. * nsd/server.c: Removed startup Conn pre-allocation as Conns are now allocated dynamically by the driver. Also, removed the "maxconns" parameter which is no longer used. * nssock/nssock.c: Added new "async" option (default on) mostly to test new reader thread capabilities of the core driver code. * nsd/tclinit.c: Added a new generalized Tcl interp tracing facility and cleaned up some previous init code. This should make it easier to support standard Tcl extensions and will be documented with an example module later. * nsd/nsmain.c: Fixed order of driver shutdown wait. * nsd/init.c: Fixed order of init calls. * nsd/binder.c: * nsd/dns.c: Named unnamed mutexes. * nsd/tclset.c: * nsd/tclsock.c: Removed unused functions. 2003-11-03 pkhincha * nsd/urlspace.c: removed initing of mutex * nsd/nsmain.c: calling NsWaitDriversShutdown 2003-11-01 Zoran Vasiljevic * tcl/file.tcl: fixed broken argument convention for the unused argument of ns_sourceproc. 2003-10-28 Zoran Vasiljevic * nsd/tclatclose.c: fixed typo in command usage text 2003-10-09 Mark Page * TAG aolserver_v4_r0_beta_20 * doc/ns_job.n: * tests/api/ns_job.adp: * nsd/tcljob.c: Change timeout specification to be ns_time based. 2003-10-21 Elizabeth Thomas * nsd/init.tcl: Removing lazyproc code from 4.0 to enable it to be declared GM. Solution is being refined and may be added in later release or add-on module. 2003-10-14 Paul Moosman * nsd/tcljob.c: Fix to ns_job, where it was attempting to access a deleted queue. 2003-10-09 Mark Page * TAG aolserver_v4_r0_beta_18 2003-10-09 Elizabeth Thomas * nsd/init.tcl: Fix syntax error in check for null proc. 2003-10-08 Mark Page * TAG aolserver_v4_r0_beta_17 * nsd/init.tcl (ns_eval): Minor change to track change to ns_job. 2003-10-08 Paul Moosman * nsd/tcljob.c: Minor change to ns_job joblist return to be consistent with similar aolserver api's. 2003-10-07 Mark Page * TAG aolserver_v4_r0_beta_16 * nsd/init.tcl (ns_eval): The early 4.0 ns_eval had been waiting for the completion of integrating script changes into the server's init script. This change adds the ability to return without waiting for the init script integration completion (as the default). A new switch modifies this behavior to force it to wait for the completion of init script integration. Added another switch to request a report of ns_eval backlog. * nsd/adpeval.c (LogError): Limit the amount of script text added into the errorInfo string, to keep from flowing adp script texts of unlimited length into the server log. 2003-10-06 Paul Moosman * nsd/tcljob.c: Replaced ctime_r with ns_ctime to fix a win32 compile problem. This change should fix bug #811802. Fixed a potential deadlock case. Fixed a problem where the maxthreads option was getting ignored. 2003-10-01 Elizabeth Thomas * nsd/init.tcl: Fix to _ns_lzproc_load to handle subtle behavior with respect to namespaces and the test to see if the proc will be successfully recognized. Also, fix to protect against infinite loop on unknown processing if null command is executed. 2003-09-22 Mark Page * TAG aolserver_v4_r0_beta_15 2003-09-22 Paul Moosman * nsd/tcljob.c: Add options to ns_job Api, for waitany, delete(queue), listjobs, etc. 2003-09-19 Mark Page * nsd/adprequest.c: nsd/adpeval.c: Fix error where xxx.adp --> ns_adp_parse --> ns_adp_include --> ns_adp_puts results in the puts text going directly into the final result buffer, rather then to the intermediate buffer to be returned by ns_adp_parse to the xxx.adp page code. 2003-09-12 Mark Page * TAG aolserver_v4_r0_beta_14 2003-09-11 Elizabeth Thomas * nsd/init.tcl: Add 'lazyproc' functionality. Controlled by ns/parameters config parm 'lazyprocdef' (defaults to 'false') When 'true', we do not put proc definitions in the interp init script, but instead wrap the tcl 'unknown' command and evaluate them on the first reference. Also wraps the tcl 'info' command to intercept queries about procs not yet in the interpreter. 2003-09-03 Mark Page * TAG aolserver_v4_r0_beta_13 * nsd/tclinit.c (NsTclICtlObjCmd): Fix intermittant core dumps occurring during oncleanup processing. The error is in the Tcl_Obj for the script passed into ns_ictl on* callbacks was being saved and passed to the callbacks (this Tcl_Obj was then being shared amoung Interps, which is not allowed). Now, extract a copy of the script string, and pass that to the callbacks. 2003-08-27 Elizabeth Thomas * nsd/adprequest.c: Complete 8/12 fix of not logging error for ns_adp_break 2003-08-26 Mark Page * TAG aolserver_v4_r0_beta_12 2003-08-26 Elizabeth Thomas * nsd/tclinit.c: Fix the 'oncleanup' option of ns_ictl. Modify behavior of Ns_RegisterAtDelete so callbacks are run before the interp is destroyed. Expose with new 'ondelete' option to ns_ictl. 2003-08-25 Mark Page * nsd/adprequest.c (): Suppress production of the result data for requests with SKIPBODY set. * nsd/return.c (ReturnCharData): Allow headers to be returned for requests with SKIPBODY; e.g., HEAD requests. 2003-08-21 Zoran Vasiljevic * nsd/tclfile.c: properly detach and attach the Tcl channel out and in the current interpreter. 2003-08-19 Rahul Bhargava * nsd/return.c: Updated to support HTTP/1.1 Transfer Chunk Encoding Headers only. 2003-08-19 Nathan Folkman * nsd/return.c: Updated to include status code from: RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1) and RFC 2518 (HTTP Extensions for Distributed Authoring -- WEBDAV). 2003-08-12 Elizabeth Thomas * nsd/adprequest.c: Don't log ns_adp_abort or ns_adp_break as errors. 2003-08-08 Elizabeth Thomas * nsd/mimetypes.c: * sample_config.tcl: Add support for xhtml mime type. (RFE #563417) * TAG aolserver_v4_r0_beta_11 2003-08-06 Elizabeth Thomas * nsd/tclset.c: Fix ns_set split argument checking. (#757849) 2003-08-05 Elizabeth Thomas * nsd/conn.c: * nslog/nslog.c: * include/ns.h: * sample-config.tcl: Merge in feature from 3.5 branch (with simpler implementation) for logging of request execution time in access log. To turn on feature add: ns_section "ns/server/${servername}/module/nslog" ns_param logreqtime true By default the option is disabled. If enabled the connection's request time will be appended to the access log before the extended headers (if configured). 2003-07-18 Elizabeth Thomas * nsd/tclinit.c: Add optional mutex to serialize interp initialization. With large init scripts and many threads, there is severe malloc lock contention while tcl evaluates the init script (and populates its memory pool). Serializing the initialization reduces the thrashing and results in faster startup. * nsd/nsconf.c, nsconf.h, nsd.h: Add config variable 'tclinitlock' which activates the above. Defaults to false if not specified. * TAG aolserver_v4_r0_beta_10 2003-07-18 Mark Page * nsd/adpeval.c (AdpEval): Check adp.outputPtr validity before use. It can get reset within this adp evaluation loop from commands like ns_respond (when it does an internal redirect for the file not found case). In this case, it's appropriate that further text from this page code is not appended to the result, as other code had determined that the result was complete. 2003-07-12 Zoran Vasiljevic * nslog/nslog.c: the "X-Forwarded-For" header existence is examined when logging the remote user. This allows for logging the real remote user wnen it commes from some proxy and/or load balancer. Thanks for Gustaf Neumann of XOTcl for the patch. This implements the RFE #770054. 2003-07-10 Mark Page * TAG aolserver_v4_r0_beta_9 2003-07-01 Mark Page * nsd/init.tcl (ns_eval): Protect against nested ns_eval calls, which would otherwise lead to deadlocks. 2003-06-26 Mark Page * nsd/adpeval.c: Fix problem where ns_adp_include was not propogating errors. 2003-06-25 Mark Page * nsd/init.tcl: (ns_eval) Fix thread-safety issue with ns_eval, where multiple simultanous usages can clobber a change. (_ns_getscript) suppress saving the Tcl global variable 'env' into the init script. Tcl's init takes care of 'env', and including it into the init script would cause SetEnvs at interp create that are unneeded and undesired. 2003-06-18 Mark Page * nsthread/thread.c (Ns_ThreadCreate): Fix typo in Ns_ThreadCreate that was causing it to ignore the stacksize parameter. * nsd/init.tcl (_ns_eval): Fix ns_eval to prevent it's bleeding of unintended Tcl environment change to the global interp state. 2003-06-06 Zoran Vasiljevic * nsd/queue.c: fixed "connsperthread" config parameter as reported in bug item #749801. Default is set to "0" i.e. thread will perform unlimited number of connections (never exit) unless it's idle timer (if configured) expires. 2003-05-31 Zoran Vasiljevic * nsd/config.c: uses Ns_TclDestroyInterp instead of the Tcl_DeleteInterp. * nsthread/nsthreadtest.c: * nsd/info.c: * nsd/nsmain.c: * include/Makefile.module.in: * configure: * configure.in: added --disable-shared so we can now build the nsd image statically. 2003-05-31 Zoran Vasiljevic * nsd/cache.c: * include/ns.h: * doc/Ns_Cache.3: added C-API for Ns_CacheTryLock as in RFE #725704 2003-05-30 Mark Page * nsd/tclthread.c: fix problem in ns_thread begindetached api. This code was failing to create the new thread as detached. Also corrected for the Ns_TclDetachedThread C api. As a result of this change, non-detached threads will return their TclEval result to Ns_ThreadExit, making it available to a thread join. 2003-05-28 Mark Page * TAG aolserver_v4_r0_beta_8 2003-05-28 Mark Page * nsd/tclimg.c: Use binary channel to read img (Thanks to Dossy). Eliminate double error string; Corrrect compiler warning on Seek. * tcl/form.c: Fix to ns_querygetall to suppress null sublists. Also, make the defaulting semantics work as described. 2003-05-24 Zoran Vasiljevic * nsd/info.c: added workaround for Tcl_GetMemoryInfo() which is not defined in Tcl if somebody undefines USE_THREAD_ALLOC. Generally, this call should be avoided altogether. * nsd/tclinit.c: added call to Tcl_FinalizeThread() in the DeleteInterps() to properly finalize Tcl data on thread exit, thus closing the re-appearing memory leak from V3.3 nsd. 2003-05-20 Mark Page * TAG aolserver_v4_r0_beta_7 2003-05-20 Mark Page * nsd/tclimg.c: Addition error checks in gif size read. * nsd/adpcmds.c: Error check calls to ns_adp funcs. * nsd/tclinit.c: Error check calls to Ns_TclGetConn and Ns_TclServerInterp. 2003-05-19 Mark Page * nsd/tclinit.c: suppress byte-compile for interp init scripts * nsd/tclthread.c: fix fmr. 2003-05-16 Zoran Vasiljevic * nsdb/dbinit.c: fixed hash table initialization in IncrCount to TCL_ONE_WORD_KEYS instead of TCL_STRING_KEYS. Credits to Jean-Fabrice RABAUTE for the bug report. 2003-05-14 Zoran Vasiljevic * nsd/tclthread.c: fixed NsTclCondObjCmd to be compatible to the 3.x pendant in way it threats the optional timeout argument. The 3.x reverted to indefinite (i.e. non-timewait) condvar waits when the optional "timeout" argument was given as zero. The 4.x version just exited with NS_TIMEOUT (= 0) in such cases breaking Tcl scripts written for 3.x. The corrective measure is to check the passed timeout value and if == 0, revert to non-timewait condition waits as the 3.x does (did). 2003-05-13 Mark Page * TAG aolserver_v4_r0_beta_6 2003-05-12 Mark Page * nsd/urlencode.c : (bug fix) urlencode was passing through too many characters unencoded. In particular, the '+' was getting passed through, which causes unsymmetric encode/decode since '+' in encoded string translates to ' '(space). 2003-04-25 Mark Page * nsd/tclvar.c (NsTclNsvArrayObjCmd): (bug fix) nsv_array exists must return true if an nsv exists, regardless of the number of array elements in the nsv. 2003-04-24 Mark Page * nsd/queue.c (ConnRun): Ensure that a Internal Error status is returned to the client if an error status is returned from a pre-auth filter. Previously, the connection was simply closed, causing difficult to diagnose problems to the client. Also allow traces to run in this situation, so that access logging can occur. 2003-04-23 Mark Page * nsd/log.c (NsTclLogObjCmd): (bug fix) Tweeked previous fix to suppress trailing space on output. 2003-04-22 Nathan Folkman * nsd/log.c: (bug fix) Fixed bug causing first two string args of "ns_log" to be improperly concatendated. 2003-04-16 Mark Page * nsd/modload.c (NsLoadModules): (bug) Failed parsing the explicit initialization specification properly. 2003-04-10 Mark Page * TAG aolserver_v4_r0_beta_5 2003-04-07 Mark Page * nsd/tclthread.c (NsTclThread): ensure that the server has completed it's initializtion prior to initiating TclEval. * nsd/nsmain.c (Ns_WaitForStartup): add dirty-read of the conf.started flag. 2003-04-04 Mark Page * nsd/tclinit.c: * nsd/tclcmds.c: Moved interp tracing functionality into ns_ictl api as one of it's subfunctions, removing the ns_register_interptrace api previously created. 2003-04-03 Mark Page * nsd/tclinit.c: * nsd/tclcmds.c: Provide tcl api that exposes Ns_TclInitInterps and Ns_TclRegisterTrace. ns_register_interptrace. 2003-03-30 Scott S. Goodwin * include/ns.h: nsd/driver.c: nssock/nssock.c: nsssl/nsssl.c: Modified Ns_DriverInit. Instead of passing all args as parameters to Ns_DriverInit, a comm module must now create an Ns_DriverInitData structure and populate it with appropriate values (see include/ns.h) and pass that in the call to Ns_DriverInit. The Ns_DriverInitData structure is versioned so that we can extend it later without affecting other modules. 2003-03-28 Mark Page * nsd/tclhttp.c: (bug) Fix uninitialized hdrs var, was causing segfault. 2003-03-21 Mark Page * TAG aolserver_v4_r0_beta_4 2003-03-19 Mark Page * nsd/tclhttp.c: Added method argument to ns_http queue api to allow sending POSTs as well as GETs. 2003-03-19 Mark Page * nsext/nsext.c: Change back to using ns_socketpair for local proxies, to retain PEEK functionality. 2003-03-19 Zoran Vasiljevic * nsd/modload.c: added fallback for loading regular shared libraries in addition to bundles on Darwin. * include/tcl.h: added set of version macros * nsd/config.c: added Ns_GetVersion API call. 2003-03-10 Scott S. Goodwin * nscgi/nscgi.c: (bug) SERVER_NAME is now set correctly. 2003-03-10 Mark Page * nsd/sched.c: (bug) Fix problem with shutting down event threads (these service detachted thread processing) on a server shutdown. 2003-03-07 Nathan Folkman * TAG aolserver_v4_r0_beta_3 2003-03-07 Zoran Vasiljevic * include/ns.h: * nscgi/nscgi.c: * nscp/nscp.c: * nsd/adpeval.c: * nsd/adpparse.c: * nsd/binder.c: * nsd/config.c: * nsd/conn.c: * nsd/connio.c: * nsd/dns.c: * nsd/driver.c: * nsd/dstring.c: * nsd/encoding.c: * nsd/fastpath.c: * nsd/index.c: * nsd/info.c: * nsd/lisp.c: * nsd/listen.c: * nsd/log.c: * nsd/modload.c: * nsd/nsmain.c: * nsd/pidfile.c: * nsd/queue.c: * nsd/request.c: * nsd/rollfile.c: * nsd/sched.c: * nsd/sockcallback.c: * nsd/tclatclose.c: * nsd/tclfile.c: * nsd/tclhttp.c: * nsd/tclimg.c: * nsd/tclinit.c: * nsd/tcljob.c: * nsd/tclmisc.c: * nsd/tclshare.c: * nsd/tclsock.c: * nsd/tclvar.c: * nsd/tclxkeylist.c: * nsd/urlencode.c: * nsd/urlspace.c: * nsdb/dbinit.c: * nsdb/dbtcl.c: * nsext/nsext.c: * nslog/nslog.c: * nspd/log.c: * nspd/main.c: * nsperm/nsperm.c: * nsthread/mutex.c: * nsthread/nsthreadtest.c: * nsthread/pthread.c: o. removed unused variables o. fixed warnings about non-initialized vars o. CONST-ified according to Tcl 8.4+ rules * bin/init.tcl: _ns_getscript forces import of namespaced commands * tcl/init.tcl: sets auto_path to start with our private library first * include/Makefile.global.in: allows for building with Solaris 2.6 and later 2003-03-06 Mark Page * nsd/adpeval.c: Change defn of objs field of InterpPage to size 1, since some compilers don't like 0 sized arrays. * nsd/urlencode.c: * nsd/queue.c: * nsd/server.c: * nsd/urlencode.c: * nsd/encoding.c: * nsd/nsd.h: * nsd/form.c: * nsd/conn.c: * include/ns.h: * tcl/form.tcl: * tcl/charsets.tcl(new): Added Tcl I18N support functions from OACS, with some changes to work within 4.0. 2003-03-05 Zoran Vasiljevic * nsd/init.tcl: added handling of commands imported from other namespaces in _ns_getscript procedure. 2003-03-05 Mark Page * nsd/adpeval.c: (fix) Fixed handling of Tcl errors from script. 2003-03-05 Mark Page * nsd/adpeval.c: * nsd/adpcmds.c: * nsd/nsd.h: (patch) Added optional switches to ns_adp_parse; -cwd , -savedresult -savedresult supports usages which require the adp script's result separate from the output buffer (which is the func result) -cwd supports prespecifying the initial cwd for which the script will be executed. 2003-03-03 Nathan Folkman * nscgi/nscgi.c: (bug fix) Applied patch to set SCRIPT_NAME which is passed as an environment variable to the CGI script. SF bug 230479. 2003-02-25 Nathan Folkman * nsd/init.tcl: (patch) Added logging of errorInfo and errorCode globals to _ns_sourcefile command. SF patch 690025. * sample-config.tcl: * tcl/fastpath.c: (bug fix) Added fast path configuration example. Fixed bug that was adding an extra slash to directory listings in _ns_dirlist. SF bug 682077. * nsd/tclimg.c: (bug fix) Fixed ns_jpegsize command for images which contained a DHT. Removed AppendDims command which has been replaced with AppendObjDims. SF bug 685055. 2003-02-07 Elizabeth Thomas * TAG aolserver_v4_r0_beta_2 * tcl/sendmail.tcl: (bug fix) SF bugs 669217/669844 Fix handling of addressees so we don't lose friendly address name * configure: fix additional defaults from cc to gcc 2003-02-06 Mark Page * nsd/return.c: (bug fix) SF bug 674033. (bug fix) Correct the status code for BadRequest returns. 2003-02-06 Jamie Rasmussen * nsthread/winthread.c: (bug fix) SF bug 675033. (bug fix) Fixed crash on second DLL_THREAD_DETACH. 2003-02-05 Elizabeth Thomas * nsext.c: Fix LocalProxy function to call Ns_CloseOnExec after the file descriptors have been opened instead of before 2003-02-04 Jamie Rasmussen * include/nsthread.h: * include/ns.h: * nscgi/nscgi.c: * nscp/nscp.c: * nsd/adpeval.c: * nsd/driver.c: * nsd/encoding.c: * nsd/exec.c: * nsd/fastpath.c: * nsd/fd.c: * nsd/info.c: * nsd/init.c: * nsd/listen.c: * nsd/modload.c: * nsd/nsd.h: * nsd/nsmain.c: * nsd/pathname.c: * nsd/request.c: * nsd/server.c: * nsd/sock.c: * nsd/sockcallback.c: * nsd/tclenv.c: * nsd/tclfile.c: * nsd/tclhttp.c: * nsd/tclimg.c: * nsd/tclsock.c: * nsd/tclxkeylist.c: * nsd/urlencode.c: * nsd/urlopen.c: * nsd/getopt.c: * nsd/getopt.h: * nsd/nswin32.c: * nssock/nssock.c: * win32: Added Win32 support and build files 2003-02-04 Nathan Folkman * nsd/tclmisc.c: (bug fix) Fixed arg checking bug in NsTclStrftimeObjCmd (ns_fmttime) API. 2003-02-03 Jamie Rasmussen * tcl/sendmail.tcl: (bug fix) SF bug 632265. * Fixed minor spelling errors in comments. 2003-02-01 Nathan Folkman * tcl/stats.tcl: Consolidated web based stats interface into a single Tcl file. * sample-config.tcl: Added web stats configuration. 2003-01-31 Mark Page * nsd/conn.c: * nsd/connio.c: * nsd/encoding.c: * nsd/form.c: * nsd/nsconf.c: * nsd/nsd.h: * nsd/queue.c: * nsd/return.c: * nsd/tclcmds.c: * nsd/tclresp.c: * nsd/urlencode.c: * include/ns.h: added in I18N capabilities derived from the OACS I18N design. This set of changes is just those which are supported within the nsd C-code. * sample-config.tcl: Add text for I18N specific config. 2003-01-28 Nathan Folkman * nsd/server.c: * tcl/fastpath.tcl: (bug fix) Tcl code was updated to reflect a a change made earlier to server.c, in which all fast path related configuration was moved from ns/server/ to ns/server//fastpath. This change will require you to update your configuration file to reflect the new configuration path for any fast path options. *** INCOMPATIBILITY *** 2003-01-28 Nathan Folkman * nsd/init.tcl: (bug fix) Updated ns_eval command to mark Tcl interp for deletion in the case of a TCL_ERROR only. Updated ns_eval to properly handle an arbitrarly long number of args. SF bug 675506. 2003-01-24 Elizabeth Thomas * include/Makefile.global.in: * README: Added $(PURIFY) variable back from 3.4 to facilitate easy purify compile. * configure: Made gcc the default value for $CC instead of cc. 2003-01-23 Elizabeth Thomas * Tagged first 4.0 beta: aolserver_v4_r0_beta_1 2003-01-19 Nathan Folkman * nscp/nscp.c: Cleaned up log messages to be more consistent with other server messages. Moved user name from thread name into log notice. Control port logging now disabled by default. Added more detailed configuration instructions to sample-config.tcl. 2003-01-18 Jim Davidson * nsd/auth.c: * nsd/conn.c: * nsd/form.c: * nsd/httptime.c: * nsd/info.c: * nsd/log.c: * nsd/mimetypes.c: * nsd/nsconf.c: * nsd/nsd.h: * nsd/nsmain.c: * nsd/pathname.c: * nsd/random.c: * nsd/tclcmds.c: * nsd/tclfile.c: * nsd/tclhttp.c: * nsd/tclimg.c: * nsd/tclinit.c: * nsd/tclmisc.c: * nsd/tclrequest.c: * nsd/tclresp.c: * nsd/tclset.c: * nsd/tclsock.c: * nsd/tclthread.c: * nsd/urlencode.c: * nsd/urlopen.c: Removed old string commands. * nsd/conn.c: * nsd/connio.c: * nsd/driver.c: * nsd/init.c: * nsd/nsd.h: * nsd/queue.c: * nsd/return.c: * nsd/server.c: * nsd/tclinit.c: Moved Host header mapping code from queue.c to driver.c to catch cases of unmapped Host's. Also, updated the Conn and Sock structures to maintain the servPtr and location correctly Host header based connections. * nsthread/Makefile: * nsthread/cond.c (removed): * nsthread/error.c: * nsthread/memory.c: * nsthread/mutex.c: * nsthread/nsthreadtest.c: * nsthread/pthread.c (added): * nsthread/reentrant.c: * nsthread/thread.c: * nsthread/thread.h: * nsthread/time.c: * nsthread/tls.c: * nsthread/winthread.c (added): * include/nsthread.h: Brought forward nsthread library from 3.5 which includes support for Win32. 2003-01-18 Zoran Vasiljevic * nsd/init.tcl: Summary of changes: o. added _ns_getpackages to enable "package require". o. fixed various issues in ns_getscript proc related to loading Tcl modules which define namespaced versions of standard Tcl commands. o. fixed ns_eval to return value/error and made compatible with standard Tcl "eval" and AOLserver "ns_eval" from 3.x o. made the entire file little bit more readable. 2003-01-17 Mark Page * nsd/driver.c: Change to SockRead; if request has a content-length, null-terminate the content at the specified length. This fixes a problem when some browsers add extra CRLF characters beyond the specified content-length on a POST (see this by using IE to POST data). 2003-01-16 Elizabeth Thomas * nsd/tclmisc.c: Fix WordEndsInSemi so that ns_striphtml correctly * handles ampersands that are not followed by a space or semicolon 2002-11-06 Jeremy Collins * nsd/adpparse.c: Changed ParseAtts to make it compatible with how parsing works in 3.x. * nsd/init.tcl: Fixed namespace bug. 2002-11-05 Jeremy Collins * nsd/adpparse.c: Fixed a bug in Parse. It was not parsing registered tags inside of html tags (ex. '> ) * nsd/tclset.c: Fixed a bug with ns_set tcl commands. ns_set idelkey|delkey would not actually delete the key. 2002-11-02 Jim Davidson * nsd/fastpath.c: Fixed bug with non-server specific cache names. 2002-11-01 Jeremy Collins * nsd/adpparse.c: Fixed a small bug in ParseAtts. It failed to properly parse attribute values with spaces in them. 2002-10-29 Jim Davidson * sample-config.tcl: Updated with examples for connection thread pools and Host header virtual servers. * Makefile: Uses /bin/sh to invoke install-doc. * doc/install-doc: Uses /bin/sh to invoke mkLinks. * nsd/form.c: * nsd/conn.c: * tcl/form.tcl: Changed "ns_conn files" command to just return names of file upload widgets, moving access to other meta data to new fileoffset, filelength, and fileheaders subcommands. Also, removed the ns_conn string command instead of updating. * nsd/nsd.h: * nsd/driver.c: * nsd/nsmain.c: * nsd/server.c: * nsd/queue.c: Implemented multiple named thread pools for virtual servers and Host header based virtual server selection. See sample-config.tcl for config example. * nsd/info.c: Fixed crash bug with NULL server. * nsd/tclcmds.c: Removed NsTclConnCmd and NsTclServerCmd string commands. 2002-10-14 Jim Davidson * doc/install-doc (new): New script to install and cross link the man pages. * Makefile: * include/Makefile.module: Added .PHONY targets and man page install target. * nsd/conn.c: Made "ns_conn copy" use Tcl_Write instead of Tcl_WriteChars to fix binary file upload bug. * nsd/form.c: Fixed bug where Ns_ConnGetQuery (i.e., ns_conn form) could not handle binary data in multpart file uploads. Also, "ns_conn files" now returns file type. * nsd/log.c: Thread ids are now formatted as unsigned long. * include/ns.h: * nsd/config.c: * nsd/tclinit.c: * nsd/tclcmd.c: * nsd/tclsock.c: * nsd/main.c: Added support for libnsd.so to be loaded into a standard (thread enabled) tclsh or linked into a custom tclsh. Calling Ns_TclInit from a custom tclsh or loading libnsd.so via the load command will add many non-server AOLserver commands (e.g., adds ns_set but not ns_adp_puts). * nsd/server.c: * nsd/tcljob.c: Changed ns_job command to create and queue jobs to named queues instead of per-server queues. * nsd/tclthread.c: Added a special Tcl address object type to speed access to the object id's. * nsd/sched.c: Threaded events now use a thread pool instead of create/delete each time. * tcl/form.tcl: Fixed bug accessing uploaded binary files with the ns_getform proc and added ns_getformfile proc to address the ".tmpfile" security issue. 2002-09-28 Jim Davidson * nsd/adpparse.c: * nsd/auth.c: * nsd/conn.c: * nsd/connio.c: * nsd/driver.c: * nsd/dstring.c: * nsd/filter.c: * nsd/init.c: * nsd/log.c: * nsd/main.c: * nsd/modload.c: * nsd/nsd.h: * nsd/nsmain.c: * nsd/queue.c: * nsd/return.c: * nsd/server.c: * nsd/tclenv.c: * nsd/tclinit.c: * nsd/tclthread.c: * include/ns.h: Added missing AOLserver 3.x API's including static module support, Ns_TclRegisterAt traces, connection I/O functions, loadable comm driver stubs, and more. * configure: * configure.in: * nsd/exec.c: Removed weird USE_PROCTHREAD code. * nsd/init.tcl: Uses "ns_ictl modules" for module list. * nscgi/nscgi.c: Uses Ns_CopyEnviron, renamed from Ns_GetEnvironment. * Makefile: Fixed install bug for install-sh. * README: Updated to match AOLserver 3.5. Various outdated docs removed. 2002-09-10 Jim Davidson * Makefile: * INSTALL (new): * aclocal.m4 (new): * configure (new): * configure.in (new): * include/Makefile.global (removed): * include/Mkaefile.global.in (new): * include/Makefile.module: New autoconf-based configuration and build. * nsd/log.c: * nsd/tclenv.c: Updated to used new autoconf-based compile info. 2002-08-24 Jim Davidson * nsd/filter.c: * nsd/server.c: * nsd/tclatclose.c: * nsd/tclvar.c: * nsd/tclinit.c: * nsd/tcljob.c: * nsd/nsd.h: Moved private struct definitions out of nsd.h back to files which depend on them, e.g., struct Filter. * nsd/tclatclose.c: * nsd/tclinit.c: Moved Ns_TclRegisterDeferred to tclinit.c. * nsd/adpeval.c: * nsd/tclsock.c: * nsd/tclinitc: Eliminated NsTclEval in favor of Tcl_EvalEx. * nsd/log.c: * nsd/nsconf.h: * nsd/nsconf.c: Removed complicated and dubious log buffering option. The new ns_logctl feature can be used to batch noisy requests. * nsd/tclinit.c: * nsd/tclcmds.c: * nsd/init.tcl: Added new ns_init command to replace the nsv-based namespace copy/update mechanism. The init.tcl is now called only at startup. * conn.c: * driver.c: * queue.c: * nsd.h: Connection times and timeouts now maintained with Ns_Time-based microsecond resolution. 2002-07-14 Jim Davidson * nsd/log.c: * nsd/tclcmds.c: Added the ns_logctl command with options to hold, release, flush, etc. the log messages in a thread. * nsd/adpcmds.c: * nsd/urlopen.c: Switched to more object-correct Tcl_ObjSetVar2. 2002-07-08 Jim Davidson * nsd/tclthread.c: Cleaned up the object-based commands by collecting common argument and new object allocation code into single GetArgs function. 2002-07-07 Jim Davidson * nsd/tclvar.c: Removed string commands because it was messy maintaining both. * nsd/info.c: * nsd/queue.c: * nsd/tclcmds.c: * nsd/tclset.c: Added object commands. * nsd/tclobj.c: * nsd/tclmisc.c: Updated Ns_Time type code to handle simple single-integer times without microsecond resolution. * include/ns.h: * include/Makefile.global: * Makefile: Updated for AOLserver beta4 release to coincide with Tcl beta1 release. Otherwise, minor edits to new object commands in several places. 2002-07-05 Jim Davidson * nsd/nsd.h: * nsd/adpcmds.c: * nsd/adpeval.c: * nsd/adprequest.c: * nsd/tclcmds.c: Updated remaining ADP commands to be object-based. Because the NsInterp->adp struct now uses Tcl_Obj's for call frame args, the string commands were just dumped. 2002-06-25 Scott S. Goodwin * nsd/tclvar.c: * nsd/tclcmds.c: Reimplemented nsv commands as object commands. 2002-06-19 Jim Davidson * include/ns.h: * nsd/tclinit.c: Added new Ns_TclCreateInterp() which creates and initializes interps for server and non-server interps (e.g., the config interp). Interps are now initialized with a call to Tcl_Init() which enables the standard Tcl library procedures (e.g., unknown, http::, etc.). * nsd/tclthread.c: * nsd/tclcmds.c: Thread and cache related commands no longer require a server, exposing them in any interp created with Ns_TclCreateInterp. * nsd/server.c: NsGetServer handles NULL server. In general, the changes above are steps towards making the AOLserver API's more useful outside the context of a server. The idea is to enable use of libnsd for other applications, e.g., shells interps. 2002-06-12 Jeremy Collins * nsd/conn.c: * nsd/tclcmds.c: Reimplemented "ns_conn" as an obj based command. In the process I also modified NsTclConnObjCmd to use Tcl_GetIndexFromObj. This should improve performance as well as the readability of the code. * nsd/auth.c: * nsd/form.c: * nsd/httptime.c: * nsd/log.c: * nsd/mimetypes.c: * nsd/nsmain.c: * nsd/pathname.c: * nsd/random.c: * nsd/tclatclose.c: * nsd/tclfile.c: * nsd/tclhttp.c: * nsd/tclimg.c: * nsd/tclinit.c: * nsd/tclmisc.c: * nsd/tclrequest.c: * nsd/tclresp.c: * nsd/tclsock.c: * nsd/tclthread.c: * nsd/urlencode.c: * nsd/urlopen.c: Cleaned up the way we were setting the result on tcl errors. 2002-06-12 Jim Davidson * include/nsthread.h: * nsthread/mutex.c: * nsthread/thread.c: * nsd/info.c: Rename Ns_MutexEnum and Ns_ThreadEnum to Ns_MutexList and Ns_ThreadList to not conflict with pre-4.0 definitions of removed functions. * nsthread/Makefile * nsthread/nshtreadtest.c (new file): Added simple program to test thread interface. * nsthread/thread.h: * nsthread/cslock.c: * nsthread/rwlock.c: Added new NsMutexInitNext function to consistantly name mutexes in internal objects. * nsthread/sema.c: Restored AOLserver 3.x implementation using Ns_Mutex and Ns_Cond objects. The API's in were not implemented on OS/X. 2002-06-10 Jim Davidson * include/Makefile.global: * include/Makefile.module: Added support for dynamic library init procs set via the LIBINIT make variable. * Makefile: * nsthread/compat.c: * nsthread/cond.c: * nsthread/cslock.c * nsthread/error.c: * nsthread/fork.c: * nsthread/master.c: * nsthread/memory.c: * nsthread/mutex.c: * nsthread/osxcompat.c: * nsthread/osxcompat.h: * nsthread/reentrant.c: * nsthread/rwlock.c: * nsthread/sema.c: * nsthread/signal.c: * nsthread/thread.c: * nsthread/thread.h (new file): * nsthread/time.c: * nsthread/tls.c: Moved from nsd as separate nsthread library. * include/ns.h: * include/nsthread.h: Include of tcl.h moved to nsthread.h from ns.h. * nsd/Makefile * nsd/init.c (new file): * nsd/binder.c: * nsd/cache.c: * nsd/config.c: * nsd/encoding.c: * nsd/exec.c: * nsd/info.c: * nsd/listen.c: * nsd/log.c: * nsd/mimetypes.c: * nsd/modload.c: * nsd/nsd.h: * nsd/nsmain.c: * nsd/nsconf.c: * nsd/proc.c: * nsd/sched.c: * nsd/server.c: * nsd/tclinit.c: * nsd/urlspace.c: Various runtime initializations collected into dynamic library load time init via NsdInit in init.c. 2002-06-08 Jim Davidson * include/Makefile.global * include/Makefile.module: Support for building programs along with dynamic libraries and modules. Also, fixed bug setting -install_name on OS/X. * nsd/Makefile: Use of updated Makefile.module and include osxcompat.o on OS/X. * nsd/nsd.h: * nsd/osxcompat.h: * nsd/osxcompat.c: Compat functions moved from ../nsosx. * nsosx/README (removed): * nsosx/Makefile (removed): * nsosx/nsosx.c (removed): Tcl no longer requires any compat functions, remainder moved into nsd. Otherwise, minor tweaks throughout to silence compiler warnings. 2002-06-05 Jim Davidson * Makefile: * include/Makefile.global: Added tclmemdbg flag to compile Tcl and AOLserver with TCL_MEM_DEBUG option. * nsd/unix.o: * nsosx/README (new file): * nsosx/Makefile (new file): * nsosx/nsosx.o (new file): Hacks for Apple OS/X removed from nsd/unix.o and moved to nsosx.o as a Tcl compat object. See README for instructions. * nsd/nsd.h: * nsd/server.c: * nsd/adpparse.c: * nsd/adpcmds.c: * nsd/adpeval.c: Added support for new ns_adp_safeeval and ns_adp_registerproc commands. Also, registered tags can now be modified after startup. * include/Makefile.module: Updated to allow building of dynamic library of public routines to go with dynamic module, e.g., libnsdb.so with nsdb.so. * nsext/Makefile: * nspd/Makefile: * nspd/msg.c (removed): * nsext/msg.c (moved from nspd): Moved Ns_Ext API from libnspd.a static library to libnsext.so dynamic library as it's used by both nsext.so and proxy drivers. * nsdb/Makefile: * nsdb/nsext.c (new file): Moved public API for nsdb out of nsdb.so module and into libnsdb.so dynamic library. 2002-05-15 Jim Davidson * Makefile: * include/Makefile.global: * tcl8.3.4 (removed): As of Tcl version 8.4., no modifications to the Tcl sources are required for AOLserver. Therefore, the hacked 8.3.4 sources have been removed. Going forward you'll need to checkout the Tcl source from Sourceforge into the directory specified in include/Makefile.global (currently ../tcl8.4). The top level Makefile includes the "tcl-checkout" and "tcl-update" targets which should help. * include/ns.h: * nsd/server.c: * nsd/nsd.h: * nsd/tclcmds.c: * nsd/tclinit.c: * nsd/init.tcl: * nsd/dbdrv.c (removed): * nsd/dbinit.c (removed): * nsd/dbtcl.c (removed): * nsd/dbutil.c (removed): * nsdb/dbinit.c (new): * nsdb/dbdrv.c (new): * nsdb/dbtcl.c (new): * nsdb/dbutil.c (new): * include/nsdb.h (new): Moved the NsDb interface from core to new nsdb module. Simply loading nsdb.so should work as before. Goal is to enable full replacement of NsDb in the future. * nsd/cache.c: * nsd/callbacks.c: * nsd/listen.c: * nsd/nsconf.c: * nsd/op.c: * nsd/sched.c: * nsd/server.c: * nsd/sockcallback.c: * nsd/urlspace.c: * nsext/nsext.c: * nslog/nslog.c: * nslog/nslog.c: Simple mutex name updates. * nscgi/nscgi.c: Minor bug fixes * nsd/adpeval.c: Fixed read of freed data. * nsd/tclinit.c: Fixed crash bug of null interp delete. * nsd/exec.c: * include/Makefile.global: Support for process manager thread enabled with -DUSE_PROCTHREAD to route all process create/wait through a single thread for Linux threads. 2002-02-24 Jim Davidson * nsd/nsd.h * nsd/unix.c: * tcl8.3.4/unix/tclLoadDyld.c: Hacks for routines missing from OS/X. The implementation of sigwait() is not strictly correct but appears good enough for AOLserver's use. * Makefile: * nsd/Makefile: * nsmain/Makefile: * include/Makefile.global: * include/Makefile.module: * include/Makefile.library (removed): Updates for linking modules against the nsd shared library and for library filenames which don't end in .so. * nsext/Makefile * nspd/Makefile: Moved proxy message code from nsext to nspd, now a static library. * nsd/main.c: * nsd/init.c: * nsd/Makefile: * nsmain/*: * sample-config.tcl: * tcl2ini.tcl: * ini2tcl.tcl: * Makefile: Moved build and install of nsd and init.tcl into nsd directory and install of sample config to top level Makefile. Added tcl2ini.tcl and ini2tcl.tcl config file utilities. 2002-02-07 Jeff Hobbs * nsmain/init.tcl: * nsmain/sample-config.tcl: * nsssl/keygen.tcl: * tcl/debug.tcl: * tcl/fastpath.tcl: * tcl/file.tcl: * tcl/form.tcl: * tcl/http.tcl: * tcl/nsdb.tcl: * tcl/sendmail.tcl: * tcl/util.tcl: code cleanup to brace exprs and fix indentation 2001-12-05 Jim Davidson * nsd/tclthread: Tcl threads now return their string result via ns_thread wait. 2001-12-20 Scott S. Goodwin * include/Makefile.library: Changed RFLAG to RPATH, and took out $(AOLSERVER)/lib: $(LDSO) -o $(LIB) $(OBJS) $(LIBS) $(RFLAG) $(AOLSERVER)/lib now reads: $(LDSO) -o $(LIB) $(OBJS) $(LIBS) $(RPATH) which is what I think was intended. Still have the problem that $(AOLSERVER)/lib must already exist. 2001-11-05 Jim Davidson * Removed support for Win32, removing both the build/test environment and updating the code to be standard Unix style. Among other style changes such as changing SOCKET's to simple Unix style int's, the short lived Ns_Buf structure was also eliminated in favor of the Unix standard struct iovec. * Removed support for older non-pthread Unix platforms such as HP/10 and SGI native. * Updated Tcl to version to Tcl 8.3.4, replacing tclAlloc.c with a modified version of what was libnsthread's fast pool allocator including support for fast direct Tcl_Obj allocation. Also added a few functions to tclUnixThrd.c for thread safety (e.g., readdir_r and localtime_r support) and fixed up tcl.m4 for better FreeBSD 4.4 and Solaris thread builds. * ns_malloc, Ns_ThreadMalloc, and Ns_PoolAlloc all now simply call Tcl_Alloc which is always enabled. The previous -z (enable) and -p (disable) command line flags are ignored. * Integrated remainder of libnsthread, now standard pthreads and compatible with Tcl pthread code, into libnsd.so. * Updated libnsd.so to use poll() instead of select() where possible. * Removed the code which would attempt to determine when the sock callbacks and scheduler were idle before completing startup. The code was overly complex and not strictly correct. * Removed the -k and -K shutdown/restart options which was not entirely safe. * Removed the child-process privleged port Ns_SockListen code in nsd/binder.c. Binding privleged ports (e.g., port 80) now requires the -b or -B command line methods introduced in 3.4, e.g., "nsd -ft nsd.tcl -b myhost:80". The binder code, while clever, was a potential security risk. * Cleaned up some lingering sloppy uses of Ns_ConfigGet and other older macros. Old macro and function definitions can be disabled by defining NS_NOCOMPAT as is done when compiling the core server and modules. * Incremented version to 4.0b2. 2001-08-29 Scott S. Goodwin * https.tcl: made fixes to ns_httppost per Rick Lansky at bom.com. He also suggested I allow the Content-type to be passed in as a parameter, so I've added that too. 2001-08-27 Scott S. Goodwin * https.tcl: added ns_httppost, that is called with url, rqset, qsset and timeout. The qsset is an ns_set with key/values that will be turned into user=scottg&pass=1234, for example, and passed as content in the POST. 2001-08-17 Scott S. Goodwin * tcl/http.tcl: moved rqset to be the last arg passed to ns_httpget so it wouldn't break existing code. I should have done it that way in the first place. 2001-08-15 Scott S. Goodwin * tcl/http.tcl: add the rqset param as the second argument to ns_httpget, which in turn calls ns_httpsopen and passes the rqset to it. The change is for consistency so that you can use cookies with ns_httpget as well. 2001-07-16 Scott S. Goodwin * tcl/http.tcl: you can now do ns_httpopen GET /index.html; the script will automatically prepend http://hostname:port/ to the url. 2001-06-30 Dossy Shiobara * nsd/conn.c, tests/api/ns_conn.adp: fixed ns_conn outputheaders as per bug #433676 submitted by Yon Derek (yond). 2001-05-22 Scott S. Goodwin * nsd/conn.c: changed Ns_ConnDriverContext in 4.x to return the actual conn-specific, module-specific context back, which is how it works in 3.x. For some reason this API call was changed to always return NULL, but nsopenssl and potentially other comm drivers need to get their conn-specific info back. 2001-04-25 Dossy Shiobara * Implemented [ns_localtime ?tz?] as per "[ #418890 ] ns_localtime should accept timezone". 2001-03-15 Dossy Shiobara * include/Makefile.win32 win32/*/Makefile: initial attempts at Makefiles suitable for NMAKE for building on Win32 * include/ns.h: define typedef __int64 INT64 for Win32 2001-03-12 Scott S. Goodwin * nsmain.c: Segmentation fault when using -g flag: line 294 should read Ns_GetGid(garg) instead of Ns_GetGid(optarg). 2001-03-12 Jim Davidson Initial checkin of AOLserver 4.0 (beta), now supporting vitual servers and (finally) removing supporting for Tcl 7.6. 2001-03-08 Kris Rehberg *** AOLserver 3.3 RELEASED *** 2001-03-08 Jim Davidson * Added NsTclFinalizeThread() at end of Tcl TLS cleanup to finalize Tcl 8.x thread data. This fix was the last hurdle for finalizing nsd8x. 2001-01-31 Kris Rehberg * Makefile (MODULES): nsunix, nsvhr, and nsodbc moved to the Module Collection. 2001-01-16 Jim Davidson * Cleaned up sloppy use of the nsServer global wherever it's used. 2001-01-04 Kris Rehberg * nsd/tclmisc.c: Ticket 13090. ns_striphtml crashing-bug in nsd8x fixed. 2000-12-14 Kris Rehberg * tcl/http.tcl: Corrected typo _ns_ns_http_readable. * nsd/dstring.c (Ns_DStringPrintf): Ticket 12765. Ns_DStringPrintf uses vsnprintf instead of vsprintf with specified buffer size. Thanks to "??". * nsd/return.c (Ns_ConnConstructHeaders): Ticket 12764. If-Modified-Since (304) works with keepalive now. Thanks to Jim "??". 2000-12-13 Kris Rehberg * include/Makefile.global: Builds with architecture-specific optimization options. Auto-detects architecture for most platforms. Auto-select compiler and Purify usage from command line, e.g.: gmake nativeme=1 (all non-free Unix) gmake gccme=1 (some non-free Unix) gmake PURIFY=/path/to/purify/executable (Solaris and Irix only) * nssock/Makefile*: now installs The Right Things in The Right Places. * nsd/Makefile: nsd8x is the default AOLserver now (nsd symlinks to nsd8x). * nsd/sample-config.tcl: Added some tuning parameters for easy reference. 2000-12-12 Kris Rehberg * nsvhr/nsvhr.c (UDSProxy): More type changes. * nslog/nslog.c (Ns_ModuleInit): pointer-to-function casted. * nscp/nscp.c (GetLine): buf changed to char *; casted AcceptProc. 2000-12-12 Jim Davidson * nssock/sock.cpp: Fixed multiple-load problems, added sndbuf, rcvbuf, sendwait, and recvwait options. Added configurable backlog via Ns_SockListenEx. Fixed compile bugs for ssl. Restructured the socket module to wait in server busy situations instead of sending the server busy message. Also, moved the graceful close burden to the SockThread from the connection thread. * thread/win32.cpp: Moved WinThread allocation to DllMain, eliminating GetWinThread function. Also, disabled thread cleanup for final thread to avoid any TLS cleanup callbacks attempting to invoke code in unloaded libraries like Tcl. Removed call to NsInitThread no longer needed. Switched to rolling condition broadcast wakeup as in the sproc code. More fixes for new Thread context model. * thread/tls.c: Changed NsLock API's to return 1/0 instead of NS_OK/NS_TIMEOUT and more use of Ns_MasterLock to keep things simple. * thread/thread.c: Changed thread enum to return Ns_Thread, not Ns_Thread pointer which didn't make much sense. Updated "ns_info pools" command to reflect change. Fixed bugs with Ns_ThreadEnum and pool counters. Update of the Ns_Pool API to support more stats gathering available via new Ns_PoolStats API. Remove Thread->etime and NsPool API's. Moved sprintf of default thread name from NsThreadMain to NsInitThread under protection of threads lock. Added comment for NsInitThread. More fixes for new Thread context model. Updated sproc.cpp code for new Thread management and removed the wait for thread startup which shouldn't be needed. * thread/test.c: Cleaned up code a bit to quiet compiler. Better test for PTHREAD_TEST. Fixed undefined var bug for sproc. Added some comments, a native pthread test, and a recursive stack checker. * thread/tcl8x.c: Added Tcl_JoinThread for benefit of Tcl8.4. * thread/sproc.cpp: Changed NsLock API's to return 1/0 instead of NS_OK/NS_TIMEOUT and more use of Ns_MasterLock to keep things simple. Fixed some comment bugs, update thrPtr->tid after fork. Added call the NsInitThread. Updated sproc.cpp code for new Thread management and removed the wait for thread startup which shouldn't be needed. * thread/pthread.cpp: Changed NsLock API's to return 1/0 instead of NS_OK/NS_TIMEOUT and more use of Ns_MasterLock to keep things simple. Fixed bug of not setting the tid correctly. Added call the NsInitThread. * thread/pool.c: Added Ns_PoolEnum to get at pool stats as with mutexes and threads, removing the old Ns_PoolStats API's and updating the "ns_info pools" command. Fixed bugs with Ns_ThreadEnum and pool counters. Update of the Ns_Pool API to support more stats gathering available via new Ns_PoolStats API. Removed for sgi which shouldn't have been there. Removed the sbrk() code for now, was crashing SGI (probably not thread safe). Use sbrk() on Unix instead of malloc to avoid any malloc overhead or contention. Reduced the zippy allocator page size to 16k from 64k. * thread/pool.c, thread.c, sproc.cpp: Re-structured management of the Thread context to better support threads created without Ns_ThreadCreate (e.g., Java VM threads). * thread/mutex.c: Changed NsLock API's to return 1/0 instead of NS_OK/NS_TIMEOUT and more use of Ns_MasterLock to keep things simple. * thread/cs.c, memory.c, mutex.c, pool.c, pthread.cpp, reentrant.c, rwlock.c, sema.c, sproc.cpp, tcl8x.c, test.c, thread.c, win32.cpp: Restructured the thread interfaces, moving the master lock to the platform interface code, integrating the zippy allocator with Ns_Pool/Ns_ThreadAlloc and use of a new simple direct allocator for all thread objects. * win32/nsthread/nsthread.dsp: Removed master.c and oldpools.c. * nsd/unix.c: Made ns_eval command disabled by default to avoid using SIGUSR2. * nsd/tclthread.c: Changed SETOBJ macro to SetObj function which no longer sprintf's directly into interp->result. * nsd/tclmisc.c: Added Ns_PoolEnum to get at pool stats as with mutexes and threads, removing the old Ns_PoolStats API's and updating the "ns_info pools" command. Changed thread enum to return Ns_Thread, not Ns_Thread pointer which didn't make much sense. Updated "ns_info pools" command to reflect change. Added more info for "ns_info pools". Added "ns_info pools" command to dump memory pool stats. * nsd/tclinit.c: Added nsconf.quiet and nsconf.startuptimeout. Made ns_eval command disabled by default to avoid using SIGUSR2. Added nsConfQuiet flag to quiet down the startup messages with the -q flag. * nsd/sock.c: Added Ns_SockListenEx. * nsd/serv.c: Ensured the conn thread name was set first. Added Ns_RegisterAtReady callbacks for indicating server no longer busy. * nsd/sched.c, nsmain.c, serv.c, sockcallback.c: Added code to wait for conn thread, sock callback, and sched idle at startup to help alleviate code start problems. * nsd/nsmain.c: Shuffled initialization to ensure command line args are read before calling any Ns API's, ensuring zippy malloc can be set if needed. * nsd/nsconf.c: Added nsconf.quiet and nsconf.startuptimeout. Made ns_eval command disabled by default to avoid using SIGUSR2. * nsd/dstring.c: Remove unused vars. Uses ns_realloc to grow strings and maintains dstring stack in the staticSpace instead of the *addr pointer for compatibility with Tcl dstrings. * nsd/callbacks.c: Added Ns_RegisterAtReady callbacks for indicating server no longer busy. * nsd/binder.c: Added Ns_SockListenEx. 2000-12-12 Kris Rehberg * nsvhr/nsvhr.c (VHRProc): Matches hostnames regardless of case. * nssock: Supports Rainbow CryptoSwift SSL accelerators (compile-time option; requires the Swift SDK from http://www.rainbow.com/). * nsd/nsmain.c (Ns_Main): Changed order of some config default initialization. Config options cleaned up a lot. Usage message very less glib. SUNWspro dumped core on usage message due to nsconf.argv0 quigglyness. 2000-10-20 Kris Rehberg *** AOLserver 3.2 RELEASED *** 2000-10-20 Jim Davidson * win/tclWinSock.c: Fixed deadlock in sockets init code. * nsd/nswin32.c: Fixed service install code to allow long pathnames with spaces. Added/use ns_pipe which set's close-on-exec like ns_sockpair. 2000-10-17 Kris Rehberg * nssock/sock.cpp: extra padding on Server Busy message to defeat MSIE friendly error messages. * nsd/nsconf.h: All configuration option defaults have been moved to nsconf.h as #defines. * Makefile (install): Tcl library for nsd8x is now installed into $(PREFIX)/lib/tcl8.3. * tcl/http.tcl (ns_httpopen): Host:port is now sent to remote host if != 80. Suggested by Jerry Asher. * tcl/fastpath.tcl (_ns_dirlist): All kinds of Win32 pathnames should now be working. Thanks to Eric Klein. * nsd/return.c (Ns_ConnReturnNotice): New options "errorminsize", to pad error messages to defeat MSIE friendly errors (fix suggested by ArsDigita) and "noticedetail" to return more detailed information on notice pages. * nslog/nslog.c: suppressquery option added to suppress logging of query data. * nslog/nslog.c: LogExtendedHEaders option added. Contributed by ArsDigita. * nsd/tclfile.c: Input string to mktemp is copied, because mktemp edits the string in-place and that's generally a bad thing to do with argv's. Contributed by ArsDigita. * nsd/tclnsshare.cpp (ShareTraceProc): Patch to tclnsshare.cpp to avoid race conditions if the shared value is a list. Contributed by ArsDigita. * tcl/http.tcl (ns_httpopen): CRLF now returned in ns_httpopen. Contributed by ArsDigita. * tcl8.3.2/generic/tclCmdIL.c: Nonsense case of lsorting a list with length <= 0 caused a memory leak. Fixed. Contributed by ArsDigita. * nsd/adpfancy.c: We now use the Arsdigita version of adpfancy. Contributed by ArsDigita. * nsd/adp.c: Sundry ArsDigita changes. 2000-10-16 Kris Rehberg * tcl/init.tcl: Initialize errorCode and errorInfo like tclsh does. From ArsDigita. * nsd/nsd.h, nsd/tclcmds.c, nsd/tclvar.c: nsv_names Tcl command lists names of nsv's in memory. * tcl8.3.2: The complete Tcl 8.x distributions are now included. They aren't installed with AOLserver's "gmake install", but you can install them manually if you want to use them for the i18n encodings and stuff like that. It will install into the "lib/tcl8.3" directory of the binary distribution with AOLserver 3.3 and later. * nsd/nsmain.c (Ns_Main): Had to move Ns_ThreadSetName below the stdin/stdout/stderr reassignment to fix a fd problem with running nsd on Irix in "installed" or "daemon" mode that would prevent the server from starting up. Sigh. (Ns_Main): Took out little note about -k|-K being deprecated. 2000-10-13 Kris Rehberg * nsd/nsmain.c (Ns_Main): gid of the specified user is set even if it's not specified. (UsageError): -K and -k give a "deprecated" warning. (Ns_Main): -f gives a "deprecated" warning. * nsd/binder.c (PreBind): Didn't really tell us if it was successful at pre-binding. Helpful to know if you're wondering what happened to that port you wanted to pre-bind. (Binder): backlog variables (2) initialized to nsconf.backlog. * nssock/sock.cpp, nsd/return.c: Made an attempt at standardizing the error codes and error page content. 2000-10-13 Jim Davidson * sproc.cpp: Fixed Wakeup() error message and update child's sproc pid after fork. * nsd/random.c: Put back log message when generating seeds. * nsd/nsconf.c: Fixed memory overwrite bug in stats and increased the default buffer value. * nsd/keepalive.c: Fixed array overwrite with maxkeep=0 bug. Contributed by ArsDigita. * nsd/tclkeylist.c: A more modern version added that's compatible with Tcl 8.3.2 (nsd8x). * nsd/stamp.c: Forces the build date reported by AOLserver to be absolutely the last possible moment before the link step happens, not just the last time nsmain.c was built. * nsd/binder.c: New option "-b" to prebind ports as root (but not listen on them). This allows AOLserver to start up on MacOS X on ports 80 and 443 like this: "nsd ..blah.. -b 10.0.0.1:80". * nssock/: Building nsssl is much less of a debacle and doesn't rebuild itself three times anymore. * various: fork() calls in all kinds of code were changed to use ns_fork. ns_fork now lives in the thread library (thread/ directory). * tcl8.3.2/generic/tclIO.c: Fixed memory leak that leaks around 112 bytes each time a file descriptor is closed. Thanks to Rob Mayoff for finding this and proposing a solution. 2000-10-09 Kris Rehberg * sample-config.tcl: nsd.tcl is now sample-config.tcl so that existing users can look at the new reference configuration. * nsd/nsmain.c (Ns_InfoNameOfExecutable): new function just returns nsconf.nsd which is determined elsewhere. * nscp/nscp.c (Login): Tells you lots of harmless info about the machine once you log in. Also, nscp does not run unless configuration is explicitly set * nsd/nsmain.c: Some typo or other. * General: Files were re-arranged and some were renamed. The sample SSL key/cert files are sample-certfile, sample-keyfile. The nsd.tcl is now called sample-config.tcl (so that existing installations always have a current reference copy of the configuration). Other minor changes. * tests/: Moved from its hiding place in scripts/test. Install them with "gmake install-tests". * nsd/tclxkeylist.c, nsd/tclcmds.c, nsd/Makefile: Re-added TclX keyl* commands that were in AOLserver 2.x. These are inferior to ns_set which is why they were left out in the first place. 2000-10-04 Jim Davidson * binder.c: Set close-on-exec on received fd from binder. * sock.c: Removed cthread errno API's, Mac OS X now has thread-safe errno. * nsd/nsmain.c, include/Makefile.global, nsd/nsthread.h, nspd/main.c, nsunix/nsunix.c, nsvhr/nsvhr.c, thread/Makefile, thread/osthread, thread/reentrant.c, thread/signal.c: Updates for Mac OS X. Use MACOSX instead of APPLE; use HAVE_BSDSETPGRP, HAVE_CMMSG, use pthreads instead of cthreads. * nssock/sock.c: Removed setting bufsize to uninitialized value on ssl. * include/ns.h: Removed Ns_CacheTimedGetValue which was an odd interface not used anywhere. * nsd/nsd.h: Update to version 3.11. * tcl/namespace.tcl: Added namespace export to init script. * thread/pthread.cpp: Stopped using pthread_once as it appears to require a lock. 2000-10-04 Kris Rehberg * win32/nsssl/nsssl.dsp: nsssl project for win32. * win32/aolserver.dsw: main installation keeps DLL's as DLL's now. * scripts/nsd.tcl: shared library extension is now platform-dependent * nssock/ssltcl.c: Changed name of ReadFile adn WriteFile to avoid Win32 naming conflicts. 2000-09-28 Kris Rehberg * scripts/tests/nstelemetry.adp: added "Expires: now" header to ensure it gets run each time it's visitted. * nsd/serv.c (NsConnArgProc): Race condition when threads exit while [ns_info threads] is run; arg can be NULL. Seen mostly by people who regularly visit nstelemetry.adp. (AppendConn): same thing but with connPtr. This may be a losing battle. It appears to work on a busy Irix server, so I'm declaring victory for now. 2000-09-28 Jim Davidson * nssock/sock.c: Fixed bufferred read code in SockRead, resulting in a big performance boost and system load reduction. Special thanks to Zachary Girouard. 2000-09-05 Kris Rehberg *** AOLserver 3.1 Released *** 2000-09-05 (various: Jerry Asher, Jim Davidson, "Dossy," Curtis Galloway, Scott S. Goodwin, Rob Mayoff, Kris Rehberg) * thread/win32.cpp: Sets thread stack size as on other platforms. * thread/thread.c: NULL out thread arg at exit to avoid Ns_ThreadEnum checking arg info for possibly deallocated context as seen in ns_info threads. Also, moved read of firstPtr in Ns_ThreadEnum inside lock. Added Ns_ThreadCreate2 in thread.c needed for upgrade to Tcl 8.3.1 in tcl8x.c * thread/pthread.cpp: ETIME bug work around not causes wakeup in Ns_CondWait and Ns_CondTimeWait instead of waiting again. This is more conservative and should avoid problems some have had with threads missing wakeup. * thread/pool.c: Added a simple 1-byte range check to -z allocator. * thread/Makefile: Added dependency for osthread.o to Makefile. * tcl/namespace.tcl: Added namespace export to init script. * nsvhr/nsvhr.c: Switched to Ns_WriteConn in TimedSockDump to ensure all data was sent. * nssock(nsssl): SSL module includes a fake 40-bit/512-bit export-grade SSL keyfile.pem and certfile.pem for immediate use on installation. Adjusted for use with BSAFE 4 and 5. * nspd: Library now installed to binary distribution. * nsd/tclsock.c: Fixed crash bug in error message in ns_socknread. * nsd/tclcmds.c: Added ns_adp_registertag command as documented. * nsd/serv.c: Added missing break for unauthorized case in ConnRun. * nsd/random.c: Fixed deadlock between Ns_DRand/Ns_GenSeeds. * nsd/nsmain.c: Fixed some message formatting problems. * nsd/mimetypes.c: Added .png type, "image/png". * nsd/dbtcl.c: Removed unused variables in GetCsvCmd. Use a dstring to create the column list instead of incrementally setting the output variable with Tcl_SetVar. This was necessary to avoid conflicting definitions of the needed TCL_ flags between 7.6 and 8.x. * nsd/dbinit.c: MOdified current per-thread handle count to use a single TLS slot instead of a slot per pool. * nsd/tclinit.c,adp.c,conn.c: The use of thread-local storage (Tls) is now self-initializing in the conn, ADP, Tcl, etc. This allows ns_conn commands to be used outside a connection thread as well as other uses of Tls where it may not be ready for use. * nscp/nscp.c: Password non-echo code confuses Win32 and some free Unix telnet clients so it has been disabled by default for now, though it can be enabled by setting "echopassword" in the nscp module section of nsd.tcl. 2000-08-21 Kris Rehberg * nscp/nscp.c: Makes some attempt to recognize and handle telnet IAC codes like CTRL-C and CTRL-D to force a logout. This implementation of the telnet protocol is dirt-cheap, so only standard Unix telnet is supported. On Win32, IAC handling is completely disabled because the client is too chatty with its IAC codes. 2000-08-20 Kris Rehberg * nsftp, nspostgres, nssolid, nssybpd moved to $TOP level. 2000-08-17 Jim Davidson * nsd/dbtcl: Removed unused variables in GetCsvCmd. * nsd/adp.c: Fixed bug of not truncating output buffer when an error was thrown during an ns_adp_parse. Fix suggested by Rob Mayoff. * tcl7.6 and tcl8.2.3: Switched to blocking Tcl_WaitPid to avoid zombies as suggested by Rob Mayoff. * thread: NULL out thread arg at exit to avoid Ns_ThreadEnum checking arg info for possibly deallocated context as seen in ns_info threads. Also, moved read of firstPtr in Ns_ThreadEnum inside lock. 2000-08-17 Kris Rehberg * nssock/sock.c (SockThread): warning sent to log when Server Busy is returned. * All the Makefiles should be in line with each other. Typing "gmake", "gmake install" and "gmake clean" should work in any directory. NSHOME is paid attention to by all Makefiles. * nsd: Ns_Log and Ns_Fatal statements are hopefully more standardized and more useful to admins and developers. * Irix now builds as -o32 using the native compiler by default. See Makefile.global on how to change. 2000-08-15 Kris Rehberg * include/Makefile.global (INSTLOG): should have pointed to $(INST)/lib, not $(INST)/modules/lib. * Makefile: nsunix resurrected. All modules are built. If a module is missing a library, it is not built, but it won't stop the AOLserver build process (no error is thrown). The build will continue with the next module. * nsftp: guesses if you have TCP_WRAPPERS available. * nsext: Ten guesses why $(NSHOME)/include/nsextmsg.h was duplicated here. * nssybpd: Hopefully, the log statements will be easier to understand by both admins and developers. It's still messy since it uses syslog. Makefile redone to use standard AOLserver rules. RPATH is used a little more intelligently. Removed files that had no business living there. * include/Makefile.global: Took stab at RPATH support on Solaris to perhaps remove the need for LD_LIBRARY_PATH on an intelligenly-administered system. New rule for libnspd.a. 2000-08-14 Kris Rehberg * Makefile: nsvhr has been resurrected and enjoys our full support. * nsexample/Makefile: The include at the bottom wasn't using $(NSHOME). 2000-08-14 Jim Davidson * Tcl 8.x library upgraded to tcl8.3.2. * thread/pool.c: A spiffy range-checker added to the Zippy (-z) memory allocator. 2000-08-11 Kris Rehberg * nsvhr/nsvhr.c: Always add "Connection: close" to the request line to satisfy HTTP 1.1 RFC -- this would break MSIE in HTTP 1.1 mode. HTTP_EOL of "\r\n" used on all request lines for stupid web servers on the other end. Protocol "tcp" added as synonym of "http" for old-time Unix heads. Lots of folks lended a hand on this one -- Satyam Priyadarshy, Jerry Asher, Kriston Rehberg, and special thanks to Wanda G. at AOL for adding a CNAME in DNS so quickly. 2000-08-09 Kris Rehberg * nsd/serv.c: A whole lot less chatty about conns starting and exiting. If you want to see them, turn on the Debug flag. * doc/*: lots of updates. Title page extremely simplified. SSL docs updated. Release notes updated. NSV docs corrected (thanks to Todd Levy. 2000-08-09 Jim Davidson * tcl7.6/generic/tclFHandle.c: Removed needed fileTable which could result in crashes when fd's where reused quickly [fixes a rare multiple-exec crashing bug in nsd76 --kris]. * thread/tcl8x.c: Added a wrapper startup for Tcl_CreateThread for the benefit of Win32. * nsd/log.c: Removed severityRank array. * nsd/tclmisc.c: Fixed bug with ns_info pid. [I can't code --kris] * nsd: keepalive.c,nsmain.c,sched.c,serv.c: Re-ordered shutdowns to ensure connection threads are stopped before other shutdowns begin (e.g., sched, sockcallback). * tcl8.3.1 replaces tcl8.3.0. README.AOLSERVER added to tcl8.3.1 directory. Original copies of changed are named *.orig. * include/Makefile.global: Build environment now uses gcc -shared -nostartfiles as the default LDSO. * nsthread/thread.c: Added Ns_ThreadCreate2 with extra flags argument used by Tcl_CreateThread to create a detached thread. 2000-08-06 Scott S. Goodwin * nsd/log.c: Segmentation fault was occuring when writing to the log file because file pointer was being assigned to incorrectly - it wasn't NULL and it wasn't a valid address within processes memory. Fixed. 2000-08-06 Scott S. Goodwin * nssock: You can now compile with BSAFE versions 4 and 5. You'll need to specify the path to your BSAFE libaries and the BSAFE version in the nssock/Makefile before compiling. If you don't have BSAFE and want to compile without SSL at all, edit the toplevel Makefile and take out all the "SSL=1" text. The files changed were nssock/Makefile and nssock/t_stdlib.c. 2000-08-02 Kris Rehberg * Build process is a little more rule-oriented. The cleaning rules "distclean" and "clobber" were removed. The Tcl libraries are always distcleaned when "gmake clean" is invoked. Rules that can be used as dependencies were made for libnsthread and the Tcl libraries -- their names are "libnsthread," "libtcl76," and "libtcl8x," respectively. PREFIX is now used as the installation directory (along with INST), so the more familiar "gmake install PREFIX=/usr/local/aolserver" will work. Additionally, gmaking in a subdirectory with dependencies now works. * nsd/log.c: The sourge of modlog has been removed. All code included with AOLserver that used Ns_ModLog now doesn't. Many log statements are now hopefully more standardized. This will be a continuing improvement over the next several updates. I would like to use gcc's __FUNCTION__ macro but it doesn't work on native compilers, but we may start using __LINE__ and __FILE__ instead or replace Ns_Log with a smart macro that takes care of all this stuff for us. * nsd/tclmisc.c (NsTclInfoCmd): ns_info pid added to return the process id. 2000-08-01 Kris Rehberg * nsd/adp.c (Ns_AdpRequest): The enableexpire option was putting an Expires header even if it already existed. * nsd/return.c (Ns_ConnReturnNotice): Yikes, /face should have been /font. No more fonts, colors, etc, on default notice pages. * nsd/tclsock.c (NsTclSockOpenCmd): Removed spurious Ns_Log Notice from ns_sockopen. * tcl/form.tcl (ns_getform): MSIE presents the wrong stuff to the server when a multipart/formdata POST is redirected. Workaround contributed by Joseph Bank. * tcl/fastpath.tcl (_ns_dirlist): base href removed -- links are now fully-qualified. * Makefile (install): include and lib dirs are now included in binary distribution. * tcl/http.tcl (_ns_http_gets): \n replaced by \r in all but _ns_http_gets so that arbitrary headers get set correctly. * tcl7.6/generic/tclPosixStr.c (Tcl_SignalMsg): Patch to Tcl 7.6 for Red Hat on SPARC architectures. Contributed by Mike Chan. 2000-07-13 Kris Rehberg * scripts/nsd.tcl: nssslmodule names the nsssl/nsssle binary's filename. nscp_port tells nscp what port to listen. * nssock: nssock.c renamed sock.c, SSL support has been merged back with nssock so that both nsssl and nssock use identical socket code. * nsssl2: directory removed; nsssl is in the nssock directory now. 2000-05-09 Kris Rehberg * Re-added doc directory which has had the online docs removed. 2000-05-02 Kris Rehberg * Makefile, include/Makefile.global, include/Makefile.module, nsexample/Makefile: Now uses NSHOME variable to locate AOLserver. NSHOME is automatically figured out in the top-level Makefile and all the lower Makefiles still use relative directory paths. The intention of NSHOME is for modules that do NOT live in the AOLserver source directory tree. The nsexample/Makefile explains how this works. * nsftp module added. Contributed by Eric O'Laughlen. 2000-04-12 Kris Rehberg *** AOLserver 3.0 FINAL Released ***