2001-09-18 Kriston Rehberg *** AOLserver 3.4.2 RELEASED *** * Makefile: install rule depends on "all" rule for the benefit of Macintosh OS 10. * nsd/nsd.h: version and label to 3.4.2. * nsd/tclnsshare.cpp, nsd/tclmisc.c: Fix for 3.4 ns_share problem was not fully applied to 3.4.1. 2001-09-06 Kriston Rehberg *** AOLserver 3.4.1 RELEASED (internal testing release) *** 2001-09-05 Kriston Rehberg * nsd/tclnsshare.cpp: For ns_share Tcl command only; several crash bugs fixed and cleaned up the code to better accomodate how ns_share is used in real-world code. We still strongly discourage the use of ns_share and a warning upon its first use per variable is logged. 2001-05-18 Kris Rehberg *** AOLserver 3.4 RELEASED *** 2001-05-17 Kris Rehberg * nsd/conn.c: conn is now aware of Latin-1 charsets for ADPs, requests, query data, and the like in Tcl 8. This does not affect IS0-8859-1 (see nsd/adp.c below). (NsTclConnCmd): [ns_conn encoding] reports the encoding used (see nsd/adp.c below). * nsd/adp.c: The ADP requests, file parsing, file includes, and all related ADP functions now force ISO-8859-1 for support of all Latin-1 character sets in ADPs on nsd8x. There is new handling of UTF data in Tcl 8 that was implemented in AOLserver 4 which has been back-ported to support Latin-1 *only* in AOLserver 3.4. Previously, nsd8x could not handle anything but 7-bit ASCII in ADPs. The reading of Latin-1 charsets seemed to fail intermittently in previous 3.x AOLservers. The reason was that AOLserver reads files in as UTF-8 and some Latin-1 characters confuse Tcl 8's UTF reader. (Note that the en-us characters in Unicode, when encoded in UTF-8, look just like 7-bit US ASCII to computers). Naturally, when non-en-us characters are encountered, the Tcl 8 UTF-8 reader gets confused. The correct MIME type is now returned for all Latin-1 charsets. This does not affect IS0-8859-1. * thread/pool.c, thread/pthread.cpp, thread/reentrant.c: Tls entries for memory pools, thread pools, re-entrant libc replacements, are self-initializing. * thread/Makefile, tcl8.3.2/unix/Makefile.in: Moved Tcl nsthread support into Tcl sources. * tcl8.3.2/generic/tclEvent.c: Fixed library path code as in AOLserver 4 so Tcl 8 can find encoding files for UTF in a thread-safe manner. * nsd/tclstubs.cpp: Back-ported some AOLserver 4 initialization code. Tls self-initializes. UTF-aware encodings based on file extension (from AOLserver 4). See nsd/adp.c below. * nsd/tclinit.c: Tls entry for Tcl interps is self-initializing. * nsd/nsmain.c: UTF encoding-aware (see nsd/adp.c below). * nsd/nsd.h: New UTF encoding routines and version strings (see nsd/adp.c below). * nsd/dstring.c: NS_DStrings are self-initializing. You should not need to use Ns_DStringInit anymore, though you still can with no ill effect. * nsd/dbinit.c (IncrCount): Tls entry for db handles is self-initializing. * nsd/adp.c: Tls entry for ADP parser is self-initializing. 2001-04-26 Kris Rehberg * AOLserver 3.4pre1 released. The ChangeLog will be updated in the next release (see above). 2001-03-14 Kris Rehberg * nsd/nsmain.c, nsconf.h: non-quiet startup is now the default. The -q option turns the annoying, noisy startup back on. * include/Makefile.global: Makefile.global wasn't working on OpenBSD 2.8. Got rid of -E and changed libtcl8.3g.a to libtcl83g.a for all BSD platforms. Many thanks to John Borwick for the patch! * nsd/conn.c: Straightened out an error text while looking for something else. * nsd/serv.c: [ #232139 ] Buffer overflow in ParseAuth(). ParseAuth() uses a 256-byte buffer for decoding authentication data. Unfortunately, Ns_HtuuDecode() does not do an adequate job in preventing data overflow due to the way it tries to loop unroll 4-bytes per iteration. To reproduce: Using IE 5.xxx, navigate to a page that challenges (ie 401 return). Fill the user/pwd fields with as much data as possible. Hit return, and watch AOLserver die due to stack corruption (on Linux, at least). It is preferable to allocate the storage dynamically. Thanks to Adam Zell for the bug report and patch!! * generic/tclCmdIL.c (InfoProcsCmd): [ #230640 ] memory leak in "info procs" command. Arsdigita plus-patches fixed a memory leak in "info procs" command (in Tcl library). It neglects to free memory after the "info procs" command is executed. nsd8x only. Fixed via hack to Tcl8.3.2 in AOLserver 3.3 (Jim Davidson). * thread/tcl8x.c: [ #406708 ] Tcl TSD data leaks on thread-exit. Added new, custom per-thread Tcl_Obj allocator for NsTclFinalizeThread(). Fixed is in 3.31 and 4.x. Check thread/tcl8x.c for detailed comments. Thanks to Zoran Vasiljevic for the bug report and suggesting a fix. * tcl/namespace.tcl: [ #230624 ] Namespaces are not used properly. There is a problem with current modules/tcl/namespace.tcl Instead of correctly using namespace import/export capabilities, it just makes a copy of each procedure found within a namespace, even it is imported from a foreign namespace. This adds unnecessary heap space to have each exported procedure body replicated in more than one namespaces but what is worst, all imported procedures, instead of running within their declaring namespace, as standard TCL does, they will run in their caller namespaces. Thanks to Petrica Clement for this fix! 2001-03-14 Dossy Shiobara * nsd/nsmain.c: [ #230646 ] Specifying user/group dumps core on Linux. Segmentation fault when using -g flag (reproducing this change from HEAD into the nsd_v3_r3_p0 branch) line 316 should read Ns_GetGid(garg) instead of Ns_GetGid(optarg). Thanks to Scott G and Dossy, and Daniel P. Stasinski for this one. 2001-03-12 Kris Rehberg *** nsd_v3_r3_p0 (AOLserver 3.3.0) BRANCH BEGINS *** 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 ***