Commit Graph

54 Commits

Author SHA1 Message Date
57583b37ce Various fixes to case-dependent code, in order to allow CLASH to work
with Allegro CL in "modern" mode.  Although we don't think that
"modern" mode is the correct approach to case-sensitivity in CL, the
changes we made should also make it easier to work in ANSI-compliant
implementations/modes, with all the settings for readtable-case.  Note
though that this is a first best effort attempt, and so further
case-ification bugs might still remain.  YMMV.
2001-02-07 13:31:29 +00:00
88ec83c086 Optimized buffer code a bit. 2001-02-07 13:24:31 +00:00
7d628b92da Optimized read-http-line a bit in order to reduce gratuitous consing. 2001-02-07 13:23:04 +00:00
352f8b8113 Changed default server-product-info to include the Lisp implementation
as a comment.
2001-02-07 13:19:06 +00:00
a7ebbf08b3 Added required (require "comm") for LWL and added initialize-clash so
as to bring LWL support up to par with other ports.
2000-10-30 23:06:32 +00:00
5aa138df6d Added access authorization framework, added port to ACL 5. ACL 5
seems to need eval-when wrapped around certain defconstant forms when
used in the same file (maybe because of compiler-macros).
2000-10-30 23:05:23 +00:00
1853c6d6f2 Added access authorization framework that allows for flexible
validation of accesses.
2000-10-30 23:03:00 +00:00
6811f947d6 Added tool to generate ChangeLog files from CVS log entries. This
originated with MaiSQL.
2000-10-09 23:15:35 +00:00
008e29e54d Added new files, and changed to work with the new MK-DEFSYSTEM, which
doesn't import defsystem into the CL-USER package.  Also removed some
cruft.
2000-10-09 23:14:13 +00:00
4a4feed22b Added exports for new functionality and some older server and
connection stuff, as well as the driver functions
`start-http-listener' and `initialize-clash'.
2000-10-09 23:13:06 +00:00
7dde13fd51 Added some user utility functions and macros from MASH. 2000-10-09 23:05:02 +00:00
5e8ff59588 Adjusted `standard-response-body' to take the server as an additional
parameter.  This is part of an ongoing drive to restructure standard
message generation to be more modular.  Still lots to be done...
2000-10-09 22:53:46 +00:00
932ce6a843 Added `server-product-info' to provide the information for the Server
response-header.  Rewrote error handling code to provide more
information in the body.  Adjust `read-request' to pass the connection
to `parse-request', see changes in messages.cl.
2000-10-09 22:52:09 +00:00
edbfd4eaeb Added `redirector-resource' from MASH. 2000-10-09 22:47:16 +00:00
214066236a Complete rewrite of nearly all list parsing routines. This handles
quoted-strings in both key and values of key value pairs and in simple
lists correctly.  Also factored out all magic constants, added some
stuff to make this halfway efficient (profiling to be done).  This
rewrite makes partition superfluous, maybe remove this from
src/utility.cl.

Added parsing of Base64 and authorization credentials.
2000-10-09 22:46:24 +00:00
12cd9563f8 Changed request object to carry a reference to the connection object
instead of the stream, in our effort to reduce the passing around of
streams.  This is also necessary in order to allow request handlers to
check for the address and/or hostname of the connection the request
came in from.  Changed `parse-request' accordingly.  TODO: Rendering
of messages should probably change over, too.

Added handling of Authority request-header, and WWW-Authenticate
response-headers.  Changed order of response-header rendering to
follow RFC guidelines.  Added automatic generation of Server
response-header, added correct handling and automatic initialization
of Date response-header.  This should bring us closer to correct and
full handling of at least all HTTP/1.0 headers in responses.  Request
parsing of some headers remains to be done.

