Index: protocols/jabber/iq.c
===================================================================
--- protocols/jabber/iq.c	(revision 54a20149778028bff730511c6cc8027f61634124)
+++ protocols/jabber/iq.c	(revision 4ed9c8c11adb8d1010ed4bb7b3ff9af962f91237)
@@ -128,5 +128,6 @@
 	{
 		if( ( c = xt_find_node( node->children, "si" ) ) &&
-		    ( strcmp( xt_find_attr( c, "xmlns" ), XMLNS_SI ) == 0 ) )
+		    ( s = xt_find_attr( c, "xmlns" ) ) &&
+		    ( strcmp( s, XMLNS_SI ) == 0 ) )
 		{
 			return jabber_si_handle_request( ic, node, c );
Index: protocols/jabber/si.c
===================================================================
--- protocols/jabber/si.c	(revision 54a20149778028bff730511c6cc8027f61634124)
+++ protocols/jabber/si.c	(revision 4ed9c8c11adb8d1010ed4bb7b3ff9af962f91237)
@@ -208,5 +208,5 @@
 	struct jabber_buddy *bud;
 	int requestok = FALSE;
-	char *name;
+	char *name, *cmp;
 	size_t size;
 	struct jabber_transfer *tf;
@@ -227,17 +227,23 @@
 	    !( iq_id 		= xt_find_attr(   node, "id" ) 				) ||
 	    !( sid 		= xt_find_attr( sinode, "id" ) 				) ||
-	    !( strcmp( xt_find_attr( sinode, "profile" ), XMLNS_FILETRANSFER ) == 0	) ||
+	    !( cmp              = xt_find_attr( sinode, "profile" )                     ) ||
+	    !( 0               == strcmp( cmp, XMLNS_FILETRANSFER )			) ||
 	    !( d 		= xt_find_node( sinode->children, "file" ) 		) ||
-	    !( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_FILETRANSFER ) == 0 		) ||
+	    !( cmp = xt_find_attr( d, "xmlns" )						) ||
+	    !( 0               == strcmp( cmp, XMLNS_FILETRANSFER )			) ||
 	    !( name 		= xt_find_attr( d, "name" ) 				) ||
 	    !( size_s           = xt_find_attr( d, "size" )                             ) ||
 	    !( 1               == sscanf( size_s, "%zd", &size )                        ) ||
 	    !( d 		= xt_find_node( sinode->children, "feature" ) 		) ||
-	    !( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_FEATURE ) == 0 		) ||
+	    !( cmp              = xt_find_attr( d, "xmlns" )				) ||
+	    !( 0               == strcmp( cmp, XMLNS_FEATURE )				) ||
 	    !( d 		= xt_find_node( d->children, "x" ) 			) ||
-	    !( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_XDATA ) == 0 			) ||
-	    !( strcmp( xt_find_attr( d, "type" ), "form" ) == 0 			) ||
+	    !( cmp              = xt_find_attr( d, "xmlns" )				) ||
+	    !( 0               == strcmp( cmp, XMLNS_XDATA )				) ||
+	    !( cmp              = xt_find_attr( d, "type" )				) ||
+	    !( 0               == strcmp( cmp, "form" )					) ||
 	    !( d 		= xt_find_node( d->children, "field" ) 			) ||
-	    !( strcmp( xt_find_attr( d, "var" ), "stream-method" ) == 0 		) )
+	    !( cmp              = xt_find_attr( d, "var" )				) ||
+	    !( 0               == strcmp( cmp, "stream-method" )			) )
 	{
 		imcb_log( ic, "WARNING: Received incomplete Stream Initiation request" );
@@ -367,5 +373,5 @@
 {
 	struct xt_node *c, *d;
-	char *ini_jid, *tgt_jid, *iq_id;
+	char *ini_jid, *tgt_jid, *iq_id, *cmp;
 	GSList *tflist;
 	struct jabber_transfer *tf=NULL;
@@ -392,14 +398,17 @@
 	    !( iq_id   = xt_find_attr( node, "id" ) ) ||
 	    !( c = xt_find_node( node->children, "si" ) ) ||
-	    !( strcmp( xt_find_attr( c, "xmlns" ), XMLNS_SI ) == 0 ) ||
-/*	    !( d = xt_find_node( c->children, "file" ) ) ||
-	    !( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_FILETRANSFER ) == 0 ) || */
+	    !( cmp = xt_find_attr( c, "xmlns" ) ) ||
+	    !( strcmp( cmp, XMLNS_SI ) == 0 ) ||
 	    !( d = xt_find_node( c->children, "feature" ) ) ||
-	    !( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_FEATURE ) == 0 ) ||
+	    !( cmp = xt_find_attr( d, "xmlns" ) ) ||
+	    !( strcmp( cmp, XMLNS_FEATURE ) == 0 ) ||
 	    !( d = xt_find_node( d->children, "x" ) ) ||
-	    !( strcmp( xt_find_attr( d, "xmlns" ), XMLNS_XDATA ) == 0 ) ||
-	    !( strcmp( xt_find_attr( d, "type" ), "submit" ) == 0 ) ||
+	    !( cmp = xt_find_attr( d, "xmlns" ) ) ||
+	    !( strcmp( cmp, XMLNS_XDATA ) == 0 ) ||
+	    !( cmp = xt_find_attr( d, "type" ) ) ||
+	    !( strcmp( cmp, "submit" ) == 0 ) ||
 	    !( d = xt_find_node( d->children, "field" ) ) ||
-	    !( strcmp( xt_find_attr( d, "var" ), "stream-method" ) == 0 ) ||
+	    !( cmp = xt_find_attr( d, "var" ) ) ||
+	    !( strcmp( cmp, "stream-method" ) == 0 ) ||
 	    !( d = xt_find_node( d->children, "value" ) ) )
 	{
