diff -ruN msnlib-3.0/doc/Changelog msnlib-3.1/doc/Changelog
--- msnlib-3.0/doc/Changelog	2003-09-24 14:29:48.000000000 -0300
+++ msnlib-3.1/doc/Changelog	2003-09-28 10:01:51.000000000 -0300
@@ -1,3 +1,17 @@
+28 Sep 03 10.01.35 - Alberto <albertogli@telpin.com.ar>
+ * tag: 3.1 tag
+
+28 Sep 03 09.59.14 - Alberto <albertogli@telpin.com.ar>
+ * msnlib: fix SSL error handling, now raise the error properly
+
+27 Sep 03 15.58.21 - Alberto <albertogli@telpin.com.ar>
+ * msn: ignore gaim's x-clientcaps messages
+ * msn: allow spaces in nick
+
+25 Sep 03 23.02.38 - Alberto <albertogli@telpin.com.ar>
+ * msn: fix crashes when sending a null message
+ * msn: fix message content mangling when the first character matched the nick
+
 24 Sep 03 14.29.17 - Alberto <albertogli@telpin.com.ar>
  * tag: 3.0
  * doc: small updates
diff -ruN msnlib-3.0/msn msnlib-3.1/msn
--- msnlib-3.0/msn	2003-09-24 14:28:44.000000000 -0300
+++ msnlib-3.1/msn	2003-09-28 10:01:00.000000000 -0300
@@ -937,9 +937,8 @@
 		m.invite(email, dst_sbd)
 			
 	elif cmd == 'nick':		# change our nick
-		p = params.split()
-		if len(p) != 1: return 'Error parsing command'
-		nick = p[0]
+		if len(params) < 1: return 'Error parsing command'
+		nick = params
 		m.change_nick(nick)
 	
 	elif cmd == 'info':		# user info
@@ -987,11 +986,8 @@
 				return 'Please enter a nick and a message'
 			nick = p[0]
 			email = nick2email(nick)
-			# get the beginning, that is the position of the first
-			# word behind the nick
-			begin = params.find(p[1])
-			# and use it to build the message; all this to
-			# preserve whitespace properly
+			# begin the message content after the nick
+			begin = len(nick + ' ')
 			msg = params[begin:]
 		elif cmd == 'r':
 			email = last_received
@@ -1148,6 +1144,9 @@
 			printl('%s' % nick, c.cyan, 1)
 			printl(' is typing\n', c.magenta)
 		m.users[email].priv['typing'] = time.time()
+	elif headers.has_key('Content-Type') and headers['Content-Type'] == 'text/x-clientcaps':
+		# ignore the x-clientcaps messages generated from gaim
+		pass
 	else:
 		# messages
 		m.users[email].priv['typing'] = 0
@@ -1295,7 +1294,7 @@
 #
 # now the real thing
 #
-printl('* MSN Client (3.0) *\n', c.yellow, 1)
+printl('* MSN Client (3.1) *\n', c.yellow, 1)
 
 # first, the configuration
 printl('Loading config... ', c.green, 1)
diff -ruN msnlib-3.0/msnlib.py msnlib-3.1/msnlib.py
--- msnlib-3.0/msnlib.py	2003-09-24 14:29:14.000000000 -0300
+++ msnlib-3.1/msnlib.py	2003-09-28 10:01:11.000000000 -0300
@@ -14,7 +14,7 @@
 """
 
 # constants
-VERSION = 0x0300
+VERSION = 0x0301
 LOGIN_HOST = 'messenger.hotmail.com'
 LOGIN_PORT = 1863
 
@@ -531,7 +531,8 @@
 			# for now we raise 911, which means authentication
 			# failed; but maybe we can get more detailed
 			# information
-			raise 'AuthError', 911
+			raise 'AuthError', [911, 'SSL Authentication failed']
+
 		try:
 			ainfo = resp.getheader('Authentication-Info')
 		except:
diff -ruN msnlib-3.0/setup.py msnlib-3.1/setup.py
--- msnlib-3.0/setup.py	2003-09-24 14:29:05.000000000 -0300
+++ msnlib-3.1/setup.py	2003-09-28 10:01:19.000000000 -0300
@@ -2,7 +2,7 @@
 from distutils.core import setup
 
 setup(name="msnlib",
-	version="3.0",
+	version="3.1",
 	description="MSN Messenger Library and Client",
 	author="Alberto Bertogli",
 	author_email="albertogli@telpin.com.ar",