Added ignore declarations to quiet the compiler.
2000-10-09 22:41:11 +00:00
c883fcadf6 Added ignore declarations to quiet the compiler. Added flushing of
logfile so that the log on disk is always synced.
2000-10-09 22:10:54 +00:00
ff709e014d Added ignore declaration to quiet the compiler. 2000-10-09 22:10:01 +00:00
cdb9250ea2 Fixed small typo that didn't manifest itself. 2000-10-09 22:09:25 +00:00
0408a74b18 Added new condition for non-URL related parsing errors, used in
parsing.cl.  This needs further reworking, so that URL-related syntax
errors are subtypes of this new condition.
2000-10-09 22:08:40 +00:00
0a61c9d69a Removed superfluous check of the return value of
ext:create-inet-listener.
2000-10-09 22:02:28 +00:00
e4c22e732c Added driver for LispWorks for Windows/Linux. This hasn't received
much testing, but should work out alright.
2000-10-09 22:01:14 +00:00
dd8365ec4c Factored locking primitives out to their own implementation-dependend
files.  Part of the porting effort to LispWorks.
2000-10-09 21:55:43 +00:00
1072ffaf5a Small change that guards against flushable read-sequence in earlier
versions of CMU CL, as well as guarding against short reads by
read-sequence on socket streams, though my understanding of the
standard seems to imply that read-sequence can only return prematurely
on EOF.  But this way we shouldn't have any problems either way.
2000-07-23 13:13:00 +00:00
04c5a1dd1b Changes that bring CLASH up to extended HTTP/1.0 support:
Restructured system definition somewhat...
2000-07-22 01:25:15 +00:00
0b29e10ea3 Changes that bring CLASH up to extended HTTP/1.0 support:
Added exports for (maybe) all necessary symbols...
2000-07-22 01:23:02 +00:00
c3aa400e66 Changes that bring CLASH up to extended HTTP/1.0 support:
Added partitioning functions as a stop-gap measure while PMSF-Lib is
unreleased.  This should probably belong into parsing.cl...
2000-07-22 01:15:06 +00:00
d09b872f61 Changes that bring CLASH up to extended HTTP/1.0 support:
Moved indenting changes for CL constructs to a central place.
2000-07-22 01:11:09 +00:00
b3b91e38a1 Changes that bring CLASH up to extended HTTP/1.0 support:
Added naive buffering functionality for use in CLASH.  This is
currently only used to implement stream entities, but might have other
uses.  Given the exitence of generational garbage collectors, it might
be advantageous to forego the pooling scheme and throw away buffers
after each use.  This will depend on implementations and usage
patterns, though, so we should make this tunable...
2000-07-22 01:06:44 +00:00
798edd89b0 Changes that bring CLASH up to extended HTTP/1.0 support:
Fixed various bugs in query-argument parsing (don't you just love
ambiguous standards?),  and added functionality to default url slots
from another url object, to copy url objects and to externalize them.
2000-07-22 01:01:56 +00:00
f8834bce21 Changes that bring CLASH up to extended HTTP/1.0 support:
Code to implement session management for resources.  The current
version supports transient cookie based session management, but other
forms of management could be added without undue hassle.
2000-07-22 00:49:21 +00:00
a53e7391e9 Changes that bring CLASH up to extended HTTP/1.0 support:
Added interface to directly export resources from a server.
Restructured code and added HTTP/1.0 support.  Various miscellaneous
changes.
2000-07-22 00:45:30 +00:00
2fbc5a621d Changes that bring CLASH up to extended HTTP/1.0 support:
The machinery in this file is used for the automatic creation of
responses in standardized (error) situations based on the information
contained in a condition.
2000-07-22 00:42:03 +00:00
a9e2f4c553 Changes that bring CLASH up to extended HTTP/1.0 support:
Changed argument precedence order on access-resource and
access-resource-using-method to implement the expected semantics that
methods specialized on requests or request-methods overide more
general methods in base classes.

Also revamped the division of labour between entities and resources on
static resources (see entity.cl), so that static resources are simple
wrappers around static entities, which provide the content.

Added resources that handle dynamic content and forms by dispatching
to functions passed in during creation.  This is to support simple
ad-hoc dynamic resources, whereas really dynamic resources will just
subclass resource and implement the stuff on their own.

