comparison libpurple/protocols/jabber/presence.c @ 29403:a363b5aff793

jabber: Add a PurpleAccount convenience variable. ...because what jabber_presence_parse() needs is another function-scoped var.
author Paul Aurich <paul@darkrain42.org>
date Wed, 10 Feb 2010 05:22:00 +0000
parents db0762fbb60b
children 9c9cfcd69181
comparison
equal deleted inserted replaced
29402:db0762fbb60b 29403:a363b5aff793
500 JabberBuddy *jb; 500 JabberBuddy *jb;
501 JabberBuddyResource *jbr = NULL, *found_jbr = NULL; 501 JabberBuddyResource *jbr = NULL, *found_jbr = NULL;
502 PurpleConvChatBuddyFlags flags = PURPLE_CBFLAGS_NONE; 502 PurpleConvChatBuddyFlags flags = PURPLE_CBFLAGS_NONE;
503 gboolean delayed = FALSE; 503 gboolean delayed = FALSE;
504 const gchar *stamp = NULL; /* from <delayed/> element */ 504 const gchar *stamp = NULL; /* from <delayed/> element */
505 PurpleAccount *account;
505 PurpleBuddy *b = NULL; 506 PurpleBuddy *b = NULL;
506 char *buddy_name; 507 char *buddy_name;
507 JabberBuddyState state = JABBER_BUDDY_STATE_UNKNOWN; 508 JabberBuddyState state = JABBER_BUDDY_STATE_UNKNOWN;
508 xmlnode *y; 509 xmlnode *y;
509 char *avatar_hash = NULL; 510 char *avatar_hash = NULL;
521 signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(purple_connection_get_prpl(js->gc), 522 signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(purple_connection_get_prpl(js->gc),
522 "jabber-receiving-presence", js->gc, type, from, packet)); 523 "jabber-receiving-presence", js->gc, type, from, packet));
523 if (signal_return) 524 if (signal_return)
524 return; 525 return;
525 526
527 account = purple_connection_get_account(js->gc);
528
526 jid = jabber_id_new(from); 529 jid = jabber_id_new(from);
527 if (jid == NULL) { 530 if (jid == NULL) {
528 purple_debug_error("jabber", "Ignoring presence with malformed 'from' " 531 purple_debug_error("jabber", "Ignoring presence with malformed 'from' "
529 "JID: %s\n", from); 532 "JID: %s\n", from);
530 return; 533 return;
557 state = JABBER_BUDDY_STATE_ERROR; 560 state = JABBER_BUDDY_STATE_ERROR;
558 jb->error_msg = msg ? msg : g_strdup(_("Unknown Error in presence")); 561 jb->error_msg = msg ? msg : g_strdup(_("Unknown Error in presence"));
559 } else if (g_str_equal(type, "subscribe")) { 562 } else if (g_str_equal(type, "subscribe")) {
560 struct _jabber_add_permit *jap = g_new0(struct _jabber_add_permit, 1); 563 struct _jabber_add_permit *jap = g_new0(struct _jabber_add_permit, 1);
561 gboolean onlist = FALSE; 564 gboolean onlist = FALSE;
562 PurpleAccount *account;
563 PurpleBuddy *buddy; 565 PurpleBuddy *buddy;
564 JabberBuddy *jb = NULL; 566 JabberBuddy *jb = NULL;
565 xmlnode *nick; 567 xmlnode *nick;
566 568
567 account = purple_connection_get_account(js->gc);
568 buddy = purple_find_buddy(account, from); 569 buddy = purple_find_buddy(account, from);
569 nick = xmlnode_get_child_with_namespace(packet, "nick", "http://jabber.org/protocol/nick"); 570 nick = xmlnode_get_child_with_namespace(packet, "nick", "http://jabber.org/protocol/nick");
570 if (nick) 571 if (nick)
571 nickname = xmlnode_get_data(nick); 572 nickname = xmlnode_get_data(nick);
572 573
746 _("Create New Room"), 747 _("Create New Room"),
747 _("You are creating a new room. Would" 748 _("You are creating a new room. Would"
748 " you like to configure it, or" 749 " you like to configure it, or"
749 " accept the default settings?"), 750 " accept the default settings?"),
750 /* Default Action */ 1, 751 /* Default Action */ 1,
751 purple_connection_get_account(js->gc), NULL, chat->conv, 752 account, NULL, chat->conv,
752 chat, 2, 753 chat, 2,
753 _("_Configure Room"), G_CALLBACK(jabber_chat_request_room_configure), 754 _("_Configure Room"), G_CALLBACK(jabber_chat_request_room_configure),
754 _("_Accept Defaults"), G_CALLBACK(jabber_chat_create_instant_room)); 755 _("_Accept Defaults"), G_CALLBACK(jabber_chat_create_instant_room));
755 } 756 }
756 } else if (g_str_equal(code, "210")) { 757 } else if (g_str_equal(code, "210")) {
955 g_return_if_reached(); 956 g_return_if_reached();
956 } 957 }
957 } else { 958 } else {
958 buddy_name = g_strdup_printf("%s%s%s", jid->node ? jid->node : "", 959 buddy_name = g_strdup_printf("%s%s%s", jid->node ? jid->node : "",
959 jid->node ? "@" : "", jid->domain); 960 jid->node ? "@" : "", jid->domain);
960 if((b = purple_find_buddy(js->gc->account, buddy_name)) == NULL) { 961 if((b = purple_find_buddy(account, buddy_name)) == NULL) {
961 if (jb != js->user_jb) { 962 if (jb != js->user_jb) {
962 purple_debug_warning("jabber", "Got presence for unknown buddy %s on account %s (%p)\n", 963 purple_debug_warning("jabber", "Got presence for unknown buddy %s on account %s (%p)\n",
963 buddy_name, purple_account_get_username(js->gc->account), js->gc->account); 964 buddy_name, purple_account_get_username(account), account);
964 jabber_id_free(jid); 965 jabber_id_free(jid);
965 g_free(avatar_hash); 966 g_free(avatar_hash);
966 g_free(buddy_name); 967 g_free(buddy_name);
967 g_free(nickname); 968 g_free(nickname);
968 g_free(status); 969 g_free(status);
1002 (type && (g_str_equal(type, "unavailable") || 1003 (type && (g_str_equal(type, "unavailable") ||
1003 g_str_equal(type, "unsubscribed")))) { 1004 g_str_equal(type, "unsubscribed")))) {
1004 PurpleConversation *conv; 1005 PurpleConversation *conv;
1005 1006
1006 jabber_buddy_remove_resource(jb, jid->resource); 1007 jabber_buddy_remove_resource(jb, jid->resource);
1007 if((conv = jabber_find_unnormalized_im_conv(from, js->gc->account))) 1008 if((conv = jabber_find_unnormalized_im_conv(from, account)))
1008 /* 1009 /*
1009 * If a resource went offline (or the buddy unsubscribed), 1010 * If a resource went offline (or the buddy unsubscribed),
1010 * send further messages to the bare JID. (This is also 1011 * send further messages to the bare JID. (This is also
1011 * updated in message.c when receiving a message) 1012 * updated in message.c when receiving a message)
1012 */ 1013 */
1022 } 1023 }
1023 } 1024 }
1024 1025
1025 if((found_jbr = jabber_buddy_find_resource(jb, NULL))) { 1026 if((found_jbr = jabber_buddy_find_resource(jb, NULL))) {
1026 jabber_google_presence_incoming(js, buddy_name, found_jbr); 1027 jabber_google_presence_incoming(js, buddy_name, found_jbr);
1027 purple_prpl_got_user_status(js->gc->account, buddy_name, jabber_buddy_state_get_status_id(found_jbr->state), "priority", found_jbr->priority, "message", found_jbr->status, NULL); 1028 purple_prpl_got_user_status(account, buddy_name, jabber_buddy_state_get_status_id(found_jbr->state), "priority", found_jbr->priority, "message", found_jbr->status, NULL);
1028 purple_prpl_got_user_idle(js->gc->account, buddy_name, found_jbr->idle, found_jbr->idle); 1029 purple_prpl_got_user_idle(account, buddy_name, found_jbr->idle, found_jbr->idle);
1029 if (nickname) 1030 if (nickname)
1030 serv_got_alias(js->gc, buddy_name, nickname); 1031 serv_got_alias(js->gc, buddy_name, nickname);
1031 } else { 1032 } else {
1032 purple_prpl_got_user_status(js->gc->account, buddy_name, "offline", status ? "message" : NULL, status, NULL); 1033 purple_prpl_got_user_status(account, buddy_name, "offline", status ? "message" : NULL, status, NULL);
1033 } 1034 }
1034 g_free(buddy_name); 1035 g_free(buddy_name);
1035 } 1036 }
1036 1037
1037 if (caps && !type) { 1038 if (caps && !type) {