diff -U4 -r asterisk-1.6.1.0/res/res_jabber.c asterisk-1.6.1.0+sa0015229/res/res_jabber.c --- asterisk-1.6.1.0/res/res_jabber.c 2008-11-02 23:56:13.000000000 +0000 +++ asterisk-1.6.1.0+sa0015229/res/res_jabber.c 2009-05-30 11:09:05.000000000 +0100 @@ -2167,12 +2167,14 @@ ast_clear_flag(&buddy->flags, AST_FLAGS_ALL); if(ast_test_flag(&client->flags, AJI_AUTOPRUNE)) { ast_set_flag(&buddy->flags, AJI_AUTOPRUNE); ASTOBJ_MARK(buddy); - } else if (!iks_strcmp(iks_find_attrib(x, "subscription"), "none") || !iks_strcmp(iks_find_attrib(x, "subscription"), "from")) { - /* subscribe to buddy's presence only - if we really need to */ - ast_set_flag(&buddy->flags, AJI_AUTOREGISTER); + } else if (ast_test_flag(&client->flags, AJI_AUTOREGISTER)) { + if (!iks_strcmp(iks_find_attrib(x, "subscription"), "none") || !iks_strcmp(iks_find_attrib(x, "subscription"), "from")) { + /* subscribe to buddy's presence only + if we really need to */ + ast_set_flag(&buddy->flags, AJI_AUTOREGISTER); + } } ASTOBJ_UNLOCK(buddy); if (buddy) { ASTOBJ_CONTAINER_LINK(&client->buddies, buddy);