[Initial revision dan**19991212135313] [Dunno how these ended up in here dan**19991212153204] [Make 404 errors display the name of the file they can't find dan**19991212153533] [how to build a tar file dan**19991212155835] [miscommittedCVS: ---------------------------------------------------------------------- dan**19991212155848] [this is a generated file dan**19991223014635] [should not have been committed dan**19991223014927] [more release engineering foolery dan**19991223015001 more release engineering foolery make dist RELEASE=x.y ] [doodle doodle dan**19991223015009] [some amount of rearrangement to make telentweb a contained example rather dan**19991223015016 some amount of rearrangement to make telentweb a contained example rather than a module of its own ] [all-new SERVE-EVENT-based daemon: we now can run at the same time as dan**19991223015025 all-new SERVE-EVENT-based daemon: we now can run at the same time as the perfectly normal toplevel ] [new 'examples' subdirectory dan**19991223015144 new 'examples' subdirectory new doc directory which will eventually have useful documentation in it ] [tar files may not exist. dan**19991223015232] [TAG rel_0_3 dan**19991223015232] [Tunable stuff dan**19991228181740] [silly errors dan**19991228183103] [explanatory note added dan**19991228183118] [pointer to (more nearly) current docs added dan**19991228183134 pointer to (more nearly) current docs added chopped out handler documentation ] [deleted lots, cleaned up, added some stuff dan**19991228183140] [get the product release from RELEASE dan**19991228183147] [make the examples a completely separate file: not everyone wants one dan**19991228183157] [still dead code dan**19991228183204] [commenting dan**19991228183212] [when read-handler is first called, we need to remove the SERVE-EVENT dan**19991228183222 when read-handler is first called, we need to remove the SERVE-EVENT handler that called it and do all our reading for that request. READ-HANDLER is not re-entrant ] [export the right symbols from daemon.lisp dan**19991228183229] [commntary dan**19991228183236] [typo dan**19991228183244] [commentary dan**19991228183253] [new location for stuff dan**19991228183311 new location for stuff new installation instructions ] [new package name dan**19991228183317] [*** empty log message *** dan**19991228183326] [New files dan**19991228183429] [New pathnames dan**19991228192721] [TAG rel_0_3_1 dan**19991228192721] [Examples dan**19991228202629] [typo dan**19991228203428] [another typo dan**19991228203448] [What do you want? dan**20000103183726 What do you want? Information ... ] [MIME Base64 decoder dan**20000103183816 MIME Base64 decoder Could probably benefit from some profiling and optimization ] [`sequential let' macro dan**20000103183851] [chop some more bits out dan**20000103184332] [more ideas to do dan**20000103184336] [seqlet and base64 are part of the system dan**20000103184341] [this is basically a new file now. dan**20000103184348] [deleted *session* reference that was hungover from dhttp dan**20000103184354 deleted *session* reference that was hungover from dhttp refine the order that handers are run in. ] [commentary dan**20000103184404] [add request-user slot dan**20000103184409] [general reordering and split installation details in to their own file dan**20000103184414] [New handlers to demonstrate HTTP basic auth dan**20000103184420] [add auth.lisp to system dan**20000103184520] [TAG rel_0_4 dan**20000103184520] [turned into handlers.html dan**20000103184559] [more to do dan**20000218150052] [deleted some old cruft that we don't use, and vestigial *multiprocessing* dan**20000218150054 deleted some old cruft that we don't use, and vestigial *multiprocessing* specal-casing ] [missed a couple of exported symbols dan**20000218150056] [package name dan**20000218150058] [updated doc index page to have link to cvsweb in it dan**20000218150100] [fiddling dan**20000218150102] [just fiddling dan**20000218150104] [New files to make araneida work with my spiffy new sockets interface dan**20000324010323] [use :sockets if they're already loaded dan**20000324010557] [cruft-away dan**20000324010559] [mostly gratuitous formatting changes dan**20000324010601] [changed princ to write-sequence, to see if it makes a difference dan**20000324010603 changed princ to write-sequence, to see if it makes a difference (it doesn't much) ] [dead, for all practical purposes. dan**20000526233221] [handles Expires headers when supplied dan**20000526233227 handles Expires headers when supplied allow relative URLs in request-redirect ] [use :sockets every time. Life's too short to support the old interface dan**20000527005637] [bind the socket to 0.0.0.0 not 127.0.01, duh dan**20000527020842] [don't merge-urlstring if we had a real url to start with dan**20000527020847] [file-request: recognize .png dan**20000528235226] [READ-SEQUENCE is buggy in CMUCL (it does short reads a la read(2) when dan**20000531085409 READ-SEQUENCE is buggy in CMUCL (it does short reads a la read(2) when there isn't enough data to get). Eschew use. ] [(1) less to do dan**20010106212824 (1) less to do (2) add musing on handler hierarchies ] [add new files for pattern matching stuff and for define-page dan**20010106212831] [new external symbols dan**20010106212842] [new function read-mime-types dan**20010106212850 new function read-mime-types send-file now copes with conditional GETs ] [(html-stream stream foo) is about twice as fast as (princ (html foo) stream) dan**20010106212907] [new method request-if-modified-since dan**20010106212916] [commentary dan**20010106212925] [whitespace dan**20010106212935] [more useful commentary dan**20010106212945 more useful commentary nmew examples to show use of rewriting stuff ] [ +(defvar *mime-types-file* "/etc/mime.types" dan**20010106212957] [faster version of s. (don't princ-to-string if we have a string already) dan**20010106213005] [new files courtesy of rinaldo-that-was/stargreen dan**20010107022800] [TAG rel_0_5 dan**20010107022800] [ + (:file "define-page" :depends-on ("request")) dan**20010107024812] [ - (labels ((page () ,@forms)) dan**20010107024819 - (labels ((page () ,@forms)) - (maybe-output-func changed-time headers #'page))) + `(labels ((page () ,@forms)) + (maybe-output-func changed-time headers #'page))) ] [updates for new stuff in 0.51 dan**20010107024829] [TAG rel_0_51 dan**20010107024829] [Handle both binary and character streams. colin**20010206045015 Handle both binary and character streams. Throw an error if the streams are incompatible. ] [Use outline mode. colin**20010206051039] [ + (error "Unable to find exported server ~A" name)))) dan**20010302030300 + (error "Unable to find exported server ~A" name)))) Give a helpful error message if we can't find the server for a URL export Courtesy of Colin Walters ] [add the OSU Elisp archive (wonder if we should add Stargreen too?) dan**20010304003447] [html-stream: optionally supply list of elements _not_ to output newline after dan**20010514113058] [parse-urlstring can now optionally not throw an error if it fails dan**20010514113059] [ - :depends-on ("sockets") ; it will make things simpler dan**20010514134752 - :depends-on ("sockets") ; it will make things simpler + :depends-on ("db-sockets") ; it will make things simpler ] [use *araneida-internal-port* instead of hardcoding 8000 dan**20010514141556] [just use db-sockets. it works, it reduces the number of conditionals dan**20010529175150 just use db-sockets. it works, it reduces the number of conditionals depend on net-telent-date. hack up system definition slightly so it works (at least, fails to fail) with LPNs ] [remove blanks in /etc/mime.types dan**20010529175151] [:user is not an ansi package dan**20010529175152] [use date functions in net.telent.date dan**20010529175154] [use explicit slot list, avoid mop dan**20010529175155] [ -(in-package :http-server) dan**20010529175156 -(in-package :http-server) +(in-package :araneida) ] [ -(in-package :user) dan**20010529175158 -(in-package :user) +(in-package :cl-user) - (:use "MAKE" "COMMON-LISP" "ARANEIDA" "USER")) + (:use "COMMON-LISP" "ARANEIDA" "CL-USER")) ] [ - (debug:backtrace 40 out)))) dan**20010529175200 - (debug:backtrace 40 out)))) + #+cmu (debug:backtrace 40 out) + #+sbcl (sb-debug:backtrace 40 out)))) ] [ (defun join (delimiter elements) dan**20010529175201 (defun join (delimiter elements) - (apply #'concatenate 'string + (with-output-to-string (o) ] [rewrote split to not return blank strings when the input has consecutive dan**20010529175202 rewrote split to not return blank strings when the input has consecutive whitespace characters ] [ +(defun remove-if-empty (strings) dan**20010529175204 +(defun remove-if-empty (strings) + (remove-if (lambda (x) (= (length x) 0)) strings)) ] [dead dan**20010529181137] [deleted much old cmucl cruft which we don't need now we use db-sockets dan**20010529182003] [implementation-neutral package for the event functions dan**20010529182004] [create new package EVENT to hide cmucl/sbcl differences dan**20010529182006 create new package EVENT to hide cmucl/sbcl differences conditionalise PCL hackery on cmu ] [let's clean up around here dan**20010529221234] [ -(in-package :http-server) dan**20010604120232 -(in-package :http-server) +(in-package :araneida) ] [rfc2396.txt dan**20010605120158] [/doc -> /docs dan**20010605122819] [gone dan**20010605133320] [ +usr/share/common-lisp/repositories dan**20010605133404] [parametrise for ease of copying around dan**20010605133405] [lpn fumbling dan**20010607153254] [sbcl porting stuff dan**20010607153255] [stage 1 of of new design for handlers; should be invisible for user code dan**20010607153256 stage 1 of of new design for handlers; should be invisible for user code stage 2, yet to happen, is to change the type signatures on dispatch-request and handlers ] [stage 1 of of new design for handlers; should be invisible for user code dan**20010607153257] [ -(in-package :http-server) dan**20010607153258 -(in-package :http-server) +(in-package :araneida) +(defmethod make-load-form ((url url) &optional environment) + (make-load-form-saving-slots url :environment environment)) ] [ clean: dan**20010607153259 clean: - rm -f build-stamp configure-stamp + rm -f build-stamp configure-stamp Makefile ] [blah dan**20010626201028] [- (:file "session" :depends-on ("request")) dan**20010626201029 - (:file "session" :depends-on ("request")) this moves into the examples package ] [(defmacro define-page ...) dan**20010626201030 (defmacro define-page ...) accept variable-lookup-fn argument ] [some handlers need the discriminator dan**20010626201031] [ +(defparameter *variable-lookup-fn* nil) dan**20010626201033 +(defparameter *variable-lookup-fn* nil) (defun variable-lookup (name) - (declare (special *variable-lookup-fn*)) ] [ +(defmethod dispatch-request ((request request) handlers &optional discriminator) dan**20010626201034 +(defmethod dispatch-request ((request request) handlers &optional discriminator) - (subseq (urlstring (request-url request)) + (subseq (urlstring discriminator) (length (urlstring (request-base-url request))) and check if the export needed a discriminator - (princ (s. "Expires: " (universal-time-to-rfc-date expires) eol) + (princ (s. "Expires: " (date:universal-time-to-rfc-date expires) eol) ] [whitespace dan**20010626205711] [session.lisp moved from the mail distribution dan**20010626205734] [It would help to have this in CVS dan**20010626233921] [doodle doodle dan**20010626233933] [new release dan**20010627000727] [TAG debian_version_0_52 dan**20010627000727] [fix dependency bugs dan**20010627002451] [new release dan**20010627002508] [blah dan**20010627124129] [dont amke lins by hand, now they're in the package itself dan**20010627124204] [new file dan**20010627124956] [correct the dependencies dan**20010627125105] [TAG debian_version_0_53 dan**20010627125105] [turn release into release.lisp, include it in the defsystem so it makes dan**20010627154832 turn release into release.lisp, include it in the defsystem so it makes it into the installed system ] [Don't keep release.lisp in CVS: instead, generate it at "configure" time dan**20010627162409] [TAG debian_version_0_53-1 dan**20010627162409] [lessee dan**20010627163414] [Moved postrm->prerm dan**20010627163857] [bad deps dan**20010627164124] [version number may not ne a number dan**20010627165000] [TAG debian_version_0_53_1 **INVALID** dan**20010627165000] [foo dan**20010627165404] [TAG debian_version_0_53_2 dan**20010627165404] [Stuck two files together dan**20010627170017] [foo dan**20010627170045] [oops. try again dan**20010627170132] [TAG debian_version_0_53_3 dan**20010627170132] [doodle doodle dan**20010628135002] [new news is ... new dan**20010628135004 new news is ... new I guess ] [repair dan**20010628135005] [ - (translate-logical-pathname #p"cl-library:araneida;") dan**20010628135006 - (translate-logical-pathname #p"cl-library:araneida;") + #.(translate-logical-pathname "cl-library:araneida;") sbcl can't dump logical pathname hosts ] [updated for the brave new cclan world dan**20010628135117] [0.54 release dan**20010628135313] [TAG debian_version_0_54 dan**20010628135313] [parse-body: take optional arg for character to split on dan**20010717203458] [export dispatch-request dan**20010723000035] [the behaviour of SPLIT changed, so we need fewer elements to JOIN when dan**20010723000036 the behaviour of SPLIT changed, so we need fewer elements to JOIN when putting url paths back together ] [request-send-headers has new keyword arg set-cookie dan**20010723221550] [avoid dying when we get spurious % in URLs dan**20010811083457] [TAG stargreen_2001_12_06 dan**20010811083457] [ - (method url-string protocol) (split request-line nil '(#\Space)) dan**20011206225803 - (method url-string protocol) (split request-line nil '(#\Space)) + (method url-string protocol) (split request-line 3 '(#\Space)) ] [ -(defun export-handler (export) (fourth export)) dan**20011206225804 -(defun export-handler (export) (fourth export)) +;(defun export-handler (export) (fourth export)) oops. we redefine export-handler later anyway, but wouldn't it be fun if we reloaded this file during development ] [added cache-control header dan**20011206225805] [evaluate the output form before sending headers, in case it didnt want us to send headers dan**20011218053105] [simplify the serve-event gubbins considerably. Now we only install dan**20011230205412 simplify the serve-event gubbins considerably. Now we only install serve-event handlers for the listening sockets, and handle the accept/read stuff synchronously. In practical terms we already were doing this, but it's easier to read this way and probbaly won't break as much ] [more request headers: dan**20011230205413 more request headers: + location + pragma plus Expires: can be a string if you prefer, plus Set-cookies now accepts a list of cookies make request-redirect use request-send-headers, and optionally pass spare headers through from caller ] [bah. may as well use db-sockets everywhere dan**20020108022548] [this file is gradually going away dan**20020108022549] [ - html html-escape dan**20020108022550 - html html-escape + html html-escape html-stream ] [ignore SIGPIPE. rearrange the error handling slightly dan**20020129121808] [I suspect that CLOSE errors out if there is buffered data that it cannot dan**20020130125930 I suspect that CLOSE errors out if there is buffered data that it cannot write. Be more agressive about closing sockets in that case (seems to reduce socket leakage) ] [less wittering dan**20020227195839] [offensively rigorous close-stuck-sockets code dan**20020227195840] [ (memo::define-memo-function pattern-match (list pattern) dan**20020227195841 (memo::define-memo-function pattern-match (list pattern) deleted old inapplicable docstrong bit ] [whitespace dan**20020227195842] [asdf system definitions dan**20020302021326] [add lots of static files dan**20020307000512] [all of a sudden it gets much easier to find the system version dan**20020307000513] [minor updates dan**20020307000514] [updated for asdf system dan**20020307000515] [ -(merge-urls an-exsting-url "/relative?url") dan**20020307000516 -(merge-urls an-exsting-url "/relative?url") +(merge-url an-existing-url "/relative?url") ] [ (defvar *araneida-source-directory* changed dan**20020307000517] [cruft-b-gone dan**20020307000533] [new file dan**20020307000538] [TAG cclan_version_0_6 dan**20020307000538] [wibble dan**20020521183638] [bump version. depend on split-sequence dan**20020521183639] [ -(defun read-new-sequence (length stream) dan**20020521183640 -(defun read-new-sequence (length stream) gone, used no more catch stream-error (probably means peer has gone away) and don't do backtrace parse-body takes optional end, for use with persistent connections fix read-folded-line, finally ] [cleared up vestigial moppery mess dan**20020521183641] [dead comments dan**20020521183642] [ +(defmethod request-cookie ((request request) name) dan**20020521183643 +(defmethod request-cookie ((request request) name) new method transplanted from istr ] [added (not entirely perfect) FTP method dan**20020521183644] [docs/ directory should be relative to the source dir dan**20020521183646] [ - (loop for q on (remove #\= (coerce string 'list)) by #'cddddr dan**20020521183647 - (loop for q on (remove #\= (coerce string 'list)) by #'cddddr + (loop for q on (coerce string 'list) by #'cddddr not sure quite what i was thinking of there. that only worked for strings whose lenbgth was divisble by 4 ] [whitespace "... for a white wedding" dan**20020521183648] [whitespace dan**20020603144459] [ +(defparameter *per-host-configuration* dan**20020603144501] [comment the static site out, so we can use the examples as-is for dan**20020603144502 comment the static site out, so we can use the examples as-is for araneida.telent.net ] [ +(setf *araneida-internal-port* 8002) dan**20020603144503] [I think this file is dead, actually dan**20020603144504] [grotty hack in cookie parsing to account for whitespace between cookies dan**20020604034809] [TAG pre_20020909_update dan**20020604034809] [ - :version "0.6.1" dan**20020605233936 - :version "0.6.1" + :version "0.61" let's stick with a single numbering scheme, can we? ] [new NEWS file dan**20020605234028] [TAG cclan_version_0_61 dan**20020605234028] [merge-url bugfixes: (1) merging a null string, (2) merging a string dan**20020606225620 merge-url bugfixes: (1) merging a null string, (2) merging a string that starts #\? ] [TAG cclan_version_0_62 dan**20020606225620] [give 404 for wild pathnames dan**20020610110629] [TAG before_handler_redesign dan**20020610110629] [new dan**20020909224234] [new handler protocol dan**20020909230649] [ +New in 0.63 dan**20020909233022 +New in 0.63 +New in 0.62 ] [large pile of random gunk dan**20020909233023] [ + (:file "handler" :depends-on ("defpackage")) dan**20020909233024] [ -(defun handle-request (stream socket) dan**20020909233025 -(defun handle-request (stream socket) +(defun handle-a-request (stream socket) renamed. whole pile of hardcoded catch/throw stuff pulled out into methods of legacy-handler ] [ +(defun forcibly-close-stream (s) dan**20020909233026 +(defun forcibly-close-stream (s) new function with contents taken from previous version of handle-request (now handle-a-request) ] [extra exported symbols for new handler protocol dan**20020909233027] [ + (install-handler *root-handler* (make-instance 'legacy-handler) dan**20020909233028 + (install-handler *root-handler* (make-instance 'legacy-handler) + (urlstring url) (eql match :exact)) EXPORT-HANDLER has to install a LEGACY-HANDLER instance at the appropriate place in the *ROOT-HANDLER* tree ] [ ;;; XXX fix this, it's not correct dan**20020909233029 ;;; XXX fix this, it's not correct (defun html-reserved-p (c) - (member c '(#\< #\> #\&))) + (member c '(#\< #\" #\> #\&))) the comment still stands, admittedly ] [ - (sub-aux tree (parameter-as-list parameter)))) dan**20020909233030 - (sub-aux tree (parameter-as-list parameter)))) + (let ((ret (sub-aux tree (parameter-as-list parameter)))) + (if (car ret) ret (list ""))))) a bit of a kludge, but a useful piece of kludge nonetheless ] [ (defclass request () dan**20020909233031 (defclass request () + (urlstring :initarg :urlstring :reader request-urlstring) + (handled-by :initform nil :accessor request-handled-by) new slots ] [REQUEST-SEND-ERROR now signals RESPONSE-SENT to abort further processing dan**20020909233032] [fix for Host: headers that contain a hostname without a target port (courtesy Eric Marsden) dan**20021118200435] [Fix invalid defgeneric syntax dan**20021118200556 Fix invalid defgeneric syntax Use more conventional capItAlizatIOn for http headers, in case it was causing apache mod_proxy problems (it wasn't, sad to relate) ] [pmp.lisp is dead dan**20021122115543] [ + (:shadowing-import-from #+sbcl :sb-pcl dan**20021122115544 + (:shadowing-import-from #+sbcl :sb-pcl + #+cmu :pcl "CLASS-SLOTS" "SLOT-DEFINITION-NAME") ] [work in progress (defclass static-file-handler (handler) dan**20021122115545] [ (defmethod find-handler ((parent dispatching-handler) dan**20021122115546 (defmethod find-handler ((parent dispatching-handler) - "Remove the handler for DISCRIMINATOR, EXACT-P from the list of sub-handlers for PARENT" + "Find the handler for DISCRIMINATOR, EXACT-P from the list of sub-handlers for PARENT" ] [redirect handler added dan**20021122122457] [new search-html-tree function (don't depend on this yet, it's mostly dan**20030103001132 new search-html-tree function (don't depend on this yet, it's mostly experimental) static-file-handler class basically now works, is uncommented beginnings of a 'production-mode' error handler: do not print potentially interesting stuff (like pathnames) to the request stream if it could be a hostile user ] [Clean up long-dead code dan**20030106232005 Clean up long-dead code Sort out exports Delete some :: package prefixes ] [Update NEWS, README, TODO dan**20030112034049 Update NEWS, README, TODO Split out the non-legacy stuff in file-request.lisp into static-file-handler.lisp . Add new files to .asd file Documentation updates: delete anything really scarily old (should put this all in CLiki, really) examples/ directory is officielly considered Deprecated beginnings of log-errors-to-stream support ] [TAG cclan_version_0_69 dan**20030112034049] [add some missing dependencies dan**20030217205654] [fix error handling lossage causing complaints about (format nil nil). fix static-file-handler problem that was making it call the error handler in the first place dan**20030217205828] [TAG thread-point dan**20030217205828] [utility module depends on defpackage dan**20030228110242] [Mess around with the defpackage form dan**20030605005341 Mess around with the defpackage form Merge the experimental thread support in. It's still pretty experimental Rationalise package names: replace all occurrences of the old HTTPSRV and HTTP-SERVER and stuff Slightly more efficient string processing in handle-a-request: less garbage Chop out old socket portability stuff that was never really used anyway Fix merge-urls so that an absolute URL in the second place DTRT (in a not-quite correct manner, it should be noted) ] [updates for 0.70, according to CVS dan**20030616152604] [cruft dan**20030616152605] [more to do dan**20030616152607] [ - :version "0.71" dan**20030616152609 - :version "0.71" + :version "0.70" ] [restore install-serve-event-handlers as a function name: make dan**20030616152611 restore install-serve-event-handlers as a function name: make install-thread-handlers an alternative indentation ] [error handling for legacy handlers dan**20030616152613] [blah dan**20030616152615] [transplant some of the notes from new-dispatch-model dan**20030616152617] [nobody needs a tutorial for this stuff dan**20030616152619] [update installation instructions dan**20030616152621] [ +[ I think everything in here has now been wrapped into one or more of dan**20030616152623 +[ I think everything in here has now been wrapped into one or more of +the real doc files ] ] [better explanation of proxy vs non-proxy configuration dan**20030616152627] [ +correctly in weird cases. Relative URLs with authority components dan**20030616152629 +correctly in weird cases. Relative URLs with authority components +containing non-standard hosts are currently known to be broken. ] [*** empty log message *** dan**20030624195326] [new function REMOVE-HANDLERS closes sockets, removes handlers, kills dan**20030624195328 new function REMOVE-HANDLERS closes sockets, removes handlers, kills threads, whatever ] [ - (:use "SPLIT-SEQUENCE" #+sbcl "SB-BSD-SOCKETS" "COMMON-LISP" )) dan**20030624195330 - (:use "SPLIT-SEQUENCE" #+sbcl "SB-BSD-SOCKETS" "COMMON-LISP" )) + (:use "SPLIT-SEQUENCE" "SB-MOP" "SB-BSD-SOCKETS" "COMMON-LISP" )) copy-url, bah ] [install-handlers no more dan**20030624195332] [added some basic details of thread debugging dan**20030624195334] [TAG release_0_70 dan**20030624195334] [dont accept multiple connections at once: it confuses dan**20030709024035] [better test for complete url, as fails on url-like-things that have a colon following the / dan**20030710075319] [more useful error message from legacy handlers dan**20030710201156] [as accept-handler now cannot be called recursively, any entry into the debugger disables web serving: bad for production sites. So, accept-handler now has a handler-bind to backtrace and carry on. The old behaviour can be restored by setting *break-on-handler-errors* t dan**20030720121222] [print the condition as well as the backtrace, in the error handler dan**20030720191905] [add LINK to the list of empty elements dan**20030722222231] [don't peek-char static files. it's unnecessary and it tickles a bug in read-sequence dan**20030819102440] [follow the defpackage dogma dan**20030819102501] [html-stream now calls functions if it finds them in the tree. This is experimental and I reserve the right to decide it was a bad idea after all dan**20030819102809] [update NEWS and version number for 0.71 dan**20030819104146] [don't peek-char static files. it's unnecessary and it tickles a bug in read-sequence dan**20030819111907] [export a couple of url accessors. delete export of request-socket as we never actually set it anywhere anyway. replace body of body-params with a new version from Zach Beane which is shorter and apparently runs about twice as fast dan**20030824003947] [s/universal-time-to-rfc-date/universal-time-to-http-date/ (needs new net-telent-date) dan**20030824005105] [oops dan**20030824005202] [experiemntal http/0.9 support dan**20030828114627] [tidy dan**20030828114718] [TAG release_0_73 dan**20030828114718] [Add :refresh to send-page-headers dan**20030905015525] [start of an export-server replacement dan**20030905015644] [experimental HTTP client dan**20030905015730] [more/less to do dan**20030905020212] [ documentation updates dan**20031006160015] [stuff split out from http-listener.lisp dan**20031106023122] [class definitions moved to http-listener-class.lisp dan**20031106023735 class definitions moved to http-listener-class.lisp much other stuff moved into {threaded,serve-event}-http-listener.lisp fix the mess that is error handling, in a way that works fairly uniformly for threaded and serveevent models ] [chopped out functions pertaining to server start/stoppage; interesting dan**20031106023848 chopped out functions pertaining to server start/stoppage; interesting bits moved to the various http-listener files ] [move sigpipe ignore up here dan**20031106023918] [Expand on 'new resonse model' while I have the email to hand that dan**20031106055803 Expand on 'new resonse model' while I have the email to hand that describes what I actually meant by it ] [added new files for http listener classes, methods etc dan**20031106055933] [remove unused variable dan**20031106055952] [new slot default-hostname is what will be used for requests on this listener dan**20031106060051 new slot default-hostname is what will be used for requests on this listener with relative URL and no Host: header ] [stop the compiler whinging dan**20031106060127] [new dan**20031108032201] [Next version will be 0.8 dan**20031109013212] [New files dan**20031109013405] [a hostname is not a URL, major media advertising notwithstanding dan**20031109013445] [A working example using all the latest fashionable APIs dan**20031109013552] [*root-handler* is deprecated, make a new root handler for each dan**20031109013854 *root-handler* is deprecated, make a new root handler for each listener instead ] [new (and it must be admitted, ratehr large) with-accept-flets macro dan**20031109013949 new (and it must be admitted, ratehr large) with-accept-flets macro removes a lot of cut & paste between threaded and serve-event listeners ] [new dan**20031109013959] [copy-request needed for the reverse-proxy-handler dan**20031109014030] [use with-accept-flets dan**20031109014050] [examples were terrifically out of date, deleted to avoid confusion dan**20031109014244] [lose debugging print dan**20031109021141] [now always returns T, for ease of use as the last thing in a handler dan**20031109021216] [new dan**20031109021229] [signal an http-not-found condition if file doesn't exist dan**20031109021359] [delete dead comment and debug output dan**20031109021432] [cursory once-over for approximate correctness dan**20031109032717] [moved to doc/ dan**20031109032739] [new dan**20031109032800] [Summary of new stuff in 0.8, as it will be dan**20031109062148] [new symbols for http-listeners and reverse proxy-handler dan**20031109062243] [apache-conf-segment outputs all the apache reverse proxy inforation we dan**20031109062358 apache-conf-segment outputs all the apache reverse proxy inforation we can find out about the given listener ] [newline dan**20031109062410] [request-urlstring needs to be writable for copy-request dan**20031109062430] [whitespace dan**20031109062447] [get the pathname merging a bit more nearly right dan**20031109062550] [remove all the export-server stuff dan**20031109221128] [remove all evidence of root-handler except for poor unfortunates still using export-handler dan**20031109221523] [I think that's everything needed for release dan**20031110044443] [add new reverse-proxy-listener-class dan**20031110044520 add new reverse-proxy-listener-class move example.lisp into doc directory ] [new symbols for http-errors dan**20031110044554 new symbols for http-errors *-reverse-proxy-* ] [added handle-request-using-listener gf so that reverse-proxy-listener dan**20031110044641 added handle-request-using-listener gf so that reverse-proxy-listener can maltreat the url before dispatching on it ] [now a subclass of reverse-proxy-listener-mixin dan**20031110044737] [if no filename in directory, merge the default (e..g index.html) dan**20031110044926 if no filename in directory, merge the default (e..g index.html) catch simple-steam-error, which is given when attempt made to read a directory as a file (but not until we've sent the headers and an actual read from it is done, sigh) ] [dead, see reverse-proxy-listenre instead dan**20031110045010] [reverse-proxies now done in new and excitingly different way dan**20031110045159] [new dan**20031110045216] [update for reverse proxies documentation dan**20031110051152] [TAG release_0_80 dan**20031110051152] [* Fix for bug in doc/example.lisp: long-site-name doesn't (as I had dan**20031122185401 * Fix for bug in doc/example.lisp: long-site-name doesn't (as I had claimed) necessarily have to return FQDN, and only did that on my machine because I had leftover bits of Debian common-lisp-controller it was looking at. Thanks to Vincent Arkesteijn * Export REQUEST-UNHANDLED-PART, which is the rightmost part of the urlstring: what would have been in the second parameter of an old-style handler * STATIC-FILE-HANDLER coped badly with requests for ".../doc" when ".../doc/" is a directory. Now issues redirect ] [bump version dan**20031123195101] [TAG release_0_81 dan**20031123195101] [export *restart-on-handler-errors* dan**20031129205437] [replace *break-on-handler-errors* with *restart-on-handler-errors* dan**20031129205545 replace *break-on-handler-errors* with *restart-on-handler-errors* which has the sense of the test reversed and may also be a function - useful with alternative debugger interfaces like SLIME ] [Log the HTTP error code and message if we're going to log errors dan**20031129205617] [slightly more robust check for directories dan**20031129205658] [describe use of *restart-on-handler-errors* dan**20031129205718] [update for 0.82 dan**20031129210247] [TAG release_0_82 dan**20031129210247] [ - (:file "pattern-match" :depends-on ("memoization")) dan**20031202032659 - (:file "pattern-match" :depends-on ("memoization")) + (:file "pattern-match" :depends-on ("defpackage" "memoization")) ] [ - ((handler :initform (make-instance 'dispatching-handler) :initarg handler dan**20031202032701 - ((handler :initform (make-instance 'dispatching-handler) :initarg handler + ((handler :initform (make-instance 'dispatching-handler) :initarg :handler oops ] [fiddle with this silly *flatten-p* thing dan**20031202032703] [rearrange request-send-headers. New arg :conditional t makes it serve a dan**20031202032705 rearrange request-send-headers. New arg :conditional t makes it serve a 304 when that looks like the appropriate thing to do ] [document request-send-headers a little dan**20031202032707] [deleted dan**20031202220908] [doodles dan**20031212184250] [don't catch and resignal response-sent, just let it through dan**20031212184252 don't catch and resignal response-sent, just let it through - (rest-of-url (subseq urlstring offset)) + (rest-of-url (request-unhandled-part request)) ] [ - :documentation "This stream is connected to the client socket") dan**20031212184254 - :documentation "This stream is connected to the client socket") + :documentation "This stream is connected to the peer") ] [request-send-headers: signals 'response-sent if 304 dan**20031212184256 request-send-headers: signals 'response-sent if 304 (should it do similarly if HEAD request?) request-redirect now signals response-sent ] [delete unused variables dan**20031212184258] [describe response-sent/request-send-headers dan**20031212184302] [*** empty log message *** dan**20031212193206] [extra exports dan**20031213023820] [handle response-sent dan**20031213023823] [now accepts relative urlstrings which are resolved wrt the handler url base dan**20031213023825] [fix format string dan**20031213023827] [delete duplicated request-unhandled-part method dan**20031215092520] [revert accidental changes dan**20031215092634] [update for 0.83 dan**20031215093140] [TAG release_0_83 dan**20031215093140] [0.84 dan**20031219073934] [export listening-p dan**20031219073937] [listening-p dan**20031219073939] [ - (< (request-if-modified-since request last-modified) dan**20031219073941 - (< (request-if-modified-since request last-modified) - last-modified)) + (<= last-modified + (request-if-modified-since request 0))) oops ] [don't need to do our own 304 handling any more: let request-send-headers dan**20031219073943 don't need to do our own 304 handling any more: let request-send-headers take care of it ] [added documentation for HTTP caching dan**20031219080657] [0.84 dan**20031219080720] [TAG release_0_84 dan**20031219080720] [ + http-error http-error-code http-error-message http-error-client-message dan**20031229230047] [ (define-condition http-error (condition) dan**20031229230049 (define-condition http-error (condition) add client-error slot: a place to put stuff that the public may see ] [docstring fixes dan**20031229230051] [ + ("css" "text/css") dan**20031229230053] [Fixes from Fare and Brian: see NEWS file dan**20040520210836 Fixes from Fare and Brian: see NEWS file Update NEWS file in preparation for 0.85 ] [0.85 dan**20040520211256] [TAG release_0_85 dan**20040520211256] [Portable araneida: separated out the SBCL-specific components into a chandler**20040524191927 Portable araneida: separated out the SBCL-specific components into a separate file, which I implemented for SBCL, OpenMCL, and Allegro. A port to Armed Bear Common Lisp is also underway. ] [Compatibility routines for SBCL, OpenMCL, and Allegro. chandler**20040524192015] [Add preliminary Armed Bear compatibility chandler**20040525152607] [LESS INTERNING INTO CL-USER chandler**20040526152237] [CMUCL compatability for serve-event listeners; #+araneida-threads and chandler**20040603144236 CMUCL compatability for serve-event listeners; #+araneida-threads and #+araneida-serve-event *feature*s. ] [Simplistic CLISP support: serve-event only; requires running chandler**20040603163427 Simplistic CLISP support: serve-event only; requires running (araneida:host-serve-events) to boot up the serve-event loop. ] [Dan suggested I update this, which is a good idea chandler**20040603165135] [Update for latest ABCL (add definitions for host-thread-alivep and use interrupt-thread instead of destroy-thread) chandler**20040603174346] [Much less consy version of s. from Xach chandler**20040609190042] [Small kludge: allow handlers to add new fd-handlers and have those handlers copied onto the real handler list for serve-event. chandler**20040712121542] [mailto: urls chandler**20040712125851] [Xophe/#li: suggest "" in that printed representation chandler**20040712130123 Xophe/#li: suggest "" in that printed representation Xophe/#li: I worry when I see disconnected stuff in the middle of #< > ] [docstrings with open-paren in column 1 confuse emacs indentation ... dan**20040928180136] [allow removal of a fd-handler from inside araneida event processing dan**20040928203031] [documentation updates for 0.9 dan**20040928203053] [contributed by Jochen Schmidt dan**20040928203131] [Remove host-without-other-handlers alltogether. Yeehah! chandler**20040930231755] [Er. Make that a queue and not a stack. chandler**20040930233047] [Oops. Major bugfix - now everything works properly chandler**20041001003759] [More robust to DOS attacks chandler**20041001005055] [TAG release_0_9 chandler**20041001005507] [Added MCL compatibility; fixed some unportable EOL issues. chandler**20041010133159 Added MCL compatibility; fixed some unportable EOL issues. Renamed reverse-proxy-listener-class.lisp to reverse-proxy-listener.lisp to deal with MacOS filename limit of 32 characters. ] [print port correctly for https urls. Patch from Cyrus Harmon dan**20041114153930] [Per pjb: add a call to #+clisp (host-serve-events) chandler**20041223014745] [Lightly tested way of responding to wild hosts chandler**20050315135925] [Do appropriate stuff for a Unicode build: pass :external-format :iso-8859-1 to open, so that arbitrary octets can pass through without encoding errors. This is probably not the right thing, but it makes things work. chandler**20050425231512] [Um, yeah. Forgot NEWS. chandler**20050425231552] [araneida-repl-create Alan-Shields@omrf.ouhsc.edu**20050616225541 Create the araneida-repl directory, and include the first functions that are designed to be used from the repl to get information about araneida. I suppose that these could be useful outside of the repl, but I didn't think cluttering up araneida proper was such a great idea. ] [Include the request-url for errors Alan-Shields@omrf.ouhsc.edu**20050617000849 404 errors were difficult to track down, as they only showed up as "404". So I altered error reporting to include the URL requested. ] [Eliminate implicit generic style warnings by adding generics - also includes some extra documentation Alan-Shields@omrf.ouhsc.edu**20050617001756 Moved docstrings from methods to generics, added necessary generics, etc, etc, etc. Documentation should exist for all the generics I added...though maybe not. ] [Minor typo corrections Petri Latvala **20050624153808] [The end of headers needs to be CRLFCRLF, not CRLFLF petri.latvala@realityescape.net**20050626125413] [Stop-listening didn't make listening-p return t because it didn't setf the socket to nil petri.latvala@realityescape.net**20050626125631] [Export request-response-logging petri.latvala@realityescape.net**20050627031337] [Basic "does-it-compile" testing, with error counting. Alan-Shields@omrf.ouhsc.edu**20050628211918 Add the ability to check and make sure that the araneida system in the current directory does - in fact - compile. A report is generated at the end with a count of errors. The script will error out with 1 if any serious conditions are encountered while compiling. ] [Generate lower-case HTML with less redundant spaces petri.latvala@realityescape.net**20050628193845] [locale-independent urlstring-escape frederic.gobry@epfl.ch**20050705062333 At least with sbcl-0.9.2 w/ unicode support, working in an utf-8 environment causes the behavior of alphanumericalp to change, and return t for more characters than the us-ascii version. This patch explicitely lists the characters that can be made part of an URL without escaping. ] [Temporarily eliminate all references to muffle-warning Alan-Shields@omrf.ouhsc.edu**20050705205712 For some reason, muffle-warning is not available. I'll have to come back through and make it available. In the meantime, make things work. ] [+allowed-url-symbols+ as parameter, not constant Alan-Shields@omrf.ouhsc.edu**20050705210901 reference http://www.sbcl.org/manual/Defining-Constants.html#Defining%20Constants defconstant ran into trouble on compile/load, due to the issues described in the above document (basically being compiled then loaded produces an undefined situation for constants. Joy, no?). This could be solved either by a macro to only define the constant once, or by making the constant a parameter. I went with the latter option. ] [Add documentation string for +allowed-url-symbols+ Alan-Shields@omrf.ouhsc.edu**20050705211913] [Fix muffle-warning error in test.lisp, re-enable muffled warnings Alan-Shields@omrf.ouhsc.edu**20050705220230 Turns out that muffle-warning is a restart that I needed to add. I added it. Cleans up output beautifully, though SBCL shows that 2 important errors are caught. I think those are the "cannot optimize" errors that used to show up. ] [test.lisp "works" on SBCL Alan-Shields@omrf.ouhsc.edu**20050705230049 Implements my-quit, to abstract away quitting - only works for SBCL right now. Get rid of the debugger, just quit instead. Block some SBCL-specific warnings, get muffle warning working, and that yields a working test! ] [Initial creation of rfc2109.lisp Alan-Shields@omrf.ouhsc.edu**20050802233948 Basic functionality works - you can create RFC compliant cookies. ] [Move rfc2109 into utilities where it belongs Alan-Shields@omrf.ouhsc.edu**20050802235951] [Turn off testing Alan-Shields@omrf.ouhsc.edu**20050808204414 Okay, run test.sh by hand if you care. It was just getting annoying to work with. I'll run it by hand before I commit, but other people don't have SBCL. ] [Include the license text and some bookmark-like strings Alan-Shields@omrf.ouhsc.edu**20050803202346 Marco suggested that I include the license text in its entirety. Also included some text strings that are easy to find so as to get to the most externally-relevant code. ] [Fix token? and quoted-string? to account for empty and non-empty strings Alan-Shields@omrf.ouhsc.edu**20050803212954 The specification for tokens says that they must be at least one character. Fixed. The specification for quoted strings says that the empty quoted string is acceptible. Fixed. So we can now have "" values. ] [cookie-struct Alan-Shields@omrf.ouhsc.edu**20050803213257 Add a structure for cookies, for those who like that sort of thing. ] [Tiny patch - update comment for domain Alan-Shields@omrf.ouhsc.edu**20050803214449] [Swap arefs for elts when accessing strings Alan-Shields@omrf.ouhsc.edu**20050803235538] [Parse cookies Alan-Shields@omrf.ouhsc.edu**20050803235648 We now parse RFC2109 cookies. We don't parse old Netscape cookies just yet. ] [Quiet the compiler about *ht* *cr* and *lf* Alan-Shields@omrf.ouhsc.edu**20050804002844 SBCL was whining about vars being used before they're declared. Sensible, I suppose. Moved and made a note. ] [Wrap assemble-matches in an eval-when so it's available at macro time Alan-Shields@omrf.ouhsc.edu**20050804002956] [Parse Netscape-style cookies Alan-Shields@omrf.ouhsc.edu**20050804003030] [Mention split-sequence Alan-Shields@omrf.ouhsc.edu**20050804003605] [ASDF package Alan-Shields@omrf.ouhsc.edu**20050804190743] [TAG version-0.1 Alan-Shields@omrf.ouhsc.edu**20050804190939] [Fix QUOTED-STRING? to take into account escaped quotes Alan-Shields@omrf.ouhsc.edu**20050804214959 You know, I wrote a function to remove escaped quotes from a string... amazing that I didn't use it. Now I do. Also, I tucked the helper function for removing escaped quotes into the function that uses it. Much cleaner that way. ] [No longer demand domains of the style ".blah.blah" Alan-Shields@omrf.ouhsc.edu**20050804215246 Turns out that the RFC allows (in fact desires) domains of the style "blah.blah", so those are now legal. ] [parse-cookie-string needs to allow quoted strings inside it Alan-Shields@omrf.ouhsc.edu**20050804215336 Wrote a small tokenizer that splits - taking into account quoted strings. We're really getting to the point that a pattern language would be useful. Anyways, it works well, now. ] [Implement domain-match-p Alan-Shields@omrf.ouhsc.edu**20050804215558 While debugging an issue with w3m and cookies (which hasn't gone away, btw), I needed to check my knowledge of a "domain-match" - I've included the function in case others find it useful. ] [TAG version-0.2 Alan-Shields@omrf.ouhsc.edu**20050804215726] [Add a changelog - I'll update it each release Alan-Shields@omrf.ouhsc.edu**20050804215842] [TAG version-0.2.1 Alan-Shields@omrf.ouhsc.edu**20050804215956] [Use RFC2109 for parsing cookies - should be drop-in replacement for current cookie code Alan-Shields@omrf.ouhsc.edu**20050808212746] [Add documentation on cookies Alan-Shields@omrf.ouhsc.edu**20050808215918 Shows basically how to use cookies and how to use the spoofing protections. ] [araneida: swap THREAD-ALIVE-P for UNIX-KILL Alan-Shields@omrf.ouhsc.edu**20050810225617 On the advice of Friedrich Dominicus , swapping thread-alive-p for unix-kill makes things work on Debian for AMD64. Seems to work for me as well - by which I mean it compiles. ] [rfc2109: redefine valid domain based on a re-reading of 4.3.2 Alan-Shields@omrf.ouhsc.edu**20050810200905 w3m and the Mozilla bugs set me straight on the reading of 4.3.2. This patch requires an explicitly defined domain for domain, meaning it must be: a value start with a "." and contain an embedded "." ] [rfc2109: Update safe-parse-cookies using new understanding of domain cookies Alan-Shields@omrf.ouhsc.edu**20050810221808 After sorting out what the issue was with explicit domains, update safe-parse-cookies (mostly documentation) to reflect this knowledge. ] [rfc2109: add a note about Moz and IE's lack of RFC compliance Alan-Shields@omrf.ouhsc.edu**20050810222004 Mozilla, Links, and IE all have a problem with quoted PATHs. As quoted paths are demanded by the RFC, there's really no way around this. Luckily, Moz has this fixed in latest alpha. Note added to docs as well as workaround suggestion. Bug reference: https://bugzilla.mozilla.org/show_bug.cgi?id=277033 There is the option of adding a bonus-points-compatible-cookie-string option for outputing compatible code, but I would really rather not go down that road. Output strict, accept loose. ] [rfc2109: update version number for release Alan-Shields@omrf.ouhsc.edu**20050810222725 Don't really know how I missed updating the version number for 0.2 and 0.2.1... ] [rfc2109: update changelog for release Alan-Shields@omrf.ouhsc.edu**20050810223101] [TAG rfc2109-version-0.3 Alan-Shields@omrf.ouhsc.edu**20050810223125] [Optional condition to signal when cookie not found Alan-Shields@omrf.ouhsc.edu**20050819185215 In some code it's easier to assume the cookie is found and have a signal handler for when it's not. This adds a parameter to the cookie fetching routines that enables the signaling of said condition. Share and enjoy. ] [Update cookie documentation to reflect new understanding of domain cookies Alan-Shields@omrf.ouhsc.edu**20050819190816] [Correct minor whoops regarding cookies Alan-Shields@omrf.ouhsc.edu**20050819190855] [cl-taint: add the core functionality (really simple, no?) Alan-Shields@omrf.ouhsc.edu**20050819192033 Adds a small, small library for tainting and untainting values. I hope to add tainted versions of parameter fetching ] [Add tainted variants of query functions and optional warnings when not using them Alan-Shields@omrf.ouhsc.edu**20050819194757 So as to increase safety (and make some code cleaner, I've found), make tainted versions of url-query-param and url-query-alist. Share and enjoy! ] [Fix to taint because of ASDF dependencies. Whoops. Alan-Shields@omrf.ouhsc.edu**20050819195446] [Further updates to taint parameters Alan-Shields@omrf.ouhsc.edu**20050819225524 I wasn't tainting values, I was tainting the list of values. This has been fixed. ] [Export taint and untaint Alan-Shields@omrf.ouhsc.edu**20050819225616] [rfc2109: Add basic testing and a tester Alan-Shields@omrf.ouhsc.edu**20050811221815 Decided to add a basic testing framework - mostly because I'm mucking about with parsing and another library, want something to let me know when I've REALLY screwed up. Please note that the current stable version of FiveAM will not run these tests, as it doesn't have the *features* that are needed to define them. I've submitted a patch to Marco, we'll see if he adds it. ] [Update safe-parse-cookie to properly nconc instead of append - thanks Richard! Alan-Shields@omrf.ouhsc.edu**20050825193902 Whoops. I fixed the regular version but not the safe version. Heck of a lot of good that does. ] [Ensure that input to destructuring-bind in parse-cookies-vnetscape is a 2-element list. rich@holygoat.co.uk**20050825165956] [rfc2109 - Marco applied the 5am patch, changed keyword Alan-Shields@omrf.ouhsc.edu**20050825200651 Marco wanted the feature keyword to be 5am. Less typing for me! ] [Resolve test.sh conflict between rfc2109 and araneida Alan-Shields@omrf.ouhsc.edu**20050825201554] [Remove all the rfc2109 stuff we Just Don't Need Alan-Shields@omrf.ouhsc.edu**20050825211138] [Add documentation on request URL parameters as well as tainting them Alan-Shields@omrf.ouhsc.edu**20050825214957] [Update version for 0.9-a1 Alan-Shields@omrf.ouhsc.edu**20050825215127] [TAG araneida-version-0.9-a1 Alan-Shields@omrf.ouhsc.edu**20050825215157] [Put the main source in its own component for dependency reasons Alan-Shields@omrf.ouhsc.edu**20050915225000 A few of the files were requiring "compat" and almost all of the files required "defpackage", so I tucked the main source in its own module - the :pathname "" makes it still look in the root directory. This should simplify the ASDF file a bit. In retrospect, this is a semi-pointless change, but one that I sank the time into doing while I was chasing a semi-bug...why not record it? ] [Ignore some extraneous variables so as to stop some warnings Alan-Shields@omrf.ouhsc.edu**20050915225030] [Removed unused macro "maybe-output" Alan-Shields@omrf.ouhsc.edu**20050915230517 We don't use it any more, and it didn't seem to be working anymore, besides. I left the name in the patch subject, though, which should make it easy to undo if/when we need it again. ] [Lambda passed where there shouldn't have been one Alan-Shields@omrf.ouhsc.edu**20050915230654 the macro that wraps this call automagically wraps it in a lambda - so we don't need this one any more. ] [Memoize takes functions, not (or function symbol) Alan-Shields@omrf.ouhsc.edu**20050915231848 This speeds up memoize a bit and removes an annoying compiler note. Yeah, I'm tweaked like that. ] [araneida: create the obsolete directory Alan-Shields@omrf.ouhsc.edu**20050920193150 The obsolete directory is for code that I plan to remove, but should stay in for at least one release. For some of the independent code, such as dhttp.lisp, this has the added benefit that people will have to update their code and be aware that they are using depricated code. ] [araneida: move dhttp to obsolete/ Alan-Shields@omrf.ouhsc.edu**20050920193348 Does anyone USE dhttp anymore? ] [rfc2109: allow nil to be passed to safe-parse-cookies Alan-Shields@omrf.ouhsc.edu**20050920212250 The docs say that you can pass nil to safe-parse-cookies to have no legal domains to allow cookies to come from (ie they must come from your server or not at all). Whoops. ] [araneida: request-send-error modified to show client error message Alan-Shields@omrf.ouhsc.edu**20050921192602 The condition system stipulates a :CLIENT-MESSAGE that will be sent to the user. The current request-send-error doesn't receive that. I rewrote it to where it does - note that any direct callers of request-send-error must be modified to take this into account. The signature change should clue people in to this. I hope. ] [araneida: export SEND-FILE Alan-Shields@omrf.ouhsc.edu**20050921192856 Many people don't want to use the static-file-handler but do want to be able to send files. This lets you do that now. ] [araneida: documentation change to note use of inexact matching Alan-Shields@omrf.ouhsc.edu**20050921192938] [araneida: initial commit of test server and client Alan-Shields@omrf.ouhsc.edu**20050921193013] [TAG rfc2109-version-0.3.1 Alan-Shields@omrf.ouhsc.edu**20050825202618] [araneida: add test for alternate content type Alan-Shields@omrf.ouhsc.edu**20050921200338] [araneida: authentication handler was not signaling response sent Alan-Shields@omrf.ouhsc.edu**20050921210329 I don't know how many people use this function, but it seemed best to have it work. It works now. ] [araneida: test authentication and authorization Alan-Shields@omrf.ouhsc.edu**20050921210502] [araneida: add quitting to test server Alan-Shields@omrf.ouhsc.edu**20050921213814] [araneida: test script calls quit for server, now Alan-Shields@omrf.ouhsc.edu**20050921213855] [araneida: test-server now works on a LOAD Alan-Shields@omrf.ouhsc.edu**20050921213946] [araneida: basic test script Alan-Shields@omrf.ouhsc.edu**20050921214012] [araneida: ensure that quit is called for the server even if there is an error Alan-Shields@omrf.ouhsc.edu**20050921214637] [araneida: big patch to get test server working even better Alan-Shields@omrf.ouhsc.edu**20050921225124 Test server now produces random text which the test client looks for. Works with threaded and non-threaded SBCL, and should be pretty easily extended to other servers. As a test, I'm going to try out CMUCL next. ] [Remove smoketest - we have a real test suite now Alan-Shields@omrf.ouhsc.edu**20050921225320] [Move the new test suite to it's rightful place of ascendancy Alan-Shields@omrf.ouhsc.edu**20050921225400] [araneida: test suite correction - look before leaping error Alan-Shields@omrf.ouhsc.edu**20050921232717 Turns out that we need to set *quit* BEFORE we stop listening, as stop-listening breaks us out of the function in some lisps (SBCL). ] [araneida: add CMUCL to test suite Alan-Shields@omrf.ouhsc.edu**20050921232809 This patch is a good example of what you have to do to add a new lisp to the test suite. It's small, thankfully. Enjoy! ] [araneida: release notes added Alan-Shields@omrf.ouhsc.edu**20050921235437] [TAG rfc2109-version-0.3.2 Alan-Shields@omrf.ouhsc.edu**20050921193537] [TAG araneida-version-0.9-a2 Alan-Shields@omrf.ouhsc.edu**20050921235827] [araneida: bring macros into the ASDF system, add once-only and with-gensyms Alan-Shields@omrf.ouhsc.edu**20050923231411] [araneida: append-url Alan-Shields@omrf.ouhsc.edu**20050924002149 It makes sense if you think about the name of the function, but the first time merge-url pulls this action on you, you get a little...irate: (merge-url (merge-url (parse-url "http://example.com/") "/foo") "/bar") becomes Nevermind that this is exactly what you want sometimes. So, I've created append-url, that would, given the same sequence as above, become: It's a little rough right now, but it should work. I'll clarify the docs for merge-url Real Soon Now. ] [arnaeida: a little more information on test failure Alan-Shields@omrf.ouhsc.edu**20050924002456] [araneida: attach-hierarchy added Alan-Shields@omrf.ouhsc.edu**20050924002519 I'm the type that likes declarative sentences. Just like that last one. I find that I like declaring the hierarchy and handlers of my web app in one place as a sort of table of contents for the app. So, I thought to myself: self, why don't you make that executable? And so it was. ...please help me with the documentation. I'm certain it's horrid. ] [araneida: html docs for some utilities Alan-Shields@omrf.ouhsc.edu**20050924003828] [araneida: sleep longer, know cmucl Alan-Shields@omrf.ouhsc.edu**20050928234555 On a fresh compile it can take longer than 5 seconds before the server is ready. 10 seconds seems to do the trick most of the time - I might consider putting in a sleep loop in the client script, though. CMUCL was added to the test suite last time, but not to the help docs. Whoops. ] [araneida: (setf don't-be-stupid t) Alan-Shields@omrf.ouhsc.edu**20050928234811 Turns out I DO know how to do quotes-within-quotes, but SLIME was showing me the string representation, so of COURSE there were escaped quotes. Argh. Right. ] [araneida: handle proxy stuff with attach-hierarchy Alan-Shields@omrf.ouhsc.edu**20050928234916 You know, almost all of my stuff is proxy'd, why didn't I take this into account while finishing up the macro? Right. Anyways. ATTACH-HIERARCHY requires two url parameters, now: internal and external. Internal is used for attaching, external is used for (-url) functions. If you're not using a reverse-proxy or any sort of translation, you'll be fine by just giving the URL twice. ] [araneida: pmp.lisp unused - move to obsolete Alan-Shields@omrf.ouhsc.edu**20050929193445] [araneida: ensure that there are directives - helps catch parameter issues Alan-Shields@omrf.ouhsc.edu**20050929193519] [araneida: with-url-params, with-tainted-url-params Alan-Shields@omrf.ouhsc.edu**20050930191820 Common pattern of use is grabbing url parameters and doing something with them. with- makes sense here. It is so. ] [taint: add tainted-p Alan-Shields@omrf.ouhsc.edu**20051002005436 Surprisingly enough, it sometimes comes in handy to be able to tell when a value is tainted. Crazy stuff. ] [araneida: add tainted-p to exports Alan-Shields@omrf.ouhsc.edu**20051002005722] [araneida: defurlmethod Alan-Shields@omrf.ouhsc.edu**20051002013953 I'm a bit nuts, I know, but I've always wanted to treat url parameters and body parameters as dispatchable function parameters. ...now you can. More documentation forthcoming. ] [araneida: update todo on defurlmethod Alan-Shields@omrf.ouhsc.edu**20051002022016] [araneida: defurlmethod uses conditions instead of text warnings now Alan-Shields@omrf.ouhsc.edu**20051003191224] [araneida: defurlmethod parameter order issue Alan-Shields@omrf.ouhsc.edu**20051004190942 I forgot that set-difference doesn't guarantee the order of the result set, so I have to remove-if instead. Test added. ] [araneida: update bookmarks for tests Alan-Shields@omrf.ouhsc.edu**20051004191238 I noticed that I hadn't put down the right URLs in the comment bookmarks. Whoops. Fixed. ] [araneida: better error when html element attribute is not a symbol Alan-Shields@omrf.ouhsc.edu**20051004202357 I got tired of receiving '"Internal ID" is not a symbol' in the middle of a huge block of code, not having any clue what was going on. Now it will spit out a more specific error along with the parameters passed. ] [araneida: brain error on parameter order test Alan-Shields@omrf.ouhsc.edu**20051005025311 ...I was NOT actually testing parameter order. I forgot to take the final step. Whoops. Done now. A B C A C B ] [araneida: handle end-of-file while reading from socket with listener Alan-Shields@omrf.ouhsc.edu**20051005231755 It's a pretty unremarkable thing for the client to disconnect in the middle of a request. This patch causes the server to skip on to abort response when it encounters this condition. ] [araneida: wrap evals in test suite with mutex Alan-Shields@omrf.ouhsc.edu**20051005233750 SBCL doesn't seem to like concurrent calls to eval - maybe it's a problem with my macro expansion and threads, I don't know. What I DO know is that wrapping the eval calls in a mutex causes the problem to go away. So guess what I'm doing. ] [araneida: allow forcing serve-event in test suite Alan-Shields@omrf.ouhsc.edu**20051006003153] [araneida: siege benchmark Alan-Shields@omrf.ouhsc.edu**20051006003259 A question was raised on LispWeb about how well Araneida would hold up to repeated requests. This benchmark lets you see for yourself. I found a few bugs using it. ] [araneida: document defurlmethod Alan-Shields@omrf.ouhsc.edu**20051012000412] [araneida: paragraph the paragraphs in urls.html Alan-Shields@omrf.ouhsc.edu**20051012000610] [document append-url Alan-Shields@omrf.ouhsc.edu**20051012000635] [araneida: remember to mention deftaintedurlmethod in the docs Alan-Shields@omrf.ouhsc.edu**20051012001411] [araneida: update release notes for 0.9-a3 Alan-Shields@omrf.ouhsc.edu**20051012001941] [TAG araneida-version-0.9-a3 Alan-Shields@omrf.ouhsc.edu**20051012002144] [TAG UPSTREAM_araneida_0.9-a3 Peter Van Eynde !pvaneynd@debian.org**20051019185244] [first attempt at a modern package Peter Van Eynde !pvaneynd@debian.org**20051019190352] [there are no examples and fixed indent in description Peter Van Eynde !pvaneynd@debian.org**20051019192706] [TAG DEBIAN_araneida_0.9-a3-1 Peter Van Eynde !pvaneynd@debian.org**20051020071136] [token new version Peter Van Eynde !pvaneynd@debian.org**20051020071139] [fix FTBFS by removing files in clean target Peter Van Eynde !pvaneynd@debian.org**20051024191526] [TAG DEBIAN_araneida_0.9-a3-2 Peter Van Eynde !pvaneynd@debian.org**20051024192400] [token new version Peter Van Eynde !pvaneynd@debian.org**20051024192401] [change priority to extra Peter Van Eynde !pvaneynd@debian.org**20051025054519] [now with content again Peter Van Eynde !pvaneynd@debian.org**20051026163825] [fix bug 336051: install also doc in source directory Peter Van Eynde !pvaneynd@debian.org**20051027195850] [TAG DEBIAN_araneida_0.9-a3-4 Peter Van Eynde !pvaneynd@debian.org**20051028200803] [token new version Peter Van Eynde !pvaneynd@debian.org**20051028200858] [araneida: html-escaped-stream Alan-Shields@omrf.ouhsc.edu**20051018190807 Trying to keep track of whether or not you've escaped the HTML properly is quite a pain. Doing it instead at the stream level seems to work out much better. Of course, if you have code that already does escaping then you shouldn't use this call. ] [araneida: link Alan-Shields@omrf.ouhsc.edu**20051018232233 Need to make a urlstring to link to something? Here's your function, baby. Documentation in the docstring. ] [araneida: princ now prints the URL using urlstring. prin1 does the old behavior Alan-Shields@omrf.ouhsc.edu**20051019204405 We now have a human output for our URL objects. This lets you use URLs straight in the HTML tree for the most part. ] [araneida: typo in too-many-urlmethods-matched Alan-Shields@omrf.ouhsc.edu**20051024221146 If you ever have too many urlmethods match, you'll get an error throwing the error. This fixes that. ] [araneida: forgot to update the version number in the asd. Whoops. Alan-Shields@omrf.ouhsc.edu**20051101192354] [urlescape filenames in static-file-handler drewc@tech.coop**20051029010415 filenames can have spaces in them. The patch fixes the handler so that the url foo%20bar.jpg points to 'foo bar.jpg' ] [araneida: read in external files as octets - preparation for bivalent stream support Alan-Shields@omrf.ouhsc.edu**20051101215701 On advice (and repeated advice) from chandler - thanks! ] [araneida: stop checking stream element types in copy stream - bivalent streams are here Alan-Shields@omrf.ouhsc.edu**20051108202920] [araneida: test default key values Alan-Shields@omrf.ouhsc.edu**20051108203003 Someone reported a problem with tainted defaults - checking this out now ] [araneida: give threads a reasonable name Alan-Shields@omrf.ouhsc.edu**20051110000158] [araneida: rebind outputs when creating a new thread - fixes sbcl 0.9.6 Alan-Shields@omrf.ouhsc.edu**20051110210141 In SLIME (warn) was no longer working. Someone on the SLIME list mentioned that this was due to the SBCL thread updates in 0.9.6. Sure enough - rebind them and everything works juuuuust fine. ] [araneida: fix key parameter issue with SBCL 0.9.6 Alan-Shields@omrf.ouhsc.edu**20051110212147 The old SBCL would, if (intern) was passed a symbol, return the symbol. I was accidentally using this. The new SBCL returns nil. All is well, now. ] [araneida: clean up html-stream and add comment tags Alan-Shields@omrf.ouhsc.edu**20051111211823 I wanted to be able to do: '(p (comment ((a :href "blah") "this is a link"))) to yield:

As I'm into that sort of thing. I ended up doing a slight refactoring of html-stream and html-escaped-stream. You can also do '(p ((comment "now with extra commenty goodness!") ((a :href "blah") "this is a link"))) to yield:

So enjoy! ] [araneida: url-query-string-from-alist Alan-Shields@omrf.ouhsc.edu**20051112003232 We have a function (several, even) to get an alist from a url query, but none to do the inverse. As always, my whims are my demands, and so it is. ] [araneida: compatibility with TBNL Alan-Shields@omrf.ouhsc.edu**20051114220656 Using the patches from Bob Hutchison (hutch at recursive.ca) with modifications. This does the following: - :araneida now in *features* - araneida:*araneida-mode* now controls how Araneida parses headers and bodies. This is incompatible with the current patch to TBNL, but I think should work out better in the future. I'll contact Edi about it. - Adds an "unparsed-body" slot to the request class, along with accessors, etc The lispworks compatibility code shall be merged seperately. ] [araneida: lispworks updates from Bob Hutchinson Alan-Shields@omrf.ouhsc.edu**20051114223143 Pulled out of the TBNL update patches at http://common-lisp.net/pipermail/tbnl-devel/2005-March/000237.html ] [araneida: formatting change in daemon.lisp Alan-Shields@omrf.ouhsc.edu**20051114223954] [araneida: ACL compatibility patch from Arthur Lemmens Alan-Shields@omrf.ouhsc.edu**20051114224838 Use make-string instead of make-array to contain the body of a request. Because of bivalent streams element type is really not so good here. ] [araneida: unify html, html-stream, html-escaped-stream Alan-Shields@omrf.ouhsc.edu**20051115013412 There's so much code in common between these functions that I've finally folded them all together. As a result, you can now use the :html-converter trick that was previously only the domain of #'HTML, and #'HTML can use (comment) like the other boys and girls. In addition, they should all now produce the same output (except for escaped, of course). This results in a non-backwards-compatible change, however; the function signature of HTML is now: (defun html (things &optional inline-elements) while it used to be: (defun html (things &key (newline '(p option table tr h1 h2 h3 h4 h5 h6))) Luckily, the old :newline stuff was (declare (ignore'd, so there's no functional difference. ] [araneida: quick optimization for urlstring-escape Alan-Shields@omrf.ouhsc.edu**20051115220259 Someone (can't remember who) was complaining that urlstring-escape was very slow. This version seems to be faster in both the very-long-string case and the bunch-of-short-strings case. Thanks to the #lisp krew for slapping me around a bit when I needed it. ] [araneida: remove comment to code which is no longer there Alan-Shields@omrf.ouhsc.edu**20051115221820] [araneida: eliminate case-sensitivity bug in html Alan-Shields@omrf.ouhsc.edu**20051115221835 Slowly but surely I'm working through here to eliminate places where we rely upon uppercase interning. ] [araneida: integrate Parenscript into the HTML functions Alan-Shields@omrf.ouhsc.edu**20051116000255 If you load Parenscript before loading Araneida, you can now use Parenscript within the HTML generation functions. (span :css (:color "black" :size "200%")) will become and (css (* :border "1px solid black") (div.bl0rg :font-family "serif") (("a:active" "a:hoover") :color "black" :size "200%")) will produce (js-script) is the equivalent for Javascript, and you can call #'JS-INLINE for inline Javascript, just like normal. There will be some docs soon. ] [araneida: css-file and js-file Alan-Shields@omrf.ouhsc.edu**20051116000746 Want to output Parenscript CSS or JS as a file? Now you can. ] [araneida: small update to my internal, not used outside testing suite Alan-Shields@omrf.ouhsc.edu**20051116000831] [araneida: add documentation on Parenscript integration Alan-Shields@omrf.ouhsc.edu**20051116002913] [araneida: small update to my internal testing code Alan-Shields@omrf.ouhsc.edu**20051116002943] [araneida: weakly depend upon parenscript Alan-Shields@omrf.ouhsc.edu**20051122231655 I've submitted a patch to ASDF that allows a system to weakly depend upon another system. Until that is committed, use the horrid hack that does the same thing. ] [araneida: add templates Alan-Shields@omrf.ouhsc.edu**20051129204547 For our workflow we found it easier to have our web designer work in "template land" where she's only concerned with templates and mockups. Mostly a matter of naming convention, really. Then we found out how nice it was for finding where something was being defined and used, and not having conflicts between function names and template names. Templates are defined, called, traced, and untraced. Enjoy! ] [araneida: clean.sh, for cleaning up temporary files Alan-Shields@omrf.ouhsc.edu**20051129204806 I ended up cleaning out a lot of temporary files over and over again. Maybe someone else will find this useful, maybe not. ] [araneida: easy interface to magic tags, as well as some utilities HTMLP and DESTRUCTURE-HTML Alan-Shields@omrf.ouhsc.edu**20051201212407 The HTML code has long allowed custom tags, but you had to know how to use them. So, I wrote a small macro that exposes this feature for people, and added documentation about how to use it. While writing some sample code, I found it useful to have HTMLP and DESTRUCTURE-HTML. ] [araneida: typo in TBNL integration stuff Alan-Shields@omrf.ouhsc.edu**20051201213641] [araneida: document the special comment tag Alan-Shields@omrf.ouhsc.edu**20051201224104] [araneida: document deftemplate Alan-Shields@omrf.ouhsc.edu**20051201224145] [araneida: release notes for 0.90 Alan-Shields@omrf.ouhsc.edu**20051201224214] [araneida: update version number Alan-Shields@omrf.ouhsc.edu**20051201224239] [TAG araneida-version-0.90 Alan-Shields@omrf.ouhsc.edu**20051201224413] [html-string-printing-regression-fix brian@mastenbrook.net**20051202142217] [TAG araneida-version-0.90.1 Alan-Shields@omrf.ouhsc.edu**20051202165019] [TAG UPSTREAM_araneida_0.90.1 Peter Van Eynde !pvaneynd@debian.org**20051212211119] [try out build Peter Van Eynde !pvaneynd@debian.org**20051212211214] [for unstable Peter Van Eynde !pvaneynd@debian.org**20051213115855] [TAG DEBIAN_araneida_0.90.1-1 Peter Van Eynde !pvaneynd@debian.org**20051213175251] [token new version Peter Van Eynde !pvaneynd@debian.org**20051213175252] [add LICENCE-diff to docs, not doc Peter Van Eynde !pvaneynd@debian.org**20051222162920] [Also install doc/new-dispatch-model (Closes: #344390) and prepare for release Peter Van Eynde !pvaneynd@debian.org**20051222163137] [TAG DEBIAN_araneida_0.90.1-2 Peter Van Eynde !pvaneynd@debian.org**20051223124247] [token new version Peter Van Eynde !pvaneynd@debian.org**20051223124256] [added dh-lisp build-depends Peter Van Eynde !pvaneynd@debian.org**20060207134051] [TAG DEBIAN_araneida_0.90.1-3 Peter Van Eynde !pvaneynd@debian.org**20060208072935] [token new version Peter Van Eynde !pvaneynd@debian.org**20060208072950] [updated standard version, note removal of rfc docs Peter Van Eynde !pvaneynd@debian.org**20060514175619] [removal of non-dfsg free rfc documentation Peter Van Eynde !pvaneynd@debian.org**20060514175414] [TAG UPSTREAM_araneida_0.90.1-dfsg Peter Van Eynde !pvaneynd@debian.org**20060514175420] [fixed typo Peter Van Eynde !pvaneynd@debian.org**20060514175708] [moved debhelper in Build-Depends Peter Van Eynde !pvaneynd@debian.org**20060514180713] [TAG DEBIAN_araneida_0.90.1-dfsg-1 Peter Van Eynde !pvaneynd@debian.org**20060515153543] [token new version Peter Van Eynde !pvaneynd@debian.org**20060515153550] [Added XS-X-Vcs-Darcs header Peter Van Eynde !pvaneynd@debian.org**20060925055728] [modified S-X-Vcs-Darcs to XS-Vcs-Darcs field Peter Van Eynde !pvaneynd@debian.org**20061005080104] [From debian bts: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=390272 Peter Van Eynde !pvaneynd@debian.org**20061009081720 and Pierre THIERRY: When I tried to receive big POST requests in multipart/form-data MIME type, araneida failed because it tried to parse the body. The following patch made it work. ] [note patch origin, prepare for release Peter Van Eynde !pvaneynd@debian.org**20061009084104] [remove token new version line Peter Van Eynde !pvaneynd@debian.org**20061009084323] [TAG DEBIAN_araneida_0.90.1-dfsg-2 Peter Van Eynde !pvaneynd@debian.org**20061010081311] [token new version Peter Van Eynde !pvaneynd@debian.org**20061010081313] [fix for 430169: sb-sys:with-enabled-interrupts -> sb-sys:with-interrupts pvaneynd@debian.org**20070710185904] [prepare for release pvaneynd@debian.org**20070710185938] [TAG DEBIAN_araneida_0.90.1-dfsg-3 pvaneynd@debian.org**20070711160508] [token new version pvaneynd@debian.org**20070711160508] [prepare for new release pvaneynd@debian.org**20070916093630] [TAG DEBIAN_araneida_0.90.1-dfsg-4 pvaneynd@debian.org**20070917185702] [token new version pvaneynd@debian.org**20070917185706] [fixed version pvaneynd@debian.org**20071026033120] [Use Vcs-Darcs in control file pvaneynd@debian.org**20071026033525] [Changed to group maintanance pvaneynd@debian.org**20080313223010] [Corrected Vcs-Git control field pvaneynd@debian.org**20080313223010] [Changed to group maintanance pvaneynd@debian.org**20080313223221] [Corrected Vcs-Git control field pvaneynd@debian.org**20080313223221] [swap binary-indep and binary-arch round pvaneynd@debian.org**20080313223328] [Updated Standard Version without real changes pvaneynd@debian.org**20080313223444] [fixed Vcs-Darcs field pvaneynd@debian.org**20080313223733] [Added Homepage field pvaneynd@debian.org**20080313224016] [prepare for release pvaneynd@debian.org**20080313224039]