anchor.diff:      :accessor user-agent
       :initform +user-agent+
       :initarg :user-agent)
  -   (current-link
  -    :accessor current-link
  +   (current-url
  +    :accessor current-url
       :initform nil)
      (errors
       :accessor errors
  
positive.code: (defmethod submit ((agent agent) (form form))
    "Much the same as fetch, but with a form as the action base."
    ;; Get the things I want out of the agent before purging.
    (let ((old-link (current-link agent))
  	(action (action form))
  	(verb (verb form))
  	(parameters (to-drakma-parameters form))) ; to be used as drakma's
      (purge agent) ; Clean out old stuff.
      ;;; Straighten links.
      (setf (current-link agent) (make-canonical action :relative-to old-link))
      ;; Run.
      (with-fetch-attempt agent +agent-timeout+
        (http-request
         (current-link agent)
         ;; Verbs need to be either :POST or :GET
         :method (if (or (eq verb :POST) (string-equal verb "POST")) :POST :GET)
         :redirect 100
  
negative.code: 		 ((search "png" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ((search "gif" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ((search "pdf" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ;; TODO: Or, for that matter, tarballs.
  		 ((search "tgz" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ((search "bz2" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ((search "zip" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ((search "gzip" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 ((search "gz" (cdr (assoc :CONTENT-TYPE headers))) "")
  		 (t (fill-with-content ,agent body)))
  	       (setf (code ,agent) response-code)
  	       ;; Return if we made it without an error.
  