[cl-xmpp-cvs] CVS update: cl-xmpp/README cl-xmpp/cl-xmpp-sasl.lisp cl-xmpp/cl-xmpp.lisp
Erik Enge
eenge at common-lisp.net
Sat Nov 12 02:29:52 UTC 2005
Update of /project/cl-xmpp/cvsroot/cl-xmpp
In directory common-lisp.net:/tmp/cvs-serv18563
Modified Files:
README cl-xmpp-sasl.lisp cl-xmpp.lisp
Log Message:
fixing a minor bug and making connect do begin-xml-stream for convenience's sake
Date: Sat Nov 12 03:29:51 2005
Author: eenge
Index: cl-xmpp/README
diff -u cl-xmpp/README:1.4 cl-xmpp/README:1.5
--- cl-xmpp/README:1.4 Fri Nov 11 22:20:20 2005
+++ cl-xmpp/README Sat Nov 12 03:29:51 2005
@@ -7,9 +7,6 @@
* (defvar connection (xmpp:connect "username" :hostname "jabber.org"))
-;; initiate XML stream with server
- * (xmpp:begin-xml-stream connection)
-
;; authenticate (or use xmpp:register to make an account)
* (xmpp:auth connection "password" "resource")
Index: cl-xmpp/cl-xmpp-sasl.lisp
diff -u cl-xmpp/cl-xmpp-sasl.lisp:1.3 cl-xmpp/cl-xmpp-sasl.lisp:1.4
--- cl-xmpp/cl-xmpp-sasl.lisp:1.3 Fri Nov 11 23:31:38 2005
+++ cl-xmpp/cl-xmpp-sasl.lisp Sat Nov 12 03:29:51 2005
@@ -1,4 +1,4 @@
-;;;; $Id: cl-xmpp-sasl.lisp,v 1.3 2005/11/11 22:31:38 eenge Exp $
+;;;; $Id: cl-xmpp-sasl.lisp,v 1.4 2005/11/12 02:29:51 eenge Exp $
;;;; $Source: /project/cl-xmpp/cvsroot/cl-xmpp/cl-xmpp-sasl.lisp,v $
;;;; See the LICENSE file for licensing information.
@@ -17,6 +17,10 @@
(add-auth-method :sasl-digest-md5 #'%sasl-digest-md5%)
(defmethod handle-challenge-response ((connection connection) username password mechanism)
+ "Helper method to the sasl authentication methods. Goes through the
+entire SASL challenge/response chain. Returns two values, the first
+is a keyword symbol (:success or :failure) and the second is the last
+stanza received from the server."
(initiate-sasl-authentication connection mechanism)
(let ((initial-challenge (receive-stanza connection)))
(if (eq (name initial-challenge) :challenge)
@@ -33,17 +37,18 @@
(format *debug-stream* "~&challenge-string: ~a~%" challenge-string)
(format *debug-stream* "response: ~a~%" response)
(if (eq response :failure)
- (error "SASL failure: ~a." challenge-string)
+ (values :failure initial-challenge)
(progn
(send-challenge-response connection base64-response)
(let ((second-challenge (receive-stanza connection)))
(if (eq (name second-challenge) :challenge)
(progn
(send-second-response connection)
- ; This should return either :success or :failure.
- (name (receive-stanza connection)))
- (error "Expected second challenge, got: ~a." second-challenge))))))
- (error "Expected initial challenge, got: ~a." initial-challenge))))
+ (let ((final-reply (receive-stanza connection)))
+ ; This should return either :success or :failure.
+ (values (name final-reply) final-reply)))
+ (values :failure second-challenge))))))
+ (values :failure initial-challenge))))
(defmethod initiate-sasl-authentication ((connection connection) mechanism)
(with-xml-stream (stream connection)
Index: cl-xmpp/cl-xmpp.lisp
diff -u cl-xmpp/cl-xmpp.lisp:1.10 cl-xmpp/cl-xmpp.lisp:1.11
--- cl-xmpp/cl-xmpp.lisp:1.10 Fri Nov 11 22:20:20 2005
+++ cl-xmpp/cl-xmpp.lisp Sat Nov 12 03:29:51 2005
@@ -1,4 +1,4 @@
-;;;; $Id: cl-xmpp.lisp,v 1.10 2005/11/11 21:20:20 eenge Exp $
+;;;; $Id: cl-xmpp.lisp,v 1.11 2005/11/12 02:29:51 eenge Exp $
;;;; $Source: /project/cl-xmpp/cvsroot/cl-xmpp/cl-xmpp.lisp,v $
;;;; See the LICENSE file for licensing information.
@@ -58,14 +58,16 @@
(format stream " (open)")
(format stream " (closed)"))))
-(defun connect (username &key (hostname *default-hostname*) (port *default-port*))
+(defun connect (&key (hostname *default-hostname*) (port *default-port*))
"Open TCP connection to hostname."
- (let ((stream (trivial-sockets:open-stream
- hostname port :element-type '(unsigned-byte 8))))
- (make-instance 'connection
- :server-stream stream
- :hostname hostname
- :port port)))
+ (let* ((stream (trivial-sockets:open-stream
+ hostname port :element-type '(unsigned-byte 8)))
+ (connection (make-instance 'connection
+ :server-stream stream
+ :hostname hostname
+ :port port)))
+ (begin-xml-stream connection)
+ connection))
(defmethod connectedp ((connection connection))
"Returns t if `connection' is connected to a server and is ready for
More information about the Cl-xmpp-cvs
mailing list