diff -ruN msnlib-3.3/doc/Changelog msnlib-3.4/doc/Changelog
--- msnlib-3.3/doc/Changelog	2003-11-12 12:53:17.000000000 -0300
+++ msnlib-3.4/doc/Changelog	2004-03-29 23:55:23.000000000 -0300
@@ -1,9 +1,38 @@
+29 Mar 04 23.55.18 - Alberto <albertogli@telpin.com.ar>
+ * tag: 3.4 tag
+
+22 Mar 04 17.45.29 - Alberto <albertogli@telpin.com.ar>
+ * msn: change initial status after we got the full user list; this should fix
+	the problem that all the list appeared offline, but it needs testing
+
+21 Mar 04 21.43.39 - Alberto <albertogli@telpin.com.ar>
+ * msn: remove space after the first line which that messed up NetBSD. Thanks
+	to Cameron Kaiser.
+ * msn: allow Ctrl+U to clear the command line. Patch by Cameron Kaiser.
+
+01 Mar 04 04.33.38 - Alberto <albertogli@telpin.com.ar>
+ * msn: add 'ren' command to rename users
+
+20 Dec 03 22.29.01 - Alberto <albertogli@telpin.com.ar>
+ * msn: handle a crash when typing space and tab by doing proper param
+	checking in tab handling
+
+10 Dec 03 23.16.52 - Alberto <albertogli@telpin.com.ar>
+ * doc: update license to OSL v2.0
+
+13 Nov 03 11.47.09 - Alberto <albertogli@telpin.com.ar>
+ * msncb, msn: add more information to XFRError to see if we can get what is
+	causing it
+
+12 Nov 03 13.13.27 - Alberto <albertogli@telpin.com.ar>
+ * doc: update URL
+
 12 Nov 03 12.52.27 - Alberto <albertogli@telpin.com.ar>
  * tag: 3.3 tag
 
 12 Nov 03 00.06.32 - Alberto <albertogli@telpin.com.ar>
  * msn: handle socket exceptions more properly so we cleanup the console on
-		the exit path even when the md is down
+	the exit path even when the md is down
 
 11 Nov 03 23.35.05 - Alberto <albertogli@telpin.com.ar>
  * msnlib: handle some server errors while logging in
diff -ruN msnlib-3.3/doc/LICENSE msnlib-3.4/doc/LICENSE
--- msnlib-3.3/doc/LICENSE	2003-05-20 18:51:13.000000000 -0300
+++ msnlib-3.4/doc/LICENSE	2003-12-10 23:16:22.000000000 -0300
@@ -1,6 +1,6 @@
 
 This project, 'msnlib', is copyrighted by Alberto Bertogli and licensed under
-the "Open Software License v1.1" as obtained from www.opensource.org (and
+the Open Software License version 2.0 as obtained from www.opensource.org (and
 included here-in for easy reference) (that license itself is copyrighted by
 Larry Rosen).
 
@@ -12,30 +12,22 @@
 		Alberto Bertogli
 		20 May 2003
 
+-------------------------------------------------------------------------
 
-[ This copy of the license is the flat-text version of original,
-  available in its full glory at
 
-	 http://www.opensource.org/licenses/osl.php
+Open Software License
+ v. 2.0
 
-  please refer to there for the authorative and slightly more
-  pretty-printed version ]
-
-------
-
-			The Open Software License
-			v. 1.1
-
-This Open Software License (the "License") applies to any original work of 
-authorship (the "Original Work") whose owner (the "Licensor") has placed the 
-following notice immediately following the copyright notice for the Original 
+This Open Software License (the "License") applies to any original work of
+authorship (the "Original Work") whose owner (the "Licensor") has placed the
+following notice immediately following the copyright notice for the Original
 Work:
 
-	Licensed under the Open Software License version 1.1
+	Licensed under the Open Software License version 2.0
 
 
-1) Grant of Copyright License. Licensor hereby grants You a world-wide, 
-royalty-free, non-exclusive, perpetual, non-sublicenseable license to do the 
+1) Grant of Copyright License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license to do the
 following:
 
   a) to reproduce the Original Work in copies;
@@ -50,141 +42,145 @@
 
   d) to perform the Original Work publicly; and
 
-  e) to display the Original Work publicly. 
+  e) to display the Original Work publicly.
 
