An incorrect array declaration was given but it's been there for a
long time so clearly the compiler had not used that declaration
to generate bad code. However as a result the compiler did not
open code the array references. base64-decode is not a critical
function so no performance difference are anticipated.
Change-Id: Ibe947e4ea706dbbfd04782c89eee7a49503c6d65

v1.3.16 - bug21221 - When reading a very large header which results in
an out of memory error a header buffer resource would be put
back onto the free list twice thus signalling an error. This fixes
that bug.
Are there user visible changes in this commit? no
Is bootstrapping needed? no
Are tests included for new features? no new features
Tests run: t-aserve
Change-Id: Ic21d7fd537c89adc9a61a771883726446a18d31b

I didn't realize there was already a function designed to do parallel
testing. So, add the features of my new function (now deleted) to the
test-aserve-n function. It now takes `wait' and `exit' keywords.
Adjust `test' rule accordingly.
Change-Id: Ib32d34df589ff33794046bb4c0c575b8ea966fe7

... or any version for that matter without the recent patch for
with-output-to-buffer.
For logging bodies (and also to nicely accumulate multiple debug
messages of the same kind into a single one, we need
with-output-to-buffer that supports growable arrays which was first
available as a patch to acl 8.2. If that feature is not supported in
the lisp, we print an explanatory message to *error-output* and go on
without being able to log dynamically computed bodies (i.e. those that
aren't published files). Also, since accumulation doesn't work, one
can have several entries for the same logical thing.
Note that due to the nature of macrology, the decision whether to use
the fully featured or the slightly restricted version is made at
compile time.
Change-Id: Idd0863381c5c9f6ec6d23a2b757a932c5848353f

<release-note>
Add lots of new debug categories suitable for net.aserve::debug-on and
net.aserve::debug-off. See documentation for more.
</release-note>
Also, add log1* (unexported for now), a generic function of (logger
category level message) args through which all logging eventually goes
through. The value of logger is from the logger slot of the current
wserver if the log comes from a server. For the client, it's the
whatever is in *logger*.
This is patch 13.
<documentation>
Note there are no :xmit-proxy-server-request-* categories, because at
the time of reading the request it's not yet known whether it's the
going to be proxied so these show up as :xmit-server-request-*.
Complicate the simple tree of debug categories into a DAG:
:xmit-server-request-command is a subcategory of each of :xmit :server
:request and :command. To turn on server side logging without the
bodies you'd do:
(net.aserve::debug-on :server)
(net.aserve::debug-off :body)
The list of debug categories:
:all off
The mother of all debug features.
:notrap off
If set than errors in handlers cause a break loop to be entered.
(parent categories: :all)
:zoom-on-error off
If set then print a zoom to the vhost-error-stream when an error occurs in a handler.
(parent categories: :all)
:log off
Category of features that write some kind of log.
(parent categories: :all)
:xmit off
Category of features that log the traffic between clients, servers.
(parent categories: :log)
:info off
General information.
(parent categories: :log)
:client off
Category of features that log client communication.
(parent categories: :all)
:server off
Category of features that log server communication.
(parent categories: :all)
:proxy off
Category of features that log proxy communication.
(parent categories: :all)
:request off
Category of features that log requests.
(parent categories: :all)
:response off
Category of features that log responses.
(parent categories: :all)
:command off
Category of features that log http request commands.
(parent categories: :all)
:headers off
Category of features that log request/response headers.
(parent categories: :all)
:body off
Category of features that log request/response bodies.
(parent categories: :all)
:xmit-client-request-command off
If set then print the client request commands.
(parent categories: :xmit, :client, :request, :command)
:xmit-client-request-headers off
If set then print the client request headers.
(parent categories: :xmit, :client, :request, :headers)
:xmit-client-request-body off
If set then print the client request bodies.
(parent categories: :xmit, :client, :request, :body)
:xmit-client-response-headers off
If set then print the client response headers.
(parent categories: :xmit, :client, :response, :headers)
:xmit-client-response-body off
If set then print the client response bodies.
(parent categories: :xmit, :client, :response, :body)
:xmit-server-request-command off
If set then print the server request commands.
(parent categories: :xmit, :server, :request, :command)
:xmit-server-request-headers off
If set then print the server request headers.
(parent categories: :xmit, :server, :request, :headers)
:xmit-server-request-body off
If set then print the server request bodies.
(parent categories: :xmit, :server, :request, :body)
:xmit-server-response-headers off
If set then print the server response headers.
(parent categories: :xmit, :server, :response, :headers)
:xmit-server-response-body off
If set then print the server response bodies.
(parent categories: :xmit, :server, :response, :body)
:xmit-proxy-client-request-command off
If set then print the proxy request command sent to the real server.
(parent categories: :xmit, :proxy, :client, :request, :command)
:xmit-proxy-client-request-headers off
If set then print the proxy request headers sent to the real server.
(parent categories: :xmit, :proxy, :client, :request, :headers)
:xmit-proxy-client-request-body off
If set then print the proxy request bodies sent to the real server.
(parent categories: :xmit, :proxy, :client, :request, :body)
:xmit-proxy-client-response-headers off
If set then print the proxy response headers sent by the real server.
(parent categories: :xmit, :proxy, :client, :response, :headers)
:xmit-proxy-client-response-body off
If set then print the proxy response bodies sent by the real server.
(parent categories: :xmit, :proxy, :client, :response, :body)
:xmit-proxy-server-response-headers off
If set then print the proxy response headers sent to the client.
(parent categories: :xmit, :proxy, :server, :response, :headers)
:xmit-proxy-server-response-body off
If set then print the proxy response bodies sent by the client.
(parent categories: :xmit, :proxy, :server, :response, :body)
</documentation>
Change-Id: I3209c64bfc3f25bc12cafe9cf4be7f7d0029091b

From do-http-request and start to make-ssl-client-stream sock and
make-ssl-server-stream socket respectively.
Bump version to 1.3.15.
Update defpatch form (v14).
Tests run: t-aserve
<release-note>
do-http-request, make-http-client-request, start take two new
arguments: crl-file and crl-check. Refer to the documentation of
make-ssl-{client,server}-stream for more information.
</release-note>
Change-Id: Ib719ae0bf12cc6ac356c7e4c36b3ce268bcf60a8

Functions defined with def-clp-function will now have a name
like (:clp "mymod_myfun") which will make it easier to
distinguish them in a backtrace when debugging.
Are there user visible changes in this commit? yes/no
Is bootstrapping needed? no
Are tests included for new features? no new features
Tests run: t-aserve, t-webactions
Change-Id: I03c8855570f0e1051ede79770935dbf5dea06fc0

rfe6265 says that a client must send all cookies on one line. We've been
sending them on multiple lines for a long time and servers haven't
complained but now and this is starting to be a problem, likely due
to rfc6265 stating the one line requirement.
Are there user visible changes in this commit? yes/no
Is bootstrapping needed? no
Are tests included for new features? no new features
Tests run: t-aserve
Change-Id: Ibf135b107bce5223ed4586fe2c34857c1b2cb99d

v1.3.13 - spr38589 - request query caches the parse of the supplied form
and now remembers the external format of the parse so that if the external
format argument to request-query changes the parse will be redone.
Are there user visible changes in this commit? yes/no
Is bootstrapping needed? no
Are tests included for new features? no tests for new features
Tests run: t-aserve
Change-Id: Ia99c421f1bcafb46828c32779a587fcd3ad0879d

modified: test/t-aserve.cl
test-aserve-n: if n is not positive integer, set n=0
This allows a normal test run if someone sets
*do-aserve-test* to t.
Add some comments.
Are there user visible changes in this commit? no
Is bootstrapping needed? no
Are tests included for new features? no
Tests run: t-aserve.cl with various settings of *do-aserve-test*

Simply note that :skip-gzip-header has been deprecated as of the
code/inflate.003 patch. Stop using this keyword argument when
building AllegroServe with Allegro CL 9.0.
Are there user visible changes in this commit? no
Are tests included for new features? no new features
Tests run: make test
Change-Id: Ib43f5e898603479a69eb822a99b49403693d6c7d

If multiple requests are sent through a socket when using
keep-alive, log entries for each response report the
total bytes written out on the stream rather than
the actual bytes sent for just the response indicated in
the log entry.
Are there user visible changes in this commit? no
Tests run: none
Change-Id: I068591552132854653cdae4604b8b2c1d876d978

The return value from device-read for unchunking streams was subtly
wrong: It returned the offset into the buffer, while device-read
should always return the number of bytes read during the operation.
This caused problems in rare cases when device-read was invoked with a
start argument greater than 0.
Tests run: make test.
Change-Id: I416a003572fb80c7c9e3b4e13c496ce884418d5b

Add a SLEEP to the keepalive test in TEST-CLIENT to give the server
time to close the connection if it doesn't honour the keep-alive
request.
Much easier to reproduce bug20222 this way.
Change-Id: Ia8f4bb9ad51be33f4a17c5cc122c8b1ef4a24320

Replace t-aserve.cl with the smp version. This new version supports both single
processor and multi-processor testing of AllegroServe
Are there user visible changes in this commit? no
Is bootstrapping needed? no
Are tests included for new features? yes, tests for smp aserve
Tests run: t-aserve.cl
Change-Id: I5190d9079e46c6d7fe7822469fa302b261aeda85

Use read-sequence instead of looped read-byte to read a chunk's
contents. This speeds up unchunking by a bit (agraph benchmarks report
a slight improvement versus the slightly worse results without this
change).
Is bootstrapping needed? no
Are tests included for new features?
no new features
Tests run: make test (t-aserve)
Change-Id: I642f688a5d1e970994b38e65a301494d5be9ce1c

Fix problem in handling a response was doing using a string output stream.
Also fix aserve test suite to work on machine whose name is not
dns resolvable.
Are there user visible changes in this commit? no
Is bootstrapping needed? no
Are tests included for new features? no new features
Tests run: t-aserve
Change-Id: I61f9896e40ace76daedda4a68ad15e7827f4ae54