src/protocols/jabber/message.c

changeset 8043
86a087e9624c
parent 8042
3643df1e6e78
child 8135
d4df7d1821a5
equal deleted inserted replaced
8042:3643df1e6e78 8043:86a087e9624c
50 g_list_free(jm->etc); 50 g_list_free(jm->etc);
51 51
52 g_free(jm); 52 g_free(jm);
53 } 53 }
54 54
55 static GaimConversation *
56 find_unnormalized_im(const char *name, GaimAccount *account)
57 {
58 GaimConversation *c = NULL;
59 GList *cnv;
60
61 g_return_val_if_fail(name != NULL, NULL);
62
63 for(cnv = gaim_get_conversations(); cnv; cnv = cnv->next) {
64 c = (GaimConversation*)cnv->data;
65 if(gaim_conversation_get_type(c) == GAIM_CONV_IM &&
66 !gaim_utf8_strcasecmp(name, gaim_conversation_get_name(c)) &&
67 account == gaim_conversation_get_account(c))
68 return c;
69 }
70
71 return NULL;
72 }
73
74 static void handle_chat(JabberMessage *jm) 55 static void handle_chat(JabberMessage *jm)
75 { 56 {
76 JabberID *jid = jabber_id_new(jm->from); 57 JabberID *jid = jabber_id_new(jm->from);
77 char *from; 58 char *from;
78 59
83 return; 64 return;
84 65
85 jb = jabber_buddy_find(jm->js, jm->from, TRUE); 66 jb = jabber_buddy_find(jm->js, jm->from, TRUE);
86 jbr = jabber_buddy_find_resource(jb, jid->resource); 67 jbr = jabber_buddy_find_resource(jb, jid->resource);
87 68
88 if(find_unnormalized_im(jm->from, jm->js->gc->account)) { 69 if(jabber_find_unnormalized_conv(jm->from, jm->js->gc->account)) {
89 from = g_strdup(jm->from); 70 from = g_strdup(jm->from);
90 } else if(jid->node) { 71 } else if(jid->node) {
91 GaimConversation *conv; 72 GaimConversation *conv;
92 73
93 from = g_strdup_printf("%s@%s", jid->node, jid->domain); 74 from = g_strdup_printf("%s@%s", jid->node, jid->domain);
94 conv = find_unnormalized_im(from, jm->js->gc->account); 75 conv = jabber_find_unnormalized_conv(from, jm->js->gc->account);
95 if(conv) 76 if(conv)
96 gaim_conversation_set_name(conv, jm->from); 77 gaim_conversation_set_name(conv, jm->from);
97 g_free(from); 78 g_free(from);
98 from = g_strdup(jm->from); 79 from = g_strdup(jm->from);
99 } else { 80 } else {
489 return 0; 470 return 0;
490 471
491 js = gc->proto_data; 472 js = gc->proto_data;
492 chat = jabber_chat_find_by_id(js, id); 473 chat = jabber_chat_find_by_id(js, id);
493 474
475 if(!chat)
476 return 0;
477
494 if(!strcmp(msg, "/configure") || !strcmp(msg, "/config")) { 478 if(!strcmp(msg, "/configure") || !strcmp(msg, "/config")) {
495 jabber_chat_request_room_configure(chat); 479 jabber_chat_request_room_configure(chat);
496 return 1; 480 return 1;
497 } else if(!strcmp(msg, "/register")) { 481 } else if(!strcmp(msg, "/register")) {
498 jabber_chat_register(chat); 482 jabber_chat_register(chat);
505 jabber_chat_change_nick(chat, msg+6); 489 jabber_chat_change_nick(chat, msg+6);
506 return 1; 490 return 1;
507 } else if(!strncmp(msg, "/part", 5)) { 491 } else if(!strncmp(msg, "/part", 5)) {
508 jabber_chat_part(chat, strlen(msg) > 6 ? msg+6 : NULL); 492 jabber_chat_part(chat, strlen(msg) > 6 ? msg+6 : NULL);
509 return 1; 493 return 1;
510 } else if(!strncmp(msg, "/ban", 4)) {
511 } else if(!strncmp(msg, "/kick", 5)) {
512 } 494 }
513 495
514 jm = g_new0(JabberMessage, 1); 496 jm = g_new0(JabberMessage, 1);
515 jm->js = gc->proto_data; 497 jm->js = gc->proto_data;
516 jm->type = JABBER_MESSAGE_GROUPCHAT; 498 jm->type = JABBER_MESSAGE_GROUPCHAT;

mercurial