Update of /project/cl-xmpp/cvsroot/cl-xmpp In directory clnet:/tmp/cvs-serv3081
Modified Files: cl-xmpp.lisp Log Message: Fixed READ-STANZA for recent CXML versions. Kludge. Please improve.
--- /project/cl-xmpp/cvsroot/cl-xmpp/cl-xmpp.lisp 2006/08/28 21:17:08 1.28 +++ /project/cl-xmpp/cvsroot/cl-xmpp/cl-xmpp.lisp 2007/03/03 18:42:08 1.29 @@ -1,4 +1,4 @@ -;;;; $Id: cl-xmpp.lisp,v 1.28 2006/08/28 21:17:08 jstecklina Exp $ +;;;; $Id: cl-xmpp.lisp,v 1.29 2007/03/03 18:42:08 jstecklina Exp $ ;;;; $Source: /project/cl-xmpp/cvsroot/cl-xmpp/cl-xmpp.lisp,v $
;;;; See the LICENSE file for licensing information. @@ -316,6 +316,16 @@ (when stanza-callback (car (funcall stanza-callback stanza connection :dom-repr dom-repr)))))))
+;;; XXX: Kludge. Newer versions of CXML rebind *namespace-bindings* +;;; inside of parse-xstream, so the old method of augmenting +;;; *namespace-bindings* inside of read-stanza does not work any +;;; longer. - Julian Stecklina (Mar 03, 2007) + +(unless (assoc #"stream" cxml::*initial-namespace-bindings* + :test #'runes:rod=) + (push (cons #"stream" #"http://etherx.jabber.org/streams") + cxml::*initial-namespace-bindings*)) + (defun read-stanza (connection) (unless (server-xstream connection) (setf (server-xstream connection) @@ -327,13 +337,9 @@ :uri nil)))) (force-output (server-stream connection)) (catch 'stanza - (let ((cxml::*namespace-bindings* - (acons #"stream" - #"http://etherx.jabber.org/streams" - cxml::*namespace-bindings*))) - (cxml::parse-xstream (server-xstream connection) - (make-instance 'stanza-handler)) - (runes::write-xstream-buffer (server-xstream connection))))) + (cxml::parse-xstream (server-xstream connection) + (make-instance 'stanza-handler)) + (runes::write-xstream-buffer (server-xstream connection))))
(defmacro with-xml-stream ((stream connection) &body body) "Helper macro to make it easy to control outputting XML