| 1431 PurpleBuddy *buddy; |
1431 PurpleBuddy *buddy; |
| 1432 PurpleConnection *gc; |
1432 PurpleConnection *gc; |
| 1433 JabberStream *js; |
1433 JabberStream *js; |
| 1434 JabberChat *chat; |
1434 JabberChat *chat; |
| 1435 gchar *room; |
1435 gchar *room; |
| 1436 guint32 tmp, a, b; |
1436 gchar *uuid = purple_uuid_random(); |
| 1437 |
1437 |
| 1438 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
1438 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
| 1439 |
1439 |
| 1440 buddy = PURPLE_BUDDY(node); |
1440 buddy = PURPLE_BUDDY(node); |
| 1441 gc = purple_account_get_connection(purple_buddy_get_account(buddy)); |
1441 gc = purple_account_get_connection(purple_buddy_get_account(buddy)); |
| 1442 g_return_if_fail(gc != NULL); |
1442 g_return_if_fail(gc != NULL); |
| 1443 js = purple_connection_get_protocol_data(gc); |
1443 js = purple_connection_get_protocol_data(gc); |
| 1444 |
1444 |
| 1445 /* Generate a version 4 UUID */ |
1445 room = g_strdup_printf("private-chat-%s", uuid); |
| 1446 tmp = g_random_int(); |
|
| 1447 a = 0x4000 | (tmp & 0xFFF); /* 0x4000 to 0x4FFF */ |
|
| 1448 tmp >>= 12; |
|
| 1449 b = ((1 << 3) << 12) | (tmp & 0x3FFF); /* 0x8000 to 0xBFFF */ |
|
| 1450 |
|
| 1451 tmp = g_random_int(); |
|
| 1452 room = g_strdup_printf("private-chat-%08x-%04x-%04x-%04x-%04x%08x", |
|
| 1453 g_random_int(), |
|
| 1454 tmp & 0xFFFF, |
|
| 1455 a, |
|
| 1456 b, |
|
| 1457 (tmp >> 16) & 0xFFFF, g_random_int()); |
|
| 1458 |
|
| 1459 chat = jabber_join_chat(js, room, GOOGLE_GROUPCHAT_SERVER, js->user->node, |
1446 chat = jabber_join_chat(js, room, GOOGLE_GROUPCHAT_SERVER, js->user->node, |
| 1460 NULL, NULL); |
1447 NULL, NULL); |
| 1461 if (chat) { |
1448 if (chat) { |
| 1462 chat->muc = TRUE; |
1449 chat->muc = TRUE; |
| 1463 jabber_chat_invite(gc, chat->id, "", buddy->name); |
1450 jabber_chat_invite(gc, chat->id, "", buddy->name); |
| 1464 } |
1451 } |
| 1465 |
1452 |
| 1466 g_free(room); |
1453 g_free(room); |
| 1467 } |
1454 g_free(uuid); |
| |
1455 } |