-2) Grant of Patent License. Licensor hereby grants You a world-wide, 
-royalty-free, non-exclusive, perpetual, non-sublicenseable license, under 
-patent claims owned or controlled by the Licensor that are embodied in the 
-Original Work as furnished by the Licensor ("Licensed Claims") to make, use, 
-sell and offer for sale the Original Work. Licensor hereby grants You a 
-world-wide, royalty-free, non-exclusive, perpetual, non-sublicenseable license 
-under the Licensed Claims to make, use, sell and offer for sale Derivative Works.
-
-3) Grant of Source Code License. The term "Source Code" means the preferred 
-form of the Original Work for making modifications to it and all available 
-documentation describing how to modify the Original Work. Licensor hereby 
-agrees to provide a machine-readable copy of the Source Code of the Original 
-Work along with each copy of the Original Work that Licensor distributes. 
-Licensor reserves the right to satisfy this obligation by placing a 
-machine-readable copy of the Source Code in an information repository reasonably 
-calculated to permit inexpensive and convenient access by You for as long as
- Licensor continues to distribute the Original Work, and by publishing the 
-address of that information repository in a notice immediately following the 
-copyright notice that applies to the Original Work.
-
-
-4) Exclusions From License Grant. Nothing in this License shall be deemed to 
-grant any rights to trademarks, copyrights, patents, trade secrets or any 
-other intellectual property of Licensor except as expressly stated herein. No 
-patent license is granted to make, use, sell or offer to sell embodiments of 
-any patent claims other than the Licensed Claims defined in Section 2. No 
-right is granted to the trademarks of Licensor even if such marks are included 
-in the Original Work. Nothing in this License shall be interpreted to prohibit 
-Licensor from licensing under different terms from this License any Original 
-Work that Licensor otherwise would have a right to license.
-
-5) External Deployment. The term "External Deployment" means the use or 
-distribution of the Original Work or Derivative Works in any way such that the 
-Original Work or Derivative Works may be used by anyone other than You, 
-whether the Original Work or Derivative Works are distributed to those persons 
-or made available as an application intended for use over a computer network. 
-As an express condition for the grants of license hereunder, You agree that 
-any External Deployment by You of a Derivative Work shall be deemed a 
-distribution and shall be licensed to all under the terms of this License, as 
+2) Grant of Patent License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
+claims owned or controlled by the Licensor that are embodied in the Original
+Work as furnished by the Licensor, to make, use, sell and offer for sale the
+Original Work and Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred
+form of the Original Work for making modifications to it and all available
+documentation describing how to modify the Original Work. Licensor hereby
+agrees to provide a machine-readable copy of the Source Code of the Original
+Work along with each copy of the Original Work that Licensor distributes.
+Licensor reserves the right to satisfy this obligation by placing a
+machine-readable copy of the Source Code in an information repository
+reasonably calculated to permit inexpensive and convenient access by You for
+as long as Licensor continues to distribute the Original Work, and by
+publishing the address of that information repository in a notice immediately
+following the copyright notice that applies to the Original Work.
+
+4) Exclusions From License Grant. Neither the names of Licensor, nor the names
+of any contributors to the Original Work, nor any of their trademarks or
+service marks, may be used to endorse or promote products derived from this
+Original Work without express prior written permission of the Licensor.
+Nothing in this License shall be deemed to grant any rights to trademarks,
+copyrights, patents, trade secrets or any other intellectual property of
+Licensor except as expressly stated herein. No patent license is granted to
+make, use, sell or offer to sell embodiments of any patent claims other than
+the licensed claims defined in Section 2. No right is granted to the
+trademarks of Licensor even if such marks are included in the Original Work.
+Nothing in this License shall be interpreted to prohibit Licensor from
+licensing under different terms from this License any Original Work that
+Licensor otherwise would have a right to license.
+
+5) External Deployment. The term "External Deployment" means the use or
+distribution of the Original Work or Derivative Works in any way such that the
+Original Work or Derivative Works may be used by anyone other than You,
+whether the Original Work or Derivative Works are distributed to those persons
+or made available as an application intended for use over a computer network.
+As an express condition for the grants of license hereunder, You agree that
+any External Deployment by You of a Derivative Work shall be deemed a
+distribution and shall be licensed to all under the terms of this License, as
 prescribed in section 1(c) herein.
 
