anchor.diff:  	    (ccl::stream-io-error stream (- error) "read"))))))
   
   #+sbcl
  -(defun input-wait (stream fd deadline)
  +(defun input-wait (stream fd deadline &optional read-timeout)
     (declare (ignore stream))
     (let ((timeout
  +	 ;;
  +	 ;; if deadline is nil, then write-timeout is looked to as the timeout which could also be nil
  +	 ;;
   	 ;; *deadline* is handled by wait-until-fd-usable automatically,
   	 ;; but we need to turn a user-specified deadline into a timeout
  -	 (when deadline
  -	   (/ (- deadline (get-internal-real-time))
  -	      internal-time-units-per-second))))
  -    (sb-sys:wait-until-fd-usable fd :input timeout)))
  +	 (if deadline
  +	     (/ (- deadline (get-internal-real-time))
  +		internal-time-units-per-second)
  +	     read-timeout)))
  +    (unless (sb-sys:wait-until-fd-usable fd :input timeout)
  +      (error (make-condition 'ssl-timeout))))) 
   
   #-(or clozure-common-lisp sbcl)
   (defun input-wait (stream fd deadline)
  
positive.code:   (cffi:load-foreign-library 'libssl)
    (cffi:load-foreign-library 'libeay32)
    (setf *ssl-global-context* nil)
    (setf *ssl-global-method* nil))
  
negative.code:   (setf *ssl-global-context* (ssl-ctx-new *ssl-global-method*))
    (ssl-ctx-set-session-cache-mode *ssl-global-context* 3)
    (ssl-ctx-set-default-passwd-cb *ssl-global-context* 
                                   (cffi:callback pem-password-callback))
    (ssl-ctx-set-tmp-rsa-callback *ssl-global-context* (cffi:callback need-tmp-rsa-callback)))
  
  (defun ensure-initialized (&key (method 'ssl-v23-method) (rand-seed nil))
    "In most cases you do *not* need to call this function, because it 
  