Index: res/res_jabber.c =================================================================== --- res/res_jabber.c (revision 198369) +++ res/res_jabber.c (working copy) @@ -655,7 +655,7 @@ memset(newbuf, 0, sizeof(newbuf)); while (1) { - len = aji_io_recv(client, buf, NET_IO_BUF_SIZE - 1, timeout); + len = aji_io_recv(client, buf, NET_IO_BUF_SIZE - 2, timeout); if (len < 0) return IKS_NET_RWERR; if (len == 0) return IKS_NET_EXPIRED; buf[len] = '\0'; @@ -688,8 +688,18 @@ ret = iks_parse(client->p, newbuf, 0, 0); memset(newbuf, 0, sizeof(newbuf)); + switch (ret) { + case IKS_NOMEM: + ast_log(LOG_WARNING, "Parse failure: Out of memory.\n"); + break; + case IKS_BADXML: + ast_log(LOG_WARNING, "Parse failure: Invalid XML.\n"); + break; + case IKS_HOOK: + ast_log(LOG_WARNING, "Parse failure: Hook returned an error.\n"); + break; + } if (ret != IKS_OK) { - ast_log(LOG_WARNING, "XML parsing failed\n"); return ret; } ast_debug(3, "XML parsing successful\n");