[bknr-cvs] edi changed trunk/thirdparty/hunchentoot/

BKNR Commits bknr at bknr.net
Wed Feb 18 19:58:57 UTC 2009


Revision: 4280
Author: edi
URL: http://bknr.net/trac/changeset/4280

Checkpoint

U   trunk/thirdparty/hunchentoot/acceptor.lisp
U   trunk/thirdparty/hunchentoot/doc/index.xml
U   trunk/thirdparty/hunchentoot/request.lisp
U   trunk/thirdparty/hunchentoot/session.lisp

Modified: trunk/thirdparty/hunchentoot/acceptor.lisp
===================================================================
--- trunk/thirdparty/hunchentoot/acceptor.lisp	2009-02-18 14:57:40 UTC (rev 4279)
+++ trunk/thirdparty/hunchentoot/acceptor.lisp	2009-02-18 19:58:57 UTC (rev 4280)
@@ -63,12 +63,13 @@
 symbol naming) a class which inherits from REPLY.  The default is the
 symbol REPLY.")
    (request-dispatcher :initarg :request-dispatcher
-                     :accessor acceptor-request-dispatcher
-                     :documentation "A designator for the request
+                       :accessor acceptor-request-dispatcher
+                       :documentation "A designator for the request
 dispatcher function used by this acceptor.  A function which accepts a
 REQUEST object and calls a request handler of its choice \(and returns
 its return value).  The default is the unexported symbol
-LIST-REQUEST-DISPATCHER which works through the list *DISPATCH-TABLE*.")
+LIST-REQUEST-DISPATCHER which works through the list
+*DISPATCH-TABLE*.")
    (taskmaster :initarg :taskmaster
                :reader acceptor-taskmaster
                :documentation "The taskmaster \(i.e. an instance of a
@@ -220,8 +221,14 @@
 stream object in SOCKET.  It reads the request headers, sets up the
 request and reply objects, and hands over to PROCESS-REQUEST.  This is
 done in a loop until the stream has to be closed or until a connection
-timeout occurs."))
+timeout occurs.
 
+It is probably not a good idea to re-implement this method until you
+really, really know what you're doing, but you can for example write
+an around method specialized for your subclass of ACCEPTOR which binds
+or rebinds special variables which can then be accessed by your
+handlers."))
+
 (defgeneric acceptor-ssl-p (acceptor) 
   (:documentation "Returns a true value if ACCEPTOR uses SSL
 connections.  The default is to unconditionally return NIL and
@@ -402,9 +409,9 @@
   nil)
 
 (defun list-request-dispatcher (request)
-  "The default handler selector which selects a request handler based
-on a list of individual request dispatchers all of which can either
-return a handler or neglect by returning NIL."
+  "The default request dispatcher which selects a request handler
+based on a list of individual request dispatchers all of which can
+either return a handler or neglect by returning NIL."
   (loop for dispatcher in *dispatch-table*
         for action = (funcall dispatcher request)
         when action return (funcall action)

Modified: trunk/thirdparty/hunchentoot/doc/index.xml
===================================================================
--- trunk/thirdparty/hunchentoot/doc/index.xml	2009-02-18 14:57:40 UTC (rev 4279)
+++ trunk/thirdparty/hunchentoot/doc/index.xml	2009-02-18 19:58:57 UTC (rev 4280)
@@ -605,6 +605,15 @@
 handler for the request and sends its reply to the client.  This is
 done in a loop until the stream has to be closed or until a connection
 timeout occurs.
+
+<p>
+It is probably not a good idea to re-implement this method until you
+really, really know what you're doing, but you can for example write
+an around method specialized for your subclass
+of <clix:ref>ACCEPTOR</clix:ref> which binds or rebinds special
+variables which can then be accessed by
+your <a href="#handlers">handlers</a>.
+</p>
     </clix:description>
   </clix:function>
 

Modified: trunk/thirdparty/hunchentoot/request.lisp
===================================================================
--- trunk/thirdparty/hunchentoot/request.lisp	2009-02-18 14:57:40 UTC (rev 4279)
+++ trunk/thirdparty/hunchentoot/request.lisp	2009-02-18 19:58:57 UTC (rev 4280)
@@ -96,11 +96,18 @@
 the REQUEST-CLASS slot of the ACCEPTOR class."))
 
 (defgeneric process-request (request)
-  (:documentation "This function is called by PROCESS-CONNECTION after the incoming
-headers have been read.  It selects and calls a handler and sends the
-output of this handler to the client using START-OUTPUT.  It also sets
-up simple error handling for the actual request handler.
+  (:documentation "This function is called by PROCESS-CONNECTION after
+the incoming headers have been read.  It selects and calls a handler
+and sends the output of this handler to the client using START-OUTPUT.
+It also sets up simple error handling for the actual request handler.
+Note that PROCESS-CONNECTION is called once per connection and loops
+in case of a persistent connection while PROCESS-REQUEST is called
+anew for each request.
 
+Like PROCESS-CONNECTION, this might be a good place to introduce
+around methods which bind special variables or do other interesting
+things.
+
 The return value of this function is ignored."))
 
 (defun convert-hack (string external-format)
@@ -204,9 +211,9 @@
         (setf (return-code*) +http-bad-request+)))))
 
 (defmethod process-request (request)
-
-  "Standard implementation for processing a request."
-
+  "Standard implementation for processing a request.  You should not
+change or replace this functionality unless you know what you're
+doing."
   (let (*tmp-files* *headers-sent*)
     (unwind-protect
          (let* ((*request* request))

Modified: trunk/thirdparty/hunchentoot/session.lisp
===================================================================
--- trunk/thirdparty/hunchentoot/session.lisp	2009-02-18 14:57:40 UTC (rev 4279)
+++ trunk/thirdparty/hunchentoot/session.lisp	2009-02-18 19:58:57 UTC (rev 4280)
@@ -127,11 +127,11 @@
 (defun encode-session-string (id user-agent remote-addr start)
   "Creates a uniquely encoded session string based on the values ID,
 USER-AGENT, REMOTE-ADDR, and START"
-  ;; *SESSION-SECRET* is used twice due to known theoretical
-  ;; vulnerabilities of MD5 encoding
   (unless (boundp '*session-secret*)
     (hunchentoot-warn "Session secret is unbound.  Using Lisp's RANDOM function to initialize it.")
     (reset-session-secret))
+  ;; *SESSION-SECRET* is used twice due to known theoretical
+  ;; vulnerabilities of MD5 encoding
   (md5-hex (concatenate 'string
 			*session-secret*
 			(md5-hex (format nil "~A~A~@[~A~]~@[~A~]~A"





More information about the Bknr-cvs mailing list