comparison libpurple/protocols/oscar/oscar.c @ 18608:a244c34ce59c

Call the AIM_CB_SPECIAL_CONNERR callback from flap_connection_destroy_cb() rather than parse_flap_ch4(). This ensures that the AIM_CB_SPECIAL_CONNERR callback function gets called even if AOL ends our FLAP connection without sending the customary channel 4 FLAP. Apparently you're not allowed to be in chat rooms from two locations. So when you sign on from a second location AOL severs the chat connections from your first location. It does this by sending a TCP RST rather than the expected channel 4 FLAP. This lead to a crash if you were in a chat room, then signed on from a second location. Fixes #1937.
author Mark Doliner <mark@kingant.net>
date Sun, 22 Jul 2007 08:18:27 +0000
parents c7a5cd17b045
children 2774acdb1cff
comparison
equal deleted inserted replaced
18606:ac9f19a31051 18608:a244c34ce59c
3470 va_end(ap); 3470 va_end(ap);
3471 3471
3472 purple_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n", 3472 purple_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n",
3473 code, (msg != NULL ? msg : "")); 3473 code, (msg != NULL ? msg : ""));
3474 3474
3475 g_return_val_if_fail(fr != NULL, 1);
3476 g_return_val_if_fail(conn != NULL, 1); 3475 g_return_val_if_fail(conn != NULL, 1);
3477 3476
3478 if (conn->type == SNAC_FAMILY_LOCATE) { 3477 if (conn->type == SNAC_FAMILY_LOCATE) {
3479 if (code == 0x0001) { 3478 if (code == 0x0001) {
3480 gc->wants_to_die = TRUE; 3479 gc->wants_to_die = TRUE;