| 59 |
60 |
| 60 gaim_debug(GAIM_DEBUG_INFO, "server", |
61 gaim_debug(GAIM_DEBUG_INFO, "server", |
| 61 PACKAGE " " VERSION " logging in %s using %s\n", |
62 PACKAGE " " VERSION " logging in %s using %s\n", |
| 62 account->username, p->info->name); |
63 account->username, p->info->name); |
| 63 |
64 |
| 64 gaim_event_broadcast(event_connecting, account); |
65 gaim_signal_emit(gaim_accounts_get_handle(), |
| |
66 "account-connecting", account); |
| 65 prpl_info->login(account); |
67 prpl_info->login(account); |
| 66 } |
68 } |
| 67 } |
69 } |
| 68 |
70 |
| 69 static gboolean send_keepalive(gpointer d) |
71 static gboolean send_keepalive(gpointer d) |
| 354 |
356 |
| 355 |
357 |
| 356 void serv_set_away(GaimConnection *gc, const char *state, const char *message) |
358 void serv_set_away(GaimConnection *gc, const char *state, const char *message) |
| 357 { |
359 { |
| 358 GaimPluginProtocolInfo *prpl_info = NULL; |
360 GaimPluginProtocolInfo *prpl_info = NULL; |
| |
361 GaimAccount *account; |
| 359 |
362 |
| 360 if (gc->away_state == NULL && state == NULL && |
363 if (gc->away_state == NULL && state == NULL && |
| 361 gc->away == NULL && message == NULL) { |
364 gc->away == NULL && message == NULL) { |
| 362 |
365 |
| 363 return; |
366 return; |
| 372 } |
375 } |
| 373 |
376 |
| 374 if (gc != NULL && gc->prpl != NULL) |
377 if (gc != NULL && gc->prpl != NULL) |
| 375 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
378 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
| 376 |
379 |
| |
380 account = gaim_connection_get_account(gc); |
| |
381 |
| 377 if (prpl_info && prpl_info->set_away) { |
382 if (prpl_info && prpl_info->set_away) { |
| 378 if (gc->away_state) { |
383 if (gc->away_state) { |
| 379 g_free(gc->away_state); |
384 g_free(gc->away_state); |
| 380 gc->away_state = NULL; |
385 gc->away_state = NULL; |
| 381 } |
386 } |
| 384 |
389 |
| 385 if (gc->away && state) { |
390 if (gc->away && state) { |
| 386 gc->away_state = g_strdup(state); |
391 gc->away_state = g_strdup(state); |
| 387 } |
392 } |
| 388 |
393 |
| 389 gaim_event_broadcast(event_away, gc, state, message); |
394 gaim_signal_emit(gaim_accounts_get_handle(), "account-away", |
| 390 |
395 account, state, message); |
| 391 } |
396 } |
| 392 |
397 |
| 393 /* New away message... Clear out the record of sent autoresponses */ |
398 /* New away message... Clear out the record of sent autoresponses */ |
| 394 flush_last_auto_responses(gc); |
399 flush_last_auto_responses(gc); |
| 395 |
400 |
| 409 } |
414 } |
| 410 |
415 |
| 411 void serv_set_info(GaimConnection *g, const char *info) |
416 void serv_set_info(GaimConnection *g, const char *info) |
| 412 { |
417 { |
| 413 GaimPluginProtocolInfo *prpl_info = NULL; |
418 GaimPluginProtocolInfo *prpl_info = NULL; |
| 414 |
419 GaimAccount *account; |
| 415 if (g != NULL && g->prpl != NULL) |
420 |
| 416 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
421 if (g != NULL && g->prpl != NULL) |
| 417 |
422 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
| 418 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->set_info) { |
423 |
| 419 if (gaim_event_broadcast(event_set_info, g, info)) |
424 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && |
| |
425 prpl_info->set_info) { |
| |
426 |
| |
427 account = gaim_connection_get_account(g); |
| |
428 |
| |
429 if (gaim_signal_emit_return_1(gaim_accounts_get_handle(), |
| |
430 "account-setting-info", account, info)) |
| 420 return; |
431 return; |
| 421 |
432 |
| 422 prpl_info->set_info(g, info); |
433 prpl_info->set_info(g, info); |
| |
434 |
| |
435 gaim_signal_emit(gaim_accounts_get_handle(), |
| |
436 "account-set-info", account, info); |
| 423 } |
437 } |
| 424 } |
438 } |
| 425 |
439 |
| 426 void serv_change_passwd(GaimConnection *g, const char *orig, const char *new) |
440 void serv_change_passwd(GaimConnection *g, const char *orig, const char *new) |
| 427 { |
441 { |
| 676 } |
690 } |
| 677 |
691 |
| 678 void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) |
692 void serv_chat_invite(GaimConnection *g, int id, const char *message, const char *name) |
| 679 { |
693 { |
| 680 GaimPluginProtocolInfo *prpl_info = NULL; |
694 GaimPluginProtocolInfo *prpl_info = NULL; |
| |
695 GaimConversation *conv; |
| 681 char *buffy = message && *message ? g_strdup(message) : NULL; |
696 char *buffy = message && *message ? g_strdup(message) : NULL; |
| 682 |
697 |
| 683 if (g != NULL && g->prpl != NULL) |
698 conv = gaim_find_chat(g, id); |
| 684 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
699 |
| 685 |
700 if (conv == NULL) |
| 686 gaim_event_broadcast(event_chat_send_invite, g, id, name, &buffy); |
701 return; |
| |
702 |
| |
703 if (g != NULL && g->prpl != NULL) |
| |
704 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
| |
705 |
| |
706 gaim_signal_emit(gaim_conversations_get_handle(), "chat-inviting-user", |
| |
707 conv, name, &buffy); |
| 687 |
708 |
| 688 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->chat_invite) |
709 if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->chat_invite) |
| 689 prpl_info->chat_invite(g, id, buffy, name); |
710 prpl_info->chat_invite(g, id, buffy, name); |
| |
711 |
| |
712 gaim_signal_emit(gaim_conversations_get_handle(), "chat-invited-user", |
| |
713 conv, name, buffy); |
| 690 |
714 |
| 691 if (buffy) |
715 if (buffy) |
| 692 g_free(buffy); |
716 g_free(buffy); |
| 693 } |
717 } |
| 694 |
718 |
| 829 */ |
853 */ |
| 830 if (len < 0) { |
854 if (len < 0) { |
| 831 buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); |
855 buffy = g_malloc(MAX(strlen(msg) + 1, BUF_LONG)); |
| 832 strcpy(buffy, msg); |
856 strcpy(buffy, msg); |
| 833 angel = g_strdup(who); |
857 angel = g_strdup(who); |
| 834 plugin_return = gaim_event_broadcast(event_im_recv, gc, &angel, &buffy, &flags); |
858 |
| |
859 plugin_return = GPOINTER_TO_INT( |
| |
860 gaim_signal_emit_return_1(gaim_conversations_get_handle(), |
| |
861 "received-im-msg", |
| |
862 cnv, &angel, &buffy, &flags)); |
| 835 |
863 |
| 836 if (!buffy || !angel || plugin_return) { |
864 if (!buffy || !angel || plugin_return) { |
| 837 if (buffy) |
865 if (buffy) |
| 838 g_free(buffy); |
866 g_free(buffy); |
| 839 if (angel) |
867 if (angel) |
| 1095 gaim_blist_save(); |
1122 gaim_blist_save(); |
| 1096 } |
1123 } |
| 1097 |
1124 |
| 1098 if (!b->idle && idle) { |
1125 if (!b->idle && idle) { |
| 1099 gaim_pounce_execute(gc->account, b->name, GAIM_POUNCE_IDLE); |
1126 gaim_pounce_execute(gc->account, b->name, GAIM_POUNCE_IDLE); |
| 1100 gaim_event_broadcast(event_buddy_idle, gc, b->name); |
1127 gaim_signal_emit(gaim_blist_get_handle(), "buddy-idle", account, b); |
| 1101 system_log(log_idle, gc, b, OPT_LOG_BUDDY_IDLE); |
1128 system_log(log_idle, gc, b, OPT_LOG_BUDDY_IDLE); |
| 1102 } else if (b->idle && !idle) { |
1129 } else if (b->idle && !idle) { |
| 1103 gaim_pounce_execute(gc->account, b->name, GAIM_POUNCE_IDLE_RETURN); |
1130 gaim_pounce_execute(gc->account, b->name, GAIM_POUNCE_IDLE_RETURN); |
| 1104 gaim_event_broadcast(event_buddy_unidle, gc, b->name); |
1131 gaim_signal_emit(gaim_blist_get_handle(), "buddy-unidle", account, b); |
| 1105 system_log(log_unidle, gc, b, OPT_LOG_BUDDY_IDLE); |
1132 system_log(log_unidle, gc, b, OPT_LOG_BUDDY_IDLE); |
| 1106 } |
1133 } |
| 1107 |
1134 |
| 1108 gaim_blist_update_buddy_idle(b, idle); |
1135 gaim_blist_update_buddy_idle(b, idle); |
| 1109 gaim_blist_update_buddy_evil(b, evil); |
1136 gaim_blist_update_buddy_evil(b, evil); |
| 1192 |
1219 |
| 1193 |
1220 |
| 1194 void serv_got_eviled(GaimConnection *gc, const char *name, int lev) |
1221 void serv_got_eviled(GaimConnection *gc, const char *name, int lev) |
| 1195 { |
1222 { |
| 1196 char buf2[1024]; |
1223 char buf2[1024]; |
| 1197 |
1224 GaimAccount *account; |
| 1198 gaim_event_broadcast(event_warned, gc, name, lev); |
1225 |
| |
1226 account = gaim_connection_get_account(gc); |
| |
1227 |
| |
1228 gaim_signal_emit(gaim_accounts_get_handle(), "account-warned", |
| |
1229 account, name, lev); |
| 1199 |
1230 |
| 1200 if (gc->evil >= lev) { |
1231 if (gc->evil >= lev) { |
| 1201 gc->evil = lev; |
1232 gc->evil = lev; |
| 1202 return; |
1233 return; |
| 1203 } |
1234 } |
| 1229 gaim_im_set_typing_state(im, state); |
1260 gaim_im_set_typing_state(im, state); |
| 1230 gaim_im_update_typing(im); |
1261 gaim_im_update_typing(im); |
| 1231 |
1262 |
| 1232 b = gaim_find_buddy(gc->account, name); |
1263 b = gaim_find_buddy(gc->account, name); |
| 1233 |
1264 |
| 1234 gaim_event_broadcast(event_got_typing, gc, name); |
1265 gaim_signal_emit(gaim_conversations_get_handle(), "buddy-typing", cnv); |
| 1235 |
1266 |
| 1236 if (b != NULL) { |
1267 if (b != NULL) { |
| 1237 if (state == GAIM_TYPING) |
1268 if (state == GAIM_TYPING) |
| 1238 gaim_pounce_execute(gc->account, name, GAIM_POUNCE_TYPING); |
1269 gaim_pounce_execute(gc->account, name, GAIM_POUNCE_TYPING); |
| 1239 else |
1270 else |
| 1296 char buf2[BUF_LONG]; |
1327 char buf2[BUF_LONG]; |
| 1297 struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); |
1328 struct chat_invite_data *cid = g_new0(struct chat_invite_data, 1); |
| 1298 |
1329 |
| 1299 account = gaim_connection_get_account(gc); |
1330 account = gaim_connection_get_account(gc); |
| 1300 |
1331 |
| 1301 gaim_event_broadcast(event_chat_invited, gc, who, name, message); |
1332 gaim_signal_emit(gaim_conversations_get_handle(), |
| |
1333 "chat-invited", account, who, name, message); |
| 1302 |
1334 |
| 1303 if (message) |
1335 if (message) |
| 1304 g_snprintf(buf2, sizeof(buf2), |
1336 g_snprintf(buf2, sizeof(buf2), |
| 1305 _("User '%s' invites %s to buddy chat room: '%s'\n%s"), |
1337 _("User '%s' invites %s to buddy chat room: '%s'\n%s"), |
| 1306 who, gaim_account_get_username(account), name, message); |
1338 who, gaim_account_get_username(account), name, message); |
| 1319 } |
1351 } |
| 1320 |
1352 |
| 1321 GaimConversation *serv_got_joined_chat(GaimConnection *gc, |
1353 GaimConversation *serv_got_joined_chat(GaimConnection *gc, |
| 1322 int id, const char *name) |
1354 int id, const char *name) |
| 1323 { |
1355 { |
| 1324 GaimConversation *b; |
1356 GaimConversation *conv; |
| 1325 GaimChat *chat; |
1357 GaimChat *chat; |
| 1326 |
1358 GaimAccount *account; |
| 1327 b = gaim_conversation_new(GAIM_CONV_CHAT, gc->account, name); |
1359 |
| 1328 chat = GAIM_CHAT(b); |
1360 account = gaim_connection_get_account(gc); |
| 1329 |
1361 |
| 1330 gc->buddy_chats = g_slist_append(gc->buddy_chats, b); |
1362 conv = gaim_conversation_new(GAIM_CONV_CHAT, account, name); |
| |
1363 chat = GAIM_CHAT(conv); |
| |
1364 |
| |
1365 gc->buddy_chats = g_slist_append(gc->buddy_chats, conv); |
| 1331 |
1366 |
| 1332 gaim_chat_set_id(chat, id); |
1367 gaim_chat_set_id(chat, id); |
| 1333 |
1368 |
| 1334 /* TODO Move this to UI logging code! */ |
1369 /* TODO Move this to UI logging code! */ |
| 1335 if (gaim_prefs_get_bool("/gaim/gtk/logging/log_chats") || |
1370 if (gaim_prefs_get_bool("/gaim/gtk/logging/log_chats") || |
| 1336 find_log_info(gaim_conversation_get_name(b))) { |
1371 find_log_info(gaim_conversation_get_name(conv))) { |
| 1337 |
1372 |
| 1338 FILE *fd; |
1373 FILE *fd; |
| 1339 char *filename; |
1374 char *filename; |
| 1340 |
1375 |
| 1341 filename = (char *)malloc(100); |
1376 filename = (char *)malloc(100); |
| 1342 g_snprintf(filename, 100, "%s.chat", gaim_conversation_get_name(b)); |
1377 g_snprintf(filename, 100, "%s.chat", gaim_conversation_get_name(conv)); |
| 1343 |
1378 |
| 1344 fd = open_log_file(filename, TRUE); |
1379 fd = open_log_file(filename, TRUE); |
| 1345 |
1380 |
| 1346 if (fd) { |
1381 if (fd) { |
| 1347 if (!gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
1382 if (!gaim_prefs_get_bool("/gaim/gtk/logging/strip_html")) |
| 1354 fclose(fd); |
1389 fclose(fd); |
| 1355 } |
1390 } |
| 1356 free(filename); |
1391 free(filename); |
| 1357 } |
1392 } |
| 1358 |
1393 |
| 1359 gaim_window_show(gaim_conversation_get_window(b)); |
1394 gaim_window_show(gaim_conversation_get_window(conv)); |
| 1360 gaim_window_switch_conversation(gaim_conversation_get_window(b), |
1395 gaim_window_switch_conversation(gaim_conversation_get_window(conv), |
| 1361 gaim_conversation_get_index(b)); |
1396 gaim_conversation_get_index(conv)); |
| 1362 |
1397 |
| 1363 gaim_event_broadcast(event_chat_join, gc, id, name); |
1398 gaim_signal_emit(gaim_conversations_get_handle(), "chat-joined", conv); |
| 1364 |
1399 |
| 1365 return b; |
1400 return conv; |
| 1366 } |
1401 } |
| 1367 |
1402 |
| 1368 void serv_got_chat_left(GaimConnection *g, int id) |
1403 void serv_got_chat_left(GaimConnection *g, int id) |
| 1369 { |
1404 { |
| 1370 GSList *bcs; |
1405 GSList *bcs; |
| 1371 GaimConversation *conv = NULL; |
1406 GaimConversation *conv = NULL; |
| 1372 GaimChat *chat = NULL; |
1407 GaimChat *chat = NULL; |
| |
1408 GaimAccount *account; |
| |
1409 |
| |
1410 account = gaim_connection_get_account(g); |
| 1373 |
1411 |
| 1374 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
1412 for (bcs = g->buddy_chats; bcs != NULL; bcs = bcs->next) { |
| 1375 conv = (GaimConversation *)bcs->data; |
1413 conv = (GaimConversation *)bcs->data; |
| 1376 |
1414 |
| 1377 chat = GAIM_CHAT(conv); |
1415 chat = GAIM_CHAT(conv); |
| 1383 } |
1421 } |
| 1384 |
1422 |
| 1385 if (!conv) |
1423 if (!conv) |
| 1386 return; |
1424 return; |
| 1387 |
1425 |
| 1388 gaim_event_broadcast(event_chat_leave, g, gaim_chat_get_id(chat)); |
1426 gaim_signal_emit(gaim_conversations_get_handle(), "chat-left", conv); |
| 1389 |
1427 |
| 1390 gaim_debug(GAIM_DEBUG_INFO, "server", "Leaving room: %s\n", |
1428 gaim_debug(GAIM_DEBUG_INFO, "server", "Leaving room: %s\n", |
| 1391 gaim_conversation_get_name(conv)); |
1429 gaim_conversation_get_name(conv)); |
| 1392 |
1430 |
| 1393 g->buddy_chats = g_slist_remove(g->buddy_chats, conv); |
1431 g->buddy_chats = g_slist_remove(g->buddy_chats, conv); |
| 1429 */ |
1467 */ |
| 1430 |
1468 |
| 1431 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
1469 buffy = g_malloc(MAX(strlen(message) + 1, BUF_LONG)); |
| 1432 strcpy(buffy, message); |
1470 strcpy(buffy, message); |
| 1433 angel = g_strdup(who); |
1471 angel = g_strdup(who); |
| 1434 plugin_return = gaim_event_broadcast(event_chat_recv, g, gaim_chat_get_id(chat), |
1472 |
| 1435 &angel, &buffy); |
1473 plugin_return = GPOINTER_TO_INT( |
| |
1474 gaim_signal_emit_return_1(gaim_conversations_get_handle(), |
| |
1475 "received-chat-msg", |
| |
1476 conv, &angel, &buffy)); |
| 1436 |
1477 |
| 1437 if (!buffy || !angel || plugin_return) { |
1478 if (!buffy || !angel || plugin_return) { |
| 1438 if (buffy) |
1479 if (buffy) |
| 1439 g_free(buffy); |
1480 g_free(buffy); |
| 1440 if (angel) |
1481 if (angel) |