2003-01-10 John Foderaro 1.2.25 * publish.cl (get-cookie-values): handle case of a cookie parameter not having value, i.e name2; Pretend it was name2=; 2003-01-07 John Foderaro * client.cl - when sending character data obey external formats * main.cl - initialize log stream to *initial-terminal-io* since *standard-output* could be bound to something during the loading process. * [htmlgen changes, see it's ChangeLog] 2002-09-06 John Foderaro * detect connection reset by peer on the AIX operating system * [change made in htmlgen ChangeLog] 2002-08-09 John Foderaro 1.2.24 * change #\newline to #\linefeed in the source for portability * fix :comment in htmlgen * put aserve package definitions and exports in new file: packages.cl 2002-04-10 John Foderaro * main.cl - fix bug in get-multipart-sequence when used in an International Lisp with multibyte character input. In certain rare cases it could get stuck decoding the last bits of a buffer. - add :ssl-password argument to net.aserve:start to specify the password for decrypting the private key in the file with the ssl certificate. [requires acl feature introduced in acl 6.2]2 * client.cl - if the content passed to do-http-request is a list of vectors, each vector in the list will be sent to the server. 2002-02-28 John Foderaro 1.2.23 >>> * incompatible change: The path part of a uri can't contain certain characters unless they are escaped like %xx. Even characters that needn't be escaped *can* be escaped. Thus to canonicalize the uri path and to allow it to be easily mapped to filenames we now decode the uri path (convert %xx to the actual character) before processing it (looking for matches in the published entities). If you had published a path like "foo%20bar" then you must change it to "foo bar". * cgi.cl - add default for :script-name arg * various - open socket in nodelay mode to maximize performance 2002-02-13 John Foderaro 1.2.22 * authorize.cl - add new authorizer: function-authorizer * cgi.cl - run-cgi-program takes a :env arguemnt to allow additional environment variables to be specified. 2002-01-15 John Foderaro 1.2.21 * main.cl - fix bug where the value of *default-aserve-external-format* was captured at macroexpansion time rather than run time. All code using with-http-body should be recompiled. * publish.cl - allow mime types to be specified for filenames that don't have a type component (e.g. ReadMe files). * publish.cl - set-cookie-header takes an encode-value argument to control whether it does encoding of its argument. 2002-01-07 John Foderaro * main.cl - fix problem of restarting aserve in non-ssl mode after starting it is ssl mode. 2002-01-06 John Foderaro * add :nofile return code to parse-multipart-header 2002-01-04 John Foderaro 1.2.20 * main.cl - add two higher level functions to aid retrieving multipart data: parse-multipart-header and get-all-multipart-data. The examples now show using both the low level and higher level functions for retrieving multipart form data. 2001-12-03 John Foderaro 1.2.19 * main.cl: add ensure-stream-lock function to put a lock object on a stream that the logging functions then can use. 2001-11-30 * doc/aserve.html - add documentation on using AllegroServe as an NT service, and a description of how to write web pages that handle international characters * main.cl - add :external-format argument to request-query-value 2001-11-28 John Foderaro * log.cl - use locking around writes to the log if the stream has a lock on it's property list. 2001-11-28 * add :binary type to publish-multi * chat.cl - add the ability to upload pictures 2001-11-26 John Foderaro 1.2.18 * decode.cl - handle character set decoding inside uri queries * publish.cl - access file caching 2001-11-15 John Foderaro 1.2.17 * added new publish fcn: publish-prefix >>> * incompatible changes: redid the way access files are processed, see the document for the latest spec. notable changes: :ignore is now :deny :block is gone from :subdirectories but I've added :allow and :deny for fine tuned blocking :inherit now defaults to nil you can have multiple forms of the same kind of information in a single access file and they will all be used. 2001-11-06 John Foderaro * fix bug causing infinite loop when reading truncated form body 2001-11-05 John Foderaro 1.2.16 * failed request now identifies AllegroServe as the server and gives its version number * if AllegroServe isn't setup to proxy it will not match proxy requests with local web pages. 2001-11-05 * log.cl - write to log files under the protection of a process lock found on the stream-property-list of the stream associated with the :lock indicator. If no such lock is found, write to the streame anyway. * examples/chat.cl - improve the speed of deleting messages by binary searching the existing messages. 2001-10-31 John Foderaro 1.2.15 * start now takes a host argument to allow you to bind the server to a specific host * publish-multi will not return 304 (not modified) unless the request is a get or a head * files published with publish-file will now obey a single range specifier so they will be download accelerator friendly 2001-10-26 John Foderaro * add entity-plist slot to entities and use it to link file entities to their parent directory entities with the :parent indicator * add map-entities function * print vhosts in a why that shows their host names 2001-10-24 John Foderaro 1.2.14 * added access files for publish-directory. These allow .htaccess-like controlling of what publish-directory publishes. >>> * incompatible change: added an extra argument to the publish-directory filter function and publisher functions. 2001-10-19 John Foderaro 1.2.13 * added publish-multi * while debugging (:notrap) we ignore connection reset by peer errors by default since they are frequent and not errors in most cases. You can have them recognized by setting *debug-connection-reset-by-peer* to t. 2001-10-18 John Foderaro * The initial log stream (which is used then to initialize vhost log streams) is now *initial-terminal-io* and not *standard-output*. * random messages (written by logmess) are now sent to the vhost-error-stream of the default-vhost of the server. This allows one to separate these random messages from the the request logs * logs of proxy activity is now sent to the vhost-error-stream of the default-vhost of the server. we may rethink this later. * support vhost specific request filters 2001-10-17 John Foderaro * cgi.cl: redo cgi so that it doesn't buffer data... also can now process standard error from scripts 2001-10-16 John Foderaro 1.2.12 >>> * incompatible change: the format argument to with-http-body has been moved to with-http-response. The format argument to with-http-body was ignored, but on with-http-response it will be obeyed and will override the format specified in the entity. The internal generic function compute-strategy now takes three arguments. This function isn't part of the external interface to AllegroServe but some users have specialized it. 2001-10-15 John Foderaro * add timeout value to each entity object to serve as a default that's checked before the wserver-response-timeout. * add a timeout argument to publish functions to set this entity timeout value. * add a publisher argument to publish-directory so users can control what kind of entity is created when the real file is eventually found. 2001-10-12 John Foderaro * using socket stream i/o timeouts in acl6.1 * moved the *http-response-timeout* to a slot in the wserver object so it can be server dependent. * documented timeouts in aserve.html * added timeout test to t-aserve.cl but disabled running them by default since they take a long time. 2001-10-10 John Foderaro 1.2.11 * upgraded support for virtual hosts, introducting an object to denote a virtual host so that each virtual host can do its own logging. See aserve.html for details on Virtual Hosts. 2001-10-08 John Foderaro * publish.cl - publish-directory must pass on host info to the publish-files that it does. - unpublish takes a :server argument 2001-09-29 John Foderaro * cgi.cl - fix bug where content-length was specified wrong 2001-09-21 John Foderaro 1.2.10 * added ability to run cgi programs new file cgi.cl 2001-09-20 John Foderaro * examples/examples.cl - add commentary to some of the links to make them clearer 2001-09-20 Kevin Layer * makefile: split `clean' into `clean' and `cleanall', the latter which removes aserve-src. * makefile (clean): add `r' to `rm' 2001-09-18 Kevin Layer 1.2.9 * makefile: add build and srcdist rules; have make clean remove aserve-src * load.cl: parameterize make-src-distributions's directory name 2001-09-12 John Foderaro 1.2.8 * client.cl: add :skip-body to do-http-request. add test for this. * decode.cl: fix form-urlencoded-to-query so that it can handle a non simple string (which can be returned under certain circumstances from get-request-body) 2001-08-28 John Foderaro 1.2.7 * take the default value for the external-format argument from *default-aserve-external-format*. net.aserve:start sets the value of *default-aserve-external-foramt* in worker threads. * parse.cl (split-string): don't get confused by commas inside a double quoted header parameter value. 2001-08-24 John Foderaro * when an error occurs in the worker thread print the command line for the request that got the error. 2001-08-16 John Foderaro 1.2.6 * main.cl - try harder to prevent debug output from multiple threads from getting jumbled up on the console * publish.cl - do a keep-alive connection if the data is a binary stream as long as we know the content length. Add a new internal entity type so that returns of "304 - Not Modified" can do keep alives too. 2001-08-15 John Foderaro 1.2.5 * main.cl - incf version number for new release 2001-08-09 John Foderaro * publish.cl - added :filter functionality to publish-directory * test/t-aserve.cl - test filters in publish-directory 2001-08-08 John Foderaro * publish.cl - allow list of index files to be specified in for each directory-entity. - specify a catch-all compute-response-stream method so users adding new entity type don't have to do so. 2001-08-08 jkf * publish.cl - fix for when no body is given with-http-body and thus a string-output-stream is not created. 2001-07-30 1.2.4 * main.cl: fix get-multipart-* to correspond to rfc2046 and thus it will work with the Opera browser which generates legal (but unusual) kinds of boundary markers 2001-07-19 John Foderaro 1.2.3 * publish.cl - If publish-file file is changed then invalidate the cached information on it. - remove extraneous slots in classes. * test/t-aserve.cl test cache invaldation in publish-file 2001-07-18 * doc/publish.html - update publish-file doc for preload and cache-p args * doc/htmlgen.html - make first example clearer * doc/tutorial.html - add note to help Windows users 2001-07-18 jkf * publish.cl - add cache-p argument to publish-file which will cache the file contents on first use * chat.cl - add support for removing selective private messages after a certain amount of time. * test/t-aserve.cl - test cache-p argument to publish-file 2001-07-09 John Foderaro * example/chat.cl - add chat transcript feature 2001-06-27 jkf 1.2.2 * added the ability to filter requests before they get processed. see Request-Filters in aserve.html 2001-06-26 John Foderaro 1.2.1 * main.cl - don't get blocked on a force-output that will never return due to the other side of the connection going away. * examples/chat.cl - support private chats amoung groups of people. Support deleting messages. Support levels of users. Support redirecting people at certain IP addresses away from the chat if they cause problems. 2001-06-05 John Foderaro 1.2.0 * main.cl - update version to 1.2.0 to mark acl 6.1 release. 2001-04-04 John Foderaro * changed how publish-directory deals with urls that point to directories and not files. It used to pretend that you specified an index.html or index.htm file in that directory. This was bad since relative urls in the index file would not be processed correctly. with the change it now redirects to the index.html or index.htm file so that the browser knows what it's getting. 2001-03-22 John Foderaro 1.1.41 * add os-processes argument to net.aserve:start which causes aserve to fork (on unix only) and create multiple operating system processes listening on the same port. 2001-02-08 John Foderaro 1.1.40 * added the proxy-proxy argument to net.aserve:start that permits you to specify that the allegroserve proxy should sent its requests through another proxy. 2001-02-06 John Foderaro 1.1.39 * proxy and scanning fixes 2001-01-22 John Foderaro 1.1.38 * main.cl: incf version. Also hooks added for links scanning. 2001-01-18 John Foderaro * examples/urian.cl - new international character set demo (reachable from the main aserve examples page) 2001-01-02 jkf 1.1.37 * main.cl, proxy.cl - add the ability to save and restore the whole state of the proxy cache. (see docs for start and shutdown in the manual). * ensure that proxy cache threads are killed off when a shutdown is done. >>> incompatible change: the net.aserve:shutdown function used to take an optional argument. Now it takes keyword arguments. 2000-12-27 John Foderaro 1.1.36 * client.cl: handle illegal set-cookie headers sent by Netscape's v3 web server. In a client request Split the single large Cookie line into muliple Cookie lines so that Netscape's v3 web server can understand them. Add a redirect-methods argument to do-http-request to support more user control of redirection. * proxy.cl - many enhancements including connection caching 2000-11-06 Kevin Layer 1.1.35 * log.cl: make logmess a method, so I can define an after method on it in my own code * main.cl: maybe-universal-time-to-date and universal-time-to-date: take time-zone optional argument, so my redefined version of log-request can specify the local time zone 2000-10-31 John Foderaro 1.1.34 * add to the list of characters to escape in form-urlencoding those that must be escaped so that the result can be put in the query string of a uri * in proxy code write request and headers in one big block to get around bug in IP redirectors (such as found in www.cbs.com) 2000-10-25 jkf 1.1.33 * hooks for link checking and experimenting with caching 2000-10-19 John Foderaro 1.1.32 * add ssl arguments to net.aserve.start and net.aserve.client:do-http-request so that a secure server can be started and secure http requests can be made. Make the aserve test suite test run though the tests using ssl. Note: the ssl module is only present in certain acl6 distributoins. * add examples/puzzle.cl - a demo featuring the use of international characters in acl6. 2000-10-15 John Foderaro 1.1.31 * support caching requests with cookies 2000-10-12 John Foderaro 1.1.30 * proxy and cache facilty added. 2000-09-22 Charles A. Cox * decode.cl: Add :external-format to to uriencode-string. * publish.cl: Add :external-format to set-cookie-header. * test/t-aserve.cl: Add :external-format tests for uri{en,de}code-string. 2000-09-07 Charles A. Cox 1.1.29 >>> Note: Many of the functions listed in this log entry have had the :external-format argument added. Documentation has been updated Note 2: All changes intended to be upward compatible. Allegro specific changes are marked with #+(and allegro (version>= 6 0)). * client.cl: make-http-client-request: add/use external-format argument. * decode.cl: uridecode-string, query-to-form-urlencoded, encode-form-urlencode, form-urlencoded-to-query: add/use external-format argument. * main.cl: with-http-body, request-query: add/use external-format argument. * publish.cl: get-cookie-values: add/use external-format argument. * examples/examples.cl: Add new international character examples. * test/t-aserve.cl: Add tests for external-format additions. 2000-08-28 John Foderaro 1.1.28 * client.cl - before doing a redirect close down the existing connection. 2000-08-25 John Foderaro * fix bug which caused file descriptors to remain open forever if a "connection reset by peer" error occured. Added the ability to track sockets opened by aserve to ensure that they were closed before being gc'ed away. 2000-08-24 John Foderaro 1.1.27 * rewrote the get-multipart-xxx functions to use an (unsigned-byte 8) buffer since character buffers have issues with international code. This eliminates the extra at the end problem with get-multipart-sequence. The file transfer should be faster, especially if you pass get-multipart-sequence a 4096 byte (unsigned-byte 8) vector. !! Eliminte the raw argument from get-multipart-sequence. Now transfers are all 'raw' If a character array is passed to get-multipart-sequence then we just copy into each character the code-char of the item in the buffer (which corresponds to the latin1-base external format). We will allow external-format select soon. 2000-08-21 John Foderaro * add :proxy arg to net.aserve:start so you can enable the proxy when you start the server. * fix test suite to report only legit errors 2000-08-20 jkf 1.1.26 * Added a proxy capability. enable-proxy will turn it on. Currently it acts an http/1.0 client and server since that makes it easier to debug. However this does cause 12 test set errors to be reported since it expects to see http/1.1 responses. 2000-08-17 jkf * implement generalized cons-free header parsing and use it in both the client and server. * change the header info returned by do-http-request to also use keywords to describe headers !! non upward compatiable change !! 2000-08-15 John Foderaro * fix bug where certain headers were sent twice 2000-08-12 John Foderaro * name headers by keyword symbols rather than strings !! this change is not upward compatible !! 2000-08-10 John Foderaro 1.1.25 * decode.cl: request-query will now convert items in query strings without values into ("keyname" . "") in the resulting alist. * doc/aserve.html - update doc of request-query and request-query-value to reflect what happens with null valued query elements 2000-08-09 jkf * publish.cl: write the transfer encoding as all lowercase 'chunked' since a bug in Mozilla M17 means it will only understand this form. * htmlgen/htmlgen.cl - add the tag 2000-08-04 jkf 1.1.24 * examples/chat.cl - add user logins and private messages between users. 2000-07-31 jkf * main.cl: if a multipart-mixed body was being sent then note that the request-body has been grabbed. 2000-07-25 jkf * example/chat.cl - enhanced to support logging into the chat 2000-07-17 John Foderaro 1.1.22 * main.cl: incf version 2000-07-15 John Foderaro * examples/chat.cl - sample program that does web based chat 2000-07-14 John Foderaro * client.cl - now do-http-request will always return a uri object (previously it would return its uri arg unless a redirect was done in which case it would return a uri object) 2000-07-01 John Foderaro * client.cl - handle the "100 continue" response we seem to get from IIS whenever we do a post. 2000-06-25 jkf * keep track all of all ip addresses by which the server is contacted (this is simpler than trying to figure them out in advance). * add function to find a response object given the code. * keep track of the raw uri by which a request was made (as distinguished from the uri in which we've added the host and port values). This is necessary to distriguish when we must proxy. * in html-print assume that attribute values are already html escaped 2000-06-12 John Foderaro * main.cl: add utility function request-query-value to combine getting the query info via request query and locating the particular value with assoc 2000-06-08 John Foderaro 1.1.21 * client.cl - do-http-request: 1. give the redirect arg a numeric value to prevent infinite redirect loops. 2. handle two other redirect codes 3. autoredirect only for get and head 4. return the uri accessed as the fourth value * main.cl - add more response codes - handle calls to request-query specifying different uri and post values. * examples.cl - add redirect test * t-aserve.cl - test redirection * doc/aserve.html - update for changes above * doc/tutorial.html - don't be so cookie centric 2000-05-30 John Foderaro 1.1.20 * macs.cl - add note about where to find the if* macro * main.cl - cache result of get-request-body so that it can safely be called more than once inside a response function. Also be sure to call get-request-body if the connection is keep-alive and there might be a body following the headers. * t-aserve.cl - test enhancment to get-request-body * doc/aserve.html - fix do-http-request documentation to reflect change made in 1.1.18 Fri May 26 22:42:12 PST 2000 Duane Rettig 1.1.19 * makefile: set SHELL variable * main.cl: incf version 2000-05-16 John Foderaro 1.1.18 * ! Non upward-compatiable change ! - the function do-http-request returns arguments in a different order, it now returns the body value first, then the response code and then the headers. * fixed bug in publish-directory (sourceforge bug 105426) * added query and content-type arguments to do-http-request and make-http-client-request. These make it even easier to send form data to web servers 2000-05-16 John Foderaro 1.1.17 * in order to make portions of the LGPL license meaningful for a Lisp program we've added a prequel to the license agreement in the file license-allegroserve.txt. 2000-05-16 jkf * client.cl - increase header reading buffer size - but we should make this growable. - handle cookies with = signs embedded * decode.cl - in query-to-form-urlencoded all the values to be non-strings and in that case use ~a format to stringify them * parse.cl - add arg to utility function 2000-05-04 John Foderaro 1.1.16 * request-query can now read from uri and/or post'ed body see doc/aserve.html for details 2000-04-26 John Foderaro 1.1.15 * ! Non upward-compatible change ! -- the function decode-form-urlencoded has been renamed form-urlencoded-to-query so as to match its new inverse function: query-to-form-urlencoded * added query-to-form-urlencoded to allow one to encode query to strings for use by client code. 2000-04-24 John Foderaro 1.1.14 * verify that it works in acl501 trial (Linux) 2000-04-24 * load.cl: make aServe load in acl5.0.1 Lite (Windows) but be advised that it doesn't work very well due to socket problems that can be patched in the Lite version. * main.cl: the default timeout for a with-http-response now comes from *http-response-timeout* and it now defaults to 120 seconds rather than 60. * some documention updates 2000-04-23 jkf * client.cl - added proxy argument so that client requests can go through a proxy * various doc fixes 2000-04-17 John Foderaro 1.1.13 * rename Allegro iServe to AllegroServe. As a result where iserve was used before we now use aserve. For example the package is now called net.aserve. 2000-04-17 John Foderaro 1.1.12 * add test/t-iserve.cl to the list of files in the ftp distribution 2000-04-16 * debug-on and debug-off are no longer exported symbols. They continue to exist but you have to use net.iserve::debug-on and net.iserve::debug-off to reach them. * added two new response type symbols to aid in doing redirections: *response-moved-permanently* *response-temporary-redirect* note that netscape 4 doesn't understand *response-temporary-redirect* as that's a http/1.1 thing. * request-query takes a :handle-post keyword arguments. When true (and that's the default) it will automatically read, extract, parse and cache the query string from the entity body when the request is a post request. 2000-03-28 John Foderaro * move htmlgen.html from htmlgen/ to doc/ so that it's in a consistent place regardless of distribution type. 2000-04-08 1.1.11 * make the debugging output feature based rather than numeric. see net.iserve:debug-on * properly do client queries * use setfable reply-header-slot-value to read and set headers for the reply that will be sent * always send back HTTP/1.1 as our protocol 2000-03-27 John Foderaro 1.1.10 * add headers argument to do-http-request and make-http-client-request to allow you to add headers * fix client requests for :head so it doesn't wait for a body to be returned * fix debugging output when running inside emacs * add client info to documentation. 2000-03-27 John Foderaro 1.1.9 * mainly documentation fixes 2000-03-22 John Foderaro 1.1.8 * fix http/0.9 processing * make errors in http worker threads, if uncaught (see below) and if the emacs-lisp interface is running, cause a new emacs window to appear in which you can debug the problem * add net.iserve::*trap-errors* (default t). If set to nil then errors in http processing by iserve will result in error break loops. * fixed errors in publish-directory. Also prevent user from passing ../ in urls to access above the published directory 2000-03-22 John Foderaro 1.1.7 * make initial lisp listerner of standalone version sleep so that the process can be put in the background. * add t-iserve.cl and begin to add automated tests * add cookies and authorization to client module * load client module into iserve 2000-03-20 John Foderaro 1.1.6 * convert references to neo to iserve * minor fixups in tutorial 2000-03-20 John Foderaro 1.1.5 * include iservelogo.gif in the ftp distribution * fix problem where the response to a file entity request for a file that doesn't exist would cause browser to hang until the socket was closed 2000-03-17 John Foderaro 1.1.4 * change source-readme.txt and load.cl so that it will build on Windows without the unix tools ******************************************************************************* join from acl50 branch - cvs command: cvs update -d -j acl50 - next merge tag: acl50_merge2 ******************************************************************************* 2000-03-15 John Foderaro 1.1.3 * switch to lgpl license. * add source-readme.txt to describe what to do with the source 2000-03-14 John Foderaro 1.1.2 * add authorizer objects to support checking for valid access to pages 2000-03-07 John Foderaro 1.1.1 * load.cl - lisp need not be in the directory containing this file in order to load it (and iserve) * main.cl - get-request-body will not get fooled by :get requests * publish.cl - make virtual hosts work for prefix handlers * doc/iserve.html - update to describe :remove arg to pubilsh functions * doc/tutorial.html - lots more added * examples/tutorial.cl - add sample methods 2000-03-02 jkf * added setuid, setgid args to start * changed the names of the worker processes * changed the names of the slots and accessors holding the commonly used request header info * allowed the :host arg to publish to be a list of host names * for publish-file compute the content-type automatically if not provided 2000-02-25 John Foderaro * added code to the examples so that the pubished url handlers will find the files they reference (if any) no matter what the current directory is when the examples file is loaded. 2000-02-18 John Foderaro * moved examples and doc to their own directories 2000-02-08 John Foderaro 1.1.0 renamed neo to Allegro iServe changed neo package to net.iserve changed htmlgen package to net.html.generator 2000-02-08 John Foderaro 1.0.9 * main.cl - added exports * examples.cl - show how to publish a generated jpg file * neo.html - more documentation 2000-01-28 John Foderaro 1.0.8 * renamed accessors 2000-01-25 John Foderaro * partially added logging 2000-01-25 jkf * use uri package 2000-01-18 John Foderaro 1.0.7 * changed :url to :path in the publish functions * added a locator class to expose the search for a matching entity 2000-01-11 John Foderaro * document accessors. get timedout-response working 1999-12-15 John Foderaro 1.0.6 * cookie support added and documented 1999-12-14 jkf * added new file decode.cl to hold all decode/encode functions 1999-12-11 John Foderaro 1.0.5 * add shutdown command 1999-12-02 John Foderaro 1.0.4 * do case insensitive comparison of mime separation strings. It may not be necessary but it seemed to be for IE. 1999-11-02 John Foderaro 1.0.3 * fixed chunking output calls so it works again 1999-10-15 jkf 1.0.2 * added multipart info grabbing and updated the documentatoin 1999-10-13 John Foderaro 1.0.1 * start changelog