summaryrefslogtreecommitdiffstats
path: root/main/loudmouth/03-drop-stanzas-on-fail.patch
blob: 05f4248de0279c34dedcc941f89bce02ad1e1bb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Date: Tue, 13 Jan 2009 11:28:44 +0000
Subject: [PATCH] Drop stanzas when failing to convert them to LmMessages

when a stanza comes in that for some reason can't be parsed into an LmMessage,
just drop them on the floor instead of blocking the parser. I've seen this
issue happen in practise because some (buggy?) client sending an iq with a
prefix e.g. <client:iq xmlns:client="jabber:client" ... />
---
 loudmouth/lm-parser.c |   15 ++++++---------
 1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/loudmouth/lm-parser.c b/loudmouth/lm-parser.c
index 1938d56..89f6675 100644
--- a/loudmouth/lm-parser.c
+++ b/loudmouth/lm-parser.c
@@ -151,19 +151,16 @@ parser_end_node_cb (GMarkupParseContext  *context,
 		if (!m) {
 			g_warning ("Couldn't create message: %s\n",
 				   parser->cur_root->name);
-			return;
-		}
-
-		g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER,
+		} else {
+			g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER,
 		       "Have a new message\n");
-		if (parser->function) {
-			(* parser->function) (parser, m, parser->user_data);
+			if (parser->function) {
+				(* parser->function) (parser, m, parser->user_data);
+			}
+			lm_message_unref (m);
 		}
 
-		lm_message_unref (m);
 		lm_message_node_unref (parser->cur_root);
-		
-			
 		parser->cur_node = parser->cur_root = NULL;
 	} else {
 		LmMessageNode *tmp_node;
-- 
1.5.6.5