Now that XMPP is getting some attention thanks to it's being used by Google Talk, it's worth mentioning that if you're thinking about creating an XMPP client using the .NET framework by using the XmlNodeReader, think again.

XmlNodeReader won't return a node until it's read one token past the node in question, or reached the end of the stream. So when the server writes ... and stops writing (because it doesn't have any more data to write yet), the XmlNodeReader won't return anything until the server writes more data. If the server's waiting for you, you're stuck.