Subject: StackOverflowExeption in agsxmpp.dll
Hi Alex,
Great job with the library so far.
Am using it in VS.NET 2003 and using your latest binary (0.500) for Desktop.
I am noticing that when i Send() a message to a GoogleTalk user that is not currently available, the library throws an exception:
An unhandled exception of type 'System.StackOverflowException' occurred in agsxmpp.dll
When i check the call stack, it shows:
> agsxmpp.dll!agsXMPP.XmppClientConnection.streamParser_OnStreamElement(System.Object sender = {agsXMPP.StreamParser}, agsXMPP.Xml.Dom.Node e = {agsXMPP.protocol.client.Message}) Line 1016 + 0x23 bytes C#
agsxmpp.dll!agsXMPP.StreamParser.EndTag(byte[] buf = {Length=489}, int offset = 479, agsXMPP.Xml.xpnet.ContentToken ct = {agsXMPP.Xml.xpnet.ContentToken}, agsXMPP.Xml.xpnet.TOK tok = END_TAG) Line 356 C#
agsxmpp.dll!agsXMPP.StreamParser.Push(byte[] buf = {Length=1024}, int offset = 0, int length = 489) Line 141 C#
agsxmpp.dll!agsXMPP.XmppClientConnection.m_ClientSocket_OnReceive(System.Object sender = {agsXMPP.net.ClientSocket}, byte[] data = {Length=1024}, int count = 489) Line 557 + 0x18 bytes C#
agsxmpp.dll!agsXMPP.net.ClientSocket.EndReceive(System.IAsyncResult ar = {System.IO.Stream.SynchronousAsyncResult}) Line 303 C#
mscorlib.dll!System.IO.Stream.BeginRead(byte[] buffer, int offset, int count, System.AsyncCallback callback, System.Object state) + 0xbf bytes
mono.security.dll!Mono.Security.Protocol.Tls.SslClientStream.BeginRead(byte[] buffer = {Length=1024}, int offset = 0, int count = 1024, System.AsyncCallback callback = {System.AsyncCallback}, System.Object state = <undefined value>) + 0x30d bytes
agsxmpp.dll!agsXMPP.net.ClientSocket.Receive() Line 287 + 0x37 bytes C#
agsxmpp.dll!agsXMPP.net.ClientSocket.EndReceive(System.IAsyncResult ar = {System.IO.Stream.SynchronousAsyncResult}) Line 304 + 0x8 bytes C#
The client code I use to call is this:
// create msg and send
agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message((string) rdr["GtalkId"], agsXMPP.protocol.client.MessageType.chat, sentence);
msg.Thread = rdr["ID"].ToString();
xmpp.Send(msg);
In an older version of your library, this did not seem to happen. Now, it seems to only happen if the recipient of the message is not currently online.
Any insight on this?
Thanks!
Great job with the library so far.
Am using it in VS.NET 2003 and using your latest binary (0.500) for Desktop.
I am noticing that when i Send() a message to a GoogleTalk user that is not currently available, the library throws an exception:
An unhandled exception of type 'System.StackOverflowException' occurred in agsxmpp.dll
When i check the call stack, it shows:
> agsxmpp.dll!agsXMPP.XmppClientConnection.streamParser_OnStreamElement(System.Object sender = {agsXMPP.StreamParser}, agsXMPP.Xml.Dom.Node e = {agsXMPP.protocol.client.Message}) Line 1016 + 0x23 bytes C#
agsxmpp.dll!agsXMPP.StreamParser.EndTag(byte[] buf = {Length=489}, int offset = 479, agsXMPP.Xml.xpnet.ContentToken ct = {agsXMPP.Xml.xpnet.ContentToken}, agsXMPP.Xml.xpnet.TOK tok = END_TAG) Line 356 C#
agsxmpp.dll!agsXMPP.StreamParser.Push(byte[] buf = {Length=1024}, int offset = 0, int length = 489) Line 141 C#
agsxmpp.dll!agsXMPP.XmppClientConnection.m_ClientSocket_OnReceive(System.Object sender = {agsXMPP.net.ClientSocket}, byte[] data = {Length=1024}, int count = 489) Line 557 + 0x18 bytes C#
agsxmpp.dll!agsXMPP.net.ClientSocket.EndReceive(System.IAsyncResult ar = {System.IO.Stream.SynchronousAsyncResult}) Line 303 C#
mscorlib.dll!System.IO.Stream.BeginRead(byte[] buffer, int offset, int count, System.AsyncCallback callback, System.Object state) + 0xbf bytes
mono.security.dll!Mono.Security.Protocol.Tls.SslClientStream.BeginRead(byte[] buffer = {Length=1024}, int offset = 0, int count = 1024, System.AsyncCallback callback = {System.AsyncCallback}, System.Object state = <undefined value>) + 0x30d bytes
agsxmpp.dll!agsXMPP.net.ClientSocket.Receive() Line 287 + 0x37 bytes C#
agsxmpp.dll!agsXMPP.net.ClientSocket.EndReceive(System.IAsyncResult ar = {System.IO.Stream.SynchronousAsyncResult}) Line 304 + 0x8 bytes C#
The client code I use to call is this:
// create msg and send
agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message((string) rdr["GtalkId"], agsXMPP.protocol.client.MessageType.chat, sentence);
msg.Thread = rdr["ID"].ToString();
xmpp.Send(msg);
In an older version of your library, this did not seem to happen. Now, it seems to only happen if the recipient of the message is not currently online.
Any insight on this?
Thanks!