-6) Attribution Rights. You must retain, in the Source Code of any Derivative 
-Works that You create, all copyright, patent or trademark notices from the 
-Source Code of the Original Work, as well as any notices of licensing and any 
-descriptive text identified therein as an "Attribution Notice." You must cause 
-the Source Code for any Derivative Works that You create to carry a prominent 
-Attribution Notice reasonably calculated to inform recipients that You have 
-modified the Original Work.
-
-7) Warranty and Disclaimer of Warranty. Licensor warrants that the copyright 
-in and to the Original Work is owned by the Licensor or that the Original Work 
-is distributed by Licensor under a valid current license from the copyright 
-owner. Except as expressly stated in the immediately proceeding sentence, the 
-Original Work is provided under this License on an "AS IS" BASIS and WITHOUT 
-WARRANTY, either express or implied, including, without limitation, the 
-warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR 
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. 
-This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No 
-license to Original Work is granted hereunder except under this disclaimer.
-
-8) Limitation of Liability. Under no circumstances and under no legal theory, 
-whether in tort (including negligence), contract, or otherwise, shall the 
-Licensor be liable to any person for any direct, indirect, special, incidental, 
-or consequential damages of any character arising as a result of this License 
-or the use of the Original Work including, without limitation, damages for 
-loss of goodwill, work stoppage, computer failure or malfunction, or any and 
-all other commercial damages or losses. This limitation of liability shall not 
-apply to liability for death or personal injury resulting from Licensor's 
-negligence to the extent applicable law prohibits such limitation. Some 
-jurisdictions do not allow the exclusion or limitation of incidental or 
-consequential damages, so this exclusion and limitation may not apply to You.
-
-
-9) Acceptance and Termination. If You distribute copies of the Original Work 
-or a Derivative Work, You must make a reasonable effort under the circumstances 
-to obtain the express and volitional assent of recipients to the terms of this 
-License. Nothing else but this License (or another written agreement between 
-Licensor and You) grants You permission to create Derivative Works based upon 
-the Original Work or to exercise any of the rights granted in Sections 1 herein, 
-and any attempt to do so except under the terms of this License (or another 
-written agreement between Licensor and You) is expressly prohibited by U.S. 
-copyright law, the equivalent laws of other countries, and by international 
-treaty. Therefore, by exercising any of the rights granted to You in Sections 
-1 herein, You indicate Your acceptance of this License and all of its terms and 
-conditions. This License shall terminate immediately and you may no longer 
-exercise any of the rights granted to You by this License upon Your failure to 
-honor the proviso in Section 1(c) herein.
-
-10) Mutual Termination for Patent Action. This License shall terminate 
-automatically and You may no longer exercise any of the rights granted to You 
-by this License if You file a lawsuit in any court alleging that any OSI 
-Certified open source software that is licensed under any license containing 
-this "Mutual Termination for Patent Action" clause infringes any patent claims 
-that are essential to use that software.
-
-11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this 
-License may be brought only in the courts of a jurisdiction wherein the Licensor 
-resides or in which Licensor conducts its primary business, and under the laws 
-of that jurisdiction excluding its conflict-of-law provisions. The application 
-of the United Nations Convention on Contracts for the International Sale of 
-Goods is expressly excluded. Any use of the Original Work outside the scope of 
-this License or after its termination shall be subject to the requirements and 
-penalties of the U.S. Copyright Act, 17 U.S.C. å¤ 101 et seq., the equivalent 
-laws of other countries, and international treaty. This section shall survive 
-the termination of this License.
-
-12) Attorneys Fees. In any action to enforce the terms of this License or 
-seeking damages relating thereto, the prevailing party shall be entitled to 
-recover its costs and expenses, including, without limitation, reasonable 
-attorneys' fees and costs incurred in connection with such action, including 
-any appeal of such action. This section shall survive the termination of this 
+6) Attribution Rights. You must retain, in the Source Code of any Derivative
+Works that You create, all copyright, patent or trademark notices from the
+Source Code of the Original Work, as well as any notices of licensing and any
+descriptive text identified therein as an "Attribution Notice." You must cause
+the Source Code for any Derivative Works that You create to carry a prominent
+Attribution Notice reasonably calculated to inform recipients that You have
+modified the Original Work. 
+
+7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
+the copyright in and to the Original Work and the patent rights granted herein
+by Licensor are owned by the Licensor or are sublicensed to You under the
+terms of this License with the permission of the contributor(s) of those
+copyrights and patent rights. Except as expressly stated in the immediately
+proceeding sentence, the Original Work is provided under this License on an
+"AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including,
+without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE
+ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an
+essential part of this License. No license to Original Work is granted
+hereunder except under this disclaimer. 
+
+8) Limitation of Liability. Under no circumstances and under no legal theory,
+whether in tort (including negligence), contract, or otherwise, shall the
+Licensor be liable to any person for any direct, indirect, special,
+incidental, or consequential damages of any character arising as a result of
+this License or the use of the Original Work including, without limitation,
+damages for loss of goodwill, work stoppage, computer failure or malfunction,
+or any and all other commercial damages or losses. This limitation of
+liability shall not apply to liability for death or personal injury resulting
+from Licensor's negligence to the extent applicable law prohibits such
+limitation. Some jurisdictions do not allow the exclusion or limitation of
+incidental or consequential damages, so this exclusion and limitation may not
+apply to You. 
+
+9) Acceptance and Termination. If You distribute copies of the Original Work
+or a Derivative Work, You must make a reasonable effort under the
+circumstances to obtain the express assent of recipients to the terms of this
+License. Nothing else but this License (or another written agreement between
+Licensor and You) grants You permission to create Derivative Works based upon
+the Original Work or to exercise any of the rights granted in Section 1
+herein, and any attempt to do so except under the terms of this License (or
+another written agreement between Licensor and You) is expressly prohibited by
+U.S.  copyright law, the equivalent laws of other countries, and by
+international treaty. Therefore, by exercising any of the rights granted to
+You in Section 1 herein, You indicate Your acceptance of this License and all
+of its terms and conditions. This License shall terminate immediately and you
+may no longer exercise any of the rights granted to You by this License upon
+Your failure to honor the proviso in Section 1(c) herein.
+
+10) Termination for Patent Action. This License shall terminate automatically
+and You may no longer exercise any of the rights granted to You by this
+License as of the date You commence an action, including a cross-claim or
+counterclaim, for patent infringement (i) against Licensor with respect to a
+patent applicable to software or (ii) against any entity with respect to a
+patent applicable to the Original Work (but excluding combinations of the
+Original Work with other software or hardware).
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
+License may be brought only in the courts of a jurisdiction wherein the
+Licensor resides or in which Licensor conducts its primary business, and under
+the laws of that jurisdiction excluding its conflict-of-law provisions. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any use of the Original
+Work outside the scope of this License or after its termination shall be
+subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C.
+101 et seq., the equivalent laws of other countries, and international treaty.
+This section shall survive the termination of this License.
+
+12) Attorneys Fees. In any action to enforce the terms of this License or
+seeking damages relating thereto, the prevailing party shall be entitled to
+recover its costs and expenses, including, without limitation, reasonable
+attorneys' fees and costs incurred in connection with such action, including
+any appeal of such action. This section shall survive the termination of this
 License.
 