Added a simple wrapper to bind form data passed in with a post request
(with-form-data).  This should be unified with query-argument
processing.
2000-07-22 00:34:37 +00:00
22b8cd9c8f Changes that bring CLASH up to extended HTTP/1.0 support:
Added declarations to silence warnings on unused arguments.
2000-07-22 00:19:55 +00:00
22b2bf1abd Changes that bring CLASH up to extended HTTP/1.0 support:
Moved some of the common parsing and rendering subroutines to a new
file.  Many other functions should probably be moved over here, so
watch this space as clean up progresses further.
2000-07-22 00:18:59 +00:00
f30daaf80f Changes that bring CLASH up to extended HTTP/1.0 support:
Switched over to new, splay-tree based hierarchical namespaces.  This
is still a work in progress.
2000-07-22 00:15:46 +00:00
00b1689a8d Changes that bring CLASH up to extended HTTP/1.0 support:
Extensive changes to accomodate the new model for message classes and
HTTP versions.  This was necessary because the old model was not as
flexible and concise as hoped, so that supporting multiple http
version became tedious.  The new infrastructure is still a bit of a
work in progress, though, so watch this space.  There's also some work
left purging the reliance on pure streams instead of connections.
2000-07-22 00:13:03 +00:00
d2b1422049 Changes that bring CLASH up to extended HTTP/1.0 support:
Added simple common logging file format mixin and a simple profiling
mixin.  This is more for demonstration purposes, than for real-life
usage.  Real world appliations will probably want to do their own
customized forms of logging and/or profiling.
2000-07-21 23:24:24 +00:00
eac484a06f Changes that bring CLASH up to extended HTTP/1.0 support:
Moved render-slots to messages.cl, removed non-1.0 entity-headers,
and implemented the rest.  Added a number of ready-made entity
implementations, for use with static-resource.
2000-07-21 23:22:25 +00:00
3281e85179 Changes that bring CLASH up to extended HTTP/1.0 support:
Consolidated the event-driven CMU CL driver code and the
multi-processing CMU CL driver so that they share common code, like
the newly introduced connection sub-class and related methods.
2000-07-21 22:53:02 +00:00
8632e84fa2 Changes that bring CLASH up to extended HTTP/1.0 support:
Made connection an abstract base class from which individual drivers
deriver their specific connection classes (like it was intended in the
first place).  Added generic functions to get the address and hostname
of the client.
2000-07-21 22:51:02 +00:00
652e45b614 Changes that bring CLASH up to extended HTTP/1.0 support:
Added response-initargs and entity-initargs fields to the clash-error
conditions, so that signallers can return additional information to
the client regarding errors.
2000-07-21 22:45:49 +00:00
a890540a42 Added a version of the simple CMUCL driver that uses SERVE-EVENT, for
all versions of CMUCL that don't provide multi-processing support,
like on all non-x86 platforms.  Tested on an UltraSparc running
Solaris 2.7 (hawk) and a mid-1999 version of CMUCL 18b+.
2000-04-14 00:07:13 +00:00
d7d90fbdb9 Modified base path selection mechanism to support loading from
non-working directories, added utility.cl and move around some
dependencies to make implementation clearer.
2000-01-28 07:22:31 +00:00
f78391efdb Some basic utility definitions for all areas of CLASH. 2000-01-28 07:20:36 +00:00
5745612e87 Nearly complete rewrite to clean up URL/URI parsing, merging and
handling, in the face of the much saner RFC 2396.  This implementation
provides all major capabilities, including low-consing operation,
representation of relative and absolute URIs, useful merging and
read-write consistency of URIs.  Some clean-up work is still needed to
purge the implementation from all references to URLs, to support the
handling of all URIs.  Other minor cleanups and additions are still
needed, but after that the handling of URIs should be nearly as robust
as the handling of pathnames in CL.
2000-01-28 07:16:56 +00:00
d9cf8a6965 Modified the selection of request and response classes to take into
account the server we are servicing, so that each server only sees
and creates request/response classes he knows he can handle.  This
also makes it possible to add request/response classes in a running
system, and to run servers of different versions side-by-side in an
image without affecting each other...
1999-09-19 12:55:29 +00:00
23eb318329 Added some simple syntax/readtable enhancements to ease working with
URLs and HTTP-Versions.  There will probably be further enhancements
later on.
1999-09-19 12:52:40 +00:00
1cf0f56f10 Sample Logos for CLASH... ;) 1999-08-07 18:06:15 +00:00