libpurple/protocols/jabber/google.c

branch
next.minor
changeset 29663
43574cbf67c5
parent 28984
1d84517d56eb
parent 29642
ef61075f9587
child 29665
ddf17c6b7fed
equal deleted inserted replaced
28994:d9c296d8ec99 29663:43574cbf67c5
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 }

mercurial