-13) Miscellaneous. This License represents the complete agreement concerning 
-the subject matter hereof. If any provision of this License is held to be 
-unenforceable, such provision shall be reformed only to the extent necessary 
+13) Miscellaneous. This License represents the complete agreement concerning
+the subject matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent necessary
 to make it enforceable.
 
-14) Definition of "You" in This License. "You" throughout this License, 
-whether in upper or lower case, means an individual or a legal entity exercising 
-rights under, and complying with all of the terms of, this License. For legal 
-entities, "You" includes any entity that controls, is controlled by, or is under 
-common control with you. For purposes of this definition, "control" means (i) 
-the power, direct or indirect, to cause the direction or management of such 
-entity, whether by contract or otherwise, or (ii) ownership of fifty percent 
-(50%) or more of the outstanding shares, or (iii) beneficial ownership of such 
-entity.
+14) Definition of "You" in This License. "You" throughout this License,
+whether in upper or lower case, means an individual or a legal entity
+exercising rights under, and complying with all of the terms of, this License.
+For legal entities, "You" includes any entity that controls, is controlled by,
+or is under common control with you. For purposes of this definition,
+"control" means (i) the power, direct or indirect, to cause the direction or
+management of such entity, whether by contract or otherwise, or (ii) ownership
+of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
+ownership of such entity.
 
-15) Right to Use. You may use the Original Work in all ways not otherwise 
-restricted or conditioned by this License or by law, and Licensor promises not 
+15) Right to Use. You may use the Original Work in all ways not otherwise
+restricted or conditioned by this License or by law, and Licensor promises not
 to interfere with or be responsible for such uses by You.
 
