| 511 g_snprintf(buf, sizeof(buf), _("Your warning level is currently too high to log in.")); |
511 g_snprintf(buf, sizeof(buf), _("Your warning level is currently too high to log in.")); |
| 512 break; |
512 break; |
| 513 case 983: |
513 case 983: |
| 514 g_snprintf(buf, sizeof(buf), _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer.")); |
514 g_snprintf(buf, sizeof(buf), _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer.")); |
| 515 break; |
515 break; |
| 516 case 989: |
|
| 517 g_snprintf(buf, sizeof(buf), _("An unknown signon error has occurred: %s."), w); |
516 g_snprintf(buf, sizeof(buf), _("An unknown signon error has occurred: %s."), w); |
| 518 break; |
517 break; |
| 519 default: |
518 default: |
| 520 g_snprintf(buf, sizeof(buf), _("An unknown error, %d, has occurred. Info: %s"), no, w); |
519 g_snprintf(buf, sizeof(buf), _("An unknown error, %d, has occurred. Info: %s"), no, w); |
| 521 } |
520 } |
| 599 tdt->state = STATE_ONLINE; |
598 tdt->state = STATE_ONLINE; |
| 600 |
599 |
| 601 account_online(gc); |
600 account_online(gc); |
| 602 serv_finish_login(gc); |
601 serv_finish_login(gc); |
| 603 |
602 |
| 604 if (bud_list_cache_exists(gc)) |
|
| 605 do_import(gc, NULL); |
|
| 606 |
|
| 607 /* Client sends TOC toc_init_done message */ |
603 /* Client sends TOC toc_init_done message */ |
| 608 debug_printf("* Client sends TOC toc_init_done message\n"); |
604 debug_printf("* Client sends TOC toc_init_done message\n"); |
| 609 g_snprintf(snd, sizeof snd, "toc_init_done"); |
605 g_snprintf(snd, sizeof snd, "toc_init_done"); |
| 610 sflap_send(gc, snd, -1, TYPE_DATA); |
606 sflap_send(gc, snd, -1, TYPE_DATA); |
| 611 |
607 |
| 635 if (sflap_send(gc, snd, -1, TYPE_DATA) < 0) { |
631 if (sflap_send(gc, snd, -1, TYPE_DATA) < 0) { |
| 636 hide_login_progress(gc, _("Disconnected.")); |
632 hide_login_progress(gc, _("Disconnected.")); |
| 637 signoff(gc); |
633 signoff(gc); |
| 638 return; |
634 return; |
| 639 } |
635 } |
| 640 if (bud_list_cache_exists(gc)) |
|
| 641 do_import(gc, NULL); |
|
| 642 g_snprintf(snd, sizeof snd, "toc_init_done"); |
636 g_snprintf(snd, sizeof snd, "toc_init_done"); |
| 643 sflap_send(gc, snd, -1, TYPE_DATA); |
637 sflap_send(gc, snd, -1, TYPE_DATA); |
| 644 do_error_dialog(_("TOC has come back from its pause. You may now send" |
638 do_error_dialog(_("TOC has come back from its pause. You may now send" |
| 645 " messages again."), NULL, GAIM_INFO); |
639 " messages again."), NULL, GAIM_INFO); |
| 646 } |
640 } |
| 647 } else if (!strcasecmp(c, "CONFIG")) { |
641 } else if (!strcasecmp(c, "CONFIG")) { |
| 648 c = strtok(NULL, ":"); |
642 c = strtok(NULL, ":"); |
| 649 parse_toc_buddy_list(gc, c); |
643 parse_toc_buddy_list(gc->user, c); |
| 650 } else if (!strcasecmp(c, "NICK")) { |
644 } else if (!strcasecmp(c, "NICK")) { |
| 651 /* ignore NICK so that things get imported/exported properly |
645 /* ignore NICK so that things get imported/exported properly |
| 652 c = strtok(NULL, ":"); |
646 c = strtok(NULL, ":"); |
| 653 g_snprintf(gc->username, sizeof(gc->username), "%s", c); |
647 g_snprintf(gc->username, sizeof(gc->username), "%s", c); |
| 654 */ |
648 */ |
| 993 } |
987 } |
| 994 |
988 |
| 995 static void toc_set_config(struct gaim_connection *gc) |
989 static void toc_set_config(struct gaim_connection *gc) |
| 996 { |
990 { |
| 997 char *buf = g_malloc(MSG_LEN), snd[BUF_LEN * 2]; |
991 char *buf = g_malloc(MSG_LEN), snd[BUF_LEN * 2]; |
| 998 toc_build_config(gc, buf, MSG_LEN - strlen("toc_set_config \\{\\}"), FALSE); |
992 toc_build_config(gc->user, buf, MSG_LEN - strlen("toc_set_config \\{\\}"), FALSE); |
| 999 g_snprintf(snd, MSG_LEN, "toc_set_config {%s}", buf); |
993 g_snprintf(snd, MSG_LEN, "toc_set_config {%s}", buf); |
| 1000 sflap_send(gc, snd, -1, TYPE_DATA); |
994 sflap_send(gc, snd, -1, TYPE_DATA); |
| 1001 g_free(buf); |
995 g_free(buf); |
| 1002 } |
996 } |
| 1003 |
997 |
| 1270 m = g_list_append(m, pbm); |
1264 m = g_list_append(m, pbm); |
| 1271 |
1265 |
| 1272 return m; |
1266 return m; |
| 1273 } |
1267 } |
| 1274 |
1268 |
| 1275 static void toc_add_permit(struct gaim_connection *gc, char *who) |
1269 static void toc_add_permit(struct gaim_connection *gc, const char *who) |
| 1276 { |
1270 { |
| 1277 char buf2[BUF_LEN * 2]; |
1271 char buf2[BUF_LEN * 2]; |
| 1278 if (gc->permdeny != 3) |
1272 if (gc->user->permdeny != 3) |
| 1279 return; |
1273 return; |
| 1280 g_snprintf(buf2, sizeof(buf2), "toc_add_permit %s", normalize(who)); |
1274 g_snprintf(buf2, sizeof(buf2), "toc_add_permit %s", normalize(who)); |
| 1281 sflap_send(gc, buf2, -1, TYPE_DATA); |
1275 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1282 toc_set_config(gc); |
1276 toc_set_config(gc); |
| 1283 signoff_blocked(gc); |
1277 signoff_blocked(gc); |
| 1284 } |
1278 } |
| 1285 |
1279 |
| 1286 static void toc_add_deny(struct gaim_connection *gc, char *who) |
1280 static void toc_add_deny(struct gaim_connection *gc, const char *who) |
| 1287 { |
1281 { |
| 1288 char buf2[BUF_LEN * 2]; |
1282 char buf2[BUF_LEN * 2]; |
| 1289 if (gc->permdeny != 4) |
1283 if (gc->user->permdeny != 4) |
| 1290 return; |
1284 return; |
| 1291 g_snprintf(buf2, sizeof(buf2), "toc_add_deny %s", normalize(who)); |
1285 g_snprintf(buf2, sizeof(buf2), "toc_add_deny %s", normalize(who)); |
| 1292 sflap_send(gc, buf2, -1, TYPE_DATA); |
1286 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1293 toc_set_config(gc); |
1287 toc_set_config(gc); |
| 1294 signoff_blocked(gc); |
1288 signoff_blocked(gc); |
| 1298 { |
1292 { |
| 1299 char buf2[BUF_LEN * 2]; |
1293 char buf2[BUF_LEN * 2]; |
| 1300 GSList *list; |
1294 GSList *list; |
| 1301 int at; |
1295 int at; |
| 1302 |
1296 |
| 1303 switch (gc->permdeny) { |
1297 switch (gc->user->permdeny) { |
| 1304 case 1: |
1298 case 1: |
| 1305 /* permit all, deny none. to get here reliably we need to have been in permit |
1299 /* permit all, deny none. to get here reliably we need to have been in permit |
| 1306 * mode, and send an empty toc_add_deny message, which will switch us to deny none */ |
1300 * mode, and send an empty toc_add_deny message, which will switch us to deny none */ |
| 1307 g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
1301 g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
| 1308 sflap_send(gc, buf2, -1, TYPE_DATA); |
1302 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1322 * message, which will clear and set our permit list. toc sucks. */ |
1316 * message, which will clear and set our permit list. toc sucks. */ |
| 1323 g_snprintf(buf2, sizeof(buf2), "toc_add_deny "); |
1317 g_snprintf(buf2, sizeof(buf2), "toc_add_deny "); |
| 1324 sflap_send(gc, buf2, -1, TYPE_DATA); |
1318 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1325 |
1319 |
| 1326 at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
1320 at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
| 1327 list = gc->permit; |
1321 list = gc->user->permit; |
| 1328 while (list) { |
1322 while (list) { |
| 1329 at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", normalize(list->data)); |
1323 at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", normalize(list->data)); |
| 1330 if (at > MSG_LEN + 32) { /* from out my ass comes greatness */ |
1324 if (at > MSG_LEN + 32) { /* from out my ass comes greatness */ |
| 1331 sflap_send(gc, buf2, -1, TYPE_DATA); |
1325 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1332 at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
1326 at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
| 1340 * message, which will clear and set our deny list. toc sucks. */ |
1334 * message, which will clear and set our deny list. toc sucks. */ |
| 1341 g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
1335 g_snprintf(buf2, sizeof(buf2), "toc_add_permit "); |
| 1342 sflap_send(gc, buf2, -1, TYPE_DATA); |
1336 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1343 |
1337 |
| 1344 at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny "); |
1338 at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny "); |
| 1345 list = gc->deny; |
1339 list = gc->user->deny; |
| 1346 while (list) { |
1340 while (list) { |
| 1347 at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", normalize(list->data)); |
1341 at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", normalize(list->data)); |
| 1348 if (at > MSG_LEN + 32) { /* from out my ass comes greatness */ |
1342 if (at > MSG_LEN + 32) { /* from out my ass comes greatness */ |
| 1349 sflap_send(gc, buf2, -1, TYPE_DATA); |
1343 sflap_send(gc, buf2, -1, TYPE_DATA); |
| 1350 at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny "); |
1344 at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny "); |
| 1358 } |
1352 } |
| 1359 toc_set_config(gc); |
1353 toc_set_config(gc); |
| 1360 signoff_blocked(gc); |
1354 signoff_blocked(gc); |
| 1361 } |
1355 } |
| 1362 |
1356 |
| 1363 static void toc_rem_permit(struct gaim_connection *gc, char *who) |
1357 static void toc_rem_permit(struct gaim_connection *gc, const char *who) |
| 1364 { |
1358 { |
| 1365 if (gc->permdeny != 3) |
1359 if (gc->user->permdeny != 3) |
| 1366 return; |
1360 return; |
| 1367 toc_set_permit_deny(gc); |
1361 toc_set_permit_deny(gc); |
| 1368 } |
1362 } |
| 1369 |
1363 |
| 1370 static void toc_rem_deny(struct gaim_connection *gc, char *who) |
1364 static void toc_rem_deny(struct gaim_connection *gc, const char *who) |
| 1371 { |
1365 { |
| 1372 if (gc->permdeny != 4) |
1366 if (gc->user->permdeny != 4) |
| 1373 return; |
1367 return; |
| 1374 toc_set_permit_deny(gc); |
1368 toc_set_permit_deny(gc); |
| 1375 } |
1369 } |
| 1376 |
1370 |
| 1377 static GList *toc_away_states(struct gaim_connection *gc) |
1371 static GList *toc_away_states(struct gaim_connection *gc) |