**** Changelog 06/06/97: Added simple buffered IO. Now Boa can handle files of very large size. Each connection allocates only about 4K for data buffer. 03/04/97: Started **** General The main Boa Web site is http://www.boa.org. The current version is 0.92o. I also incorporate into it some patches taken from Boa web site to make Boa version 0.92p. **** OSK porting problems o Compilation Compiled with Ultra C compiler v1.1 using small subset of the EFFO os9lib library under OS-9 v2.4 with ISP v1.4. ** WARNING ** Binaries are compiled with default optimizaton enabled, except file 'cgi.c'. When I've tryed to compile it with default UltraC optimization, Boa hangs after completing any CGI request (doesn't answers to any requests, though signals are handled). No guesses... As a result I compile 'cgi.c' with optimization disabled (-o=0 option). I also trying to compile it with newer UltraC version (v1.3) my friend has on his cross development system, and all it's OK. It seems, it is UltraC v1.1 bug. o "End of line" char OSK uses '\n' as CR and '\012' as LF. All *nix'es interpret this in reverse manner. In this case, you may have problems if your http client is a text based utility like Unix's Lynx. All other clients (Netscape, Internet Explorer) works OK. o select() OS-9 socket implementation is a bit broken. First, it is possible determine only a socket is ready for read (e.g. for incoming data), and NOT if socket is ready for write. Second, the pair _ss_sevent()/_ev_wait() doesn't work for accept() call. To handle these bugs we must always poll :(- So, I advice to start Boa with low priority (about current/2) There are two versions of select() in the library. Default is without using events (it uses tsleep() instead). To compile another version just add to makefile -DUSE_EVENT and recompile library. o OS-9 gives processes only 32 open paths. It's too small for Web server. I know about a Path Extension Module (ptxm.lzh) from OS-9 archive written by Nick Holgate (nick@bvmltd.demon.co.uk). Nick do me a favour and send PTXM sources, so I can test it in association with sigchild handler (see below). Just initialize PTXM *after* sigchild module, because sigchild handler uses F$UAcct too. o SIGCHILD problem. The current OS-9 version doesn't send SIGCHLD to parent when child deads (as all *nix'es do). There is small P2 module in the directory ADDONS called sigchild I use to eliminate this. It is taken from comp.os.os9 a few months ago, and unfortunatelly, I forgot the author's name. It seems, it's freeware and we may use it. Note: it uses F$UAcct call. At this moment, start Boa in three steps: # load sigchild ptxm # p2init sigchild # p2init ptxm # boa -c server_root^64& o mmap()/unmap(). OS-9 doesn't support memory mapped files, so I just read the entire file into memory buffer. This works fine for small (html) files. This code must be rewritten to use simple buffered I/O. o OS-9 RBF manager is very dumb. It doesn't touch the last modified time for a directory, when you change its contents. Also, last modified field is changed when chdir'ed (!) to that directory. Microware, why? In this case Boa directory caching doesn't work (Boa will always re-read directory index). **** Installing o Unpack the archive o Edit CONF/boa.conf. Note: you *must* also add the bzw. entry into your password file to match with your User/Group parameters. Also all files served by Boa must have the same owner id (or public read attribute). o Start Boa with -c option (required, if you don't recompile it), and probably with lower priority (~ 64) o Note: there must be CONF directory in with 2 Boa-conf files (boa.conf & mime.types) -- April 3, 1997 Ilja V.Levinson, Yekaterinburg, Russia lev@odusv.oduurl.ru