-This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved. 
-Permission is hereby granted to copy and distribute this license without 
-modification. This license may not be modified without the express written 
+This license is Copyright (C) 2003 Lawrence E. Rosen. All rights reserved.
+Permission is hereby granted to copy and distribute this license without
+modification. This license may not be modified without the express written
 permission of its copyright owner.
diff -ruN msnlib-3.3/doc/TODO msnlib-3.4/doc/TODO
--- msnlib-3.3/doc/TODO	2003-09-30 15:10:20.000000000 -0300
+++ msnlib-3.4/doc/TODO	2003-12-03 23:53:59.000000000 -0300
@@ -9,6 +9,7 @@
 * be able to use nick with spaces
 	this can cause a lot of damage, is it worthy?
 * line editing
+* make tab completion work with any command besides 'm'
 
 
 Future / In doubt
diff -ruN msnlib-3.3/doc/URL msnlib-3.4/doc/URL
--- msnlib-3.3/doc/URL	2003-01-20 14:26:15.000000000 -0300
+++ msnlib-3.4/doc/URL	2003-11-12 13:13:25.000000000 -0300
@@ -1,5 +1,5 @@
 
-The URL for the project is http://users.auriga.wearlab.de/~alb
+The URL for the project is http://users.auriga.wearlab.de/~alb/msnlib
 I want to thank Henne Vogelsang and Auriga for providing the hosting.
 
 There is also a freshmeat project page that it's easier to remember:
diff -ruN msnlib-3.3/msn msnlib-3.4/msn
--- msnlib-3.3/msn	2003-11-12 00:06:29.000000000 -0300
+++ msnlib-3.4/msn	2004-03-29 23:54:59.000000000 -0300
@@ -1,4 +1,4 @@
-#!/usr/bin/env python 
+#!/usr/bin/env python
 
 
 import sys
@@ -46,6 +46,7 @@
 h		Shows your incoming message history
 add e n [g] 	Adds the user "e" with the nick "n" to the group "g"
 del nick	Deletes the user with nick "nick"
+ren nick new	Renames the user with nick "nick" to appear as "new"
 lignore [nick]	Locally ignores the user, or display the locally ignored users
 lunignore nick	Removes a user from the locally ignored users list
 block nick	Blocks a user
@@ -548,6 +549,10 @@
 		elif char == '\b' or ord(char) == 127:		# ^H / DEL
 			inbuf = inbuf[:-2]
 			redraw_cli()
+
+		elif ord(char) == 21:				# ^U
+			inbuf = ''
+			redraw_cli()
 			
 		elif char == '\t':				# tab
 			# we do a basic cycling between the last received and
@@ -599,7 +604,12 @@
 				# email/nick
 				else:
 					p = inbuf.split()
-					if p[0] != 'm' or len(p) != 2:
+					if len(p) < 2:
+						# space + TAB or equivalent,
+						# just beep and ignore it
+						inbuf = inbuf[:-1]
+						beep()
+					elif p[0] != 'm' or len(p) != 2:
 						inbuf = inbuf[:-1]
 						beep()
 					else:
@@ -919,6 +929,17 @@
 			return 'Unknown nick (%s)' % p[0]
 		m.userdel(email)
 	
+	elif cmd == 'ren':		# rename a user
+		p = params.split()
+		if len(p) != 2: return 'Error parsing command'
+		email = nick2email(p[0])
+		if not email:
+			return 'Unkown nick (%s)' % p[0]
+		newnick = p[1]
+		u = m.users[email]
+		m.userdel(email)
+		m.useradd(email, newnick, u.gid)
+	
 	elif cmd == 'gadd':		# add a group
 		p = params.split()
 		if len(p) != 1: return 'Error parsing command'
@@ -1362,7 +1383,7 @@
 #
 # now the real thing
 #
-printl('* MSN Client (3.3) *\n', c.yellow, 1)
+printl('* MSN Client (3.4) *\n', c.yellow, 1)
 
 # first, the configuration
 printl('Loading config... ', c.green, 1)
@@ -1516,17 +1537,13 @@
 
 
 # call sync to get the lists and refresh
-printl('Syncing... ', c.green, 1)
+printl('Sending user list request... ', c.green, 1)
 if m.sync():
 	printl('done\n', c.green, 1)
+	list_complete = 0
 else:
 	perror('Error syncing users\n')
 
-if m.change_status(config['initial status']):
-	printl('Status set to %s\n' % config['initial status'], c.green, 1)
-else:
-	perror('Error setting status: unknown status %s\n' % config['initial status'])
-
 
 # global variables
 history_ring = []	# history buffer
@@ -1571,6 +1588,21 @@
 		else:
 			try:
 				m.read(i)
+				
+				# see if we got all the user list, so we can
+				# change our initial status (doing it earlier
+				# as we used to seems to break things for some
+				# people)
+				if not list_complete and \
+						m.lst_total == m.syn_total:
+					list_complete = 1
+					if m.change_status(config['initial status']):
+						printl('\rStatus set to %s\n' % config['initial status'], c.green, 1)
+					else:
+						perror('\rError setting status: unknown status %s\n' % config['initial status'])
+
+				
+					
 			except ('SocketError', socket.error), err:
 				if i != m:
 					if i.msgqueue:
@@ -1582,6 +1614,9 @@
 				else:
 					printl('\nMain socket closed (%s)\n' % str(err), c.red)
 					quit(1)
+			except 'XFRError', err:
+				printl("\rXFR Error: %s\n" % str(err))
+
 			# always redraw after network event
 			redraw_cli()
 
diff -ruN msnlib-3.3/msncb.py msnlib-3.4/msncb.py
--- msnlib-3.3/msncb.py	2003-09-22 02:27:52.000000000 -0300
+++ msnlib-3.4/msncb.py	2004-03-22 17:50:16.000000000 -0300
@@ -54,7 +54,7 @@
 		self.lst = cb_lst	# list requests
 		self.bpr = cb_bpr	# user info
 		self.gtc = cb_ign	# add notification
-		self.syn = cb_ign	# list sync confirmation
+		self.syn = cb_syn	# list sync confirmation
 		self.prp = cb_prp	# private info
 		self.lsg = cb_lsg	# group list
 		self.add = cb_add	# user add
@@ -217,6 +217,21 @@
 	else: pass
 
 
+def cb_syn(md, type, tid, params):
+	"Receive a SYN notification"
+	t = params.split()
+	if len(t) != 3:
+		raise "SYNError"
+	
+	lver = int(t[0])
+	total = int(t[1])
+	ngroups = int(t[2])
+	
+	md.syn_lver = lver
+	md.syn_total = total
+	md.syn_ngroups = ngroups
+	
+
 def cb_lst(md, type, tid, params):
 	p = params.split(' ')
 	email = tid
@@ -259,6 +274,8 @@
 	if listmask & 4:
 		user.lists.append('B')
 	
+	md.lst_total += 1
+	
 	# save in the global last_lst the email, because BPRs might need it
 	md._last_lst = email
 
@@ -409,7 +426,7 @@
 			break
 	if not sbd:
 		debug('AIEEE: XFR without sbd!')
-		raise 'XFRError'
+		raise 'XFRError', (type, tid, params)
 	
 	sbd.fd = fd
 	sbd.block = 0
diff -ruN msnlib-3.3/msnlib.py msnlib-3.4/msnlib.py
--- msnlib-3.3/msnlib.py	2003-11-11 23:34:10.000000000 -0300
+++ msnlib-3.4/msnlib.py	2004-03-29 23:55:07.000000000 -0300
@@ -14,7 +14,7 @@
 """
 
 # constants
-VERSION = 0x0303
+VERSION = 0x0304
 LOGIN_HOST = 'messenger.hotmail.com'
 LOGIN_PORT = 1863
 
@@ -174,6 +174,12 @@
 		self.lport = LOGIN_PORT
 		self.ns = (None, None)		# notification server
 		self.hash = None		# hash used to authenticate
+
+		self.syn_lver = 0		# user list version
+		self.syn_total = 10000		# qty. of users from SYN
+		self.syn_ngroups = 0		# qty. of groups from SYN
+
+		self.lst_total = 0		# qty. of LSTs got
 		
 		self.cb = None			# callbacks
 
diff -ruN msnlib-3.3/setup.py msnlib-3.4/setup.py
--- msnlib-3.3/setup.py	2003-11-09 09:01:56.000000000 -0300
+++ msnlib-3.4/setup.py	2004-03-29 23:55:13.000000000 -0300
@@ -2,7 +2,7 @@
 from distutils.core import setup
 
 setup(name="msnlib",
-	version="3.3",
+	version="3.4",
 	description="MSN Messenger Library and Client",
 	author="Alberto Bertogli",
 	author_email="albertogli@telpin.com.ar",
