Mercurial > pidgin.yaz
comparison libpurple/protocols/yahoo/libymsg.c @ 32692:0f94ec89f0bc
merged from im.pidgin.pidgin
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 26 Sep 2011 14:57:21 +0900 |
parents | 9aee8493db7f 904686722499 |
children | 4a34689eeb33 |
comparison
equal
deleted
inserted
replaced
32438:55e678325bda | 32692:0f94ec89f0bc |
---|---|
494 static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt) | 494 static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt) |
495 { | 495 { |
496 GSList *l = pkt->hash; | 496 GSList *l = pkt->hash; |
497 | 497 |
498 PurpleAccount *account = purple_connection_get_account(gc); | 498 PurpleAccount *account = purple_connection_get_account(gc); |
499 YahooData *yd = gc->proto_data; | 499 YahooData *yd = purple_connection_get_protocol_data(gc); |
500 GHashTable *ht; | 500 GHashTable *ht; |
501 char *norm_bud = NULL; | 501 char *norm_bud = NULL; |
502 char *temp = NULL; | 502 char *temp = NULL; |
503 YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */ | 503 YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */ |
504 /* But what if you had no friends? */ | 504 /* But what if you had no friends? */ |
636 GSList *l = pkt->hash; | 636 GSList *l = pkt->hash; |
637 gboolean export = FALSE; | 637 gboolean export = FALSE; |
638 gboolean got_serv_list = FALSE; | 638 gboolean got_serv_list = FALSE; |
639 YahooFriend *f = NULL; | 639 YahooFriend *f = NULL; |
640 PurpleAccount *account = purple_connection_get_account(gc); | 640 PurpleAccount *account = purple_connection_get_account(gc); |
641 YahooData *yd = gc->proto_data; | 641 YahooData *yd = purple_connection_get_protocol_data(gc); |
642 GHashTable *ht; | 642 GHashTable *ht; |
643 | 643 |
644 char **lines; | 644 char **lines; |
645 char **split; | 645 char **split; |
646 char **buddies; | 646 char **buddies; |
785 char *stat = NULL; | 785 char *stat = NULL; |
786 char *game = NULL; | 786 char *game = NULL; |
787 YahooFriend *f = NULL; | 787 YahooFriend *f = NULL; |
788 GSList *l = pkt->hash; | 788 GSList *l = pkt->hash; |
789 gint val_11 = 0; | 789 gint val_11 = 0; |
790 YahooData *yd = gc->proto_data; | 790 YahooData *yd = purple_connection_get_protocol_data(gc); |
791 YahooFederation fed = YAHOO_FEDERATION_NONE; | 791 YahooFederation fed = YAHOO_FEDERATION_NONE; |
792 | 792 |
793 account = purple_connection_get_account(gc); | 793 account = purple_connection_get_account(gc); |
794 | 794 |
795 while (l) { | 795 while (l) { |
897 struct _yahoo_im *sms = NULL; | 897 struct _yahoo_im *sms = NULL; |
898 YahooData *yd; | 898 YahooData *yd; |
899 char *server_msg = NULL; | 899 char *server_msg = NULL; |
900 char *m; | 900 char *m; |
901 | 901 |
902 yd = gc->proto_data; | 902 yd = purple_connection_get_protocol_data(gc); |
903 account = purple_connection_get_account(gc); | 903 account = purple_connection_get_account(gc); |
904 | 904 |
905 while (l != NULL) { | 905 while (l != NULL) { |
906 struct yahoo_pair *pair = l->data; | 906 struct yahoo_pair *pair = l->data; |
907 if (pair->key == 4) { | 907 if (pair->key == 4) { |
958 | 958 |
959 /* pkt_type is YAHOO_PKT_TYPE_SERVER if pkt arrives from yahoo server, YAHOO_PKT_TYPE_P2P if pkt arrives through p2p */ | 959 /* pkt_type is YAHOO_PKT_TYPE_SERVER if pkt arrives from yahoo server, YAHOO_PKT_TYPE_P2P if pkt arrives through p2p */ |
960 static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt, yahoo_pkt_type pkt_type) | 960 static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt, yahoo_pkt_type pkt_type) |
961 { | 961 { |
962 PurpleAccount *account; | 962 PurpleAccount *account; |
963 YahooData *yd = gc->proto_data; | 963 YahooData *yd = purple_connection_get_protocol_data(gc); |
964 GSList *l = pkt->hash; | 964 GSList *l = pkt->hash; |
965 GSList *list = NULL; | 965 GSList *list = NULL; |
966 struct _yahoo_im *im = NULL; | 966 struct _yahoo_im *im = NULL; |
967 | 967 |
968 account = purple_connection_get_account(gc); | 968 account = purple_connection_get_account(gc); |
1059 if(wb == NULL) | 1059 if(wb == NULL) |
1060 { | 1060 { |
1061 doodle_session *ds; | 1061 doodle_session *ds; |
1062 wb = purple_whiteboard_create(account, im->from, | 1062 wb = purple_whiteboard_create(account, im->from, |
1063 DOODLE_STATE_REQUESTED); | 1063 DOODLE_STATE_REQUESTED); |
1064 ds = wb->proto_data; | 1064 ds = purple_whiteboard_get_protocol_data(wb); |
1065 ds->imv_key = g_strdup(pair->value); | 1065 ds->imv_key = g_strdup(pair->value); |
1066 | 1066 |
1067 yahoo_doodle_command_send_request(gc, im->from, pair->value); | 1067 yahoo_doodle_command_send_request(gc, im->from, pair->value); |
1068 yahoo_doodle_command_send_ready(gc, im->from, pair->value); | 1068 yahoo_doodle_command_send_ready(gc, im->from, pair->value); |
1069 } | 1069 } |
1200 static void | 1200 static void |
1201 yahoo_buddy_add_authorize_cb(gpointer data) | 1201 yahoo_buddy_add_authorize_cb(gpointer data) |
1202 { | 1202 { |
1203 struct yahoo_add_request *add_req = data; | 1203 struct yahoo_add_request *add_req = data; |
1204 struct yahoo_packet *pkt; | 1204 struct yahoo_packet *pkt; |
1205 YahooData *yd = add_req->gc->proto_data; | 1205 YahooData *yd = purple_connection_get_protocol_data(add_req->gc); |
1206 const char *who = add_req->who; | 1206 const char *who = add_req->who; |
1207 | 1207 |
1208 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, yd->session_id); | 1208 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, yd->session_id); |
1209 if (add_req->fed) { | 1209 if (add_req->fed) { |
1210 who += 4; | 1210 who += 4; |
1231 } | 1231 } |
1232 | 1232 |
1233 static void | 1233 static void |
1234 yahoo_buddy_add_deny_cb(struct yahoo_add_request *add_req, const char *msg) | 1234 yahoo_buddy_add_deny_cb(struct yahoo_add_request *add_req, const char *msg) |
1235 { | 1235 { |
1236 YahooData *yd = add_req->gc->proto_data; | 1236 YahooData *yd = purple_connection_get_protocol_data(add_req->gc); |
1237 struct yahoo_packet *pkt; | 1237 struct yahoo_packet *pkt; |
1238 char *encoded_msg = NULL; | 1238 char *encoded_msg = NULL; |
1239 const char *who = add_req->who; | 1239 const char *who = add_req->who; |
1240 | 1240 |
1241 if (msg && *msg) | 1241 if (msg && *msg) |
1293 } | 1293 } |
1294 | 1294 |
1295 static void yahoo_buddy_denied_our_add(PurpleConnection *gc, const char *who, const char *reason) | 1295 static void yahoo_buddy_denied_our_add(PurpleConnection *gc, const char *who, const char *reason) |
1296 { | 1296 { |
1297 char *notify_msg; | 1297 char *notify_msg; |
1298 YahooData *yd = gc->proto_data; | 1298 YahooData *yd = purple_connection_get_protocol_data(gc); |
1299 | 1299 |
1300 if (who == NULL) | 1300 if (who == NULL) |
1301 return; | 1301 return; |
1302 | 1302 |
1303 if (reason != NULL) { | 1303 if (reason != NULL) { |
1629 } | 1629 } |
1630 | 1630 |
1631 static void yahoo_process_mail(PurpleConnection *gc, struct yahoo_packet *pkt) | 1631 static void yahoo_process_mail(PurpleConnection *gc, struct yahoo_packet *pkt) |
1632 { | 1632 { |
1633 PurpleAccount *account = purple_connection_get_account(gc); | 1633 PurpleAccount *account = purple_connection_get_account(gc); |
1634 YahooData *yd = gc->proto_data; | 1634 YahooData *yd = purple_connection_get_protocol_data(gc); |
1635 const char *who = NULL; | 1635 const char *who = NULL; |
1636 const char *email = NULL; | 1636 const char *email = NULL; |
1637 const char *subj = NULL; | 1637 const char *subj = NULL; |
1638 const char *yahoo_mail_url = (yd->jp? YAHOOJP_MAIL_URL: YAHOO_MAIL_URL); | 1638 const char *yahoo_mail_url = (yd->jp? YAHOOJP_MAIL_URL: YAHOO_MAIL_URL); |
1639 int count = 0; | 1639 int count = 0; |
1713 *out = '\0'; | 1713 *out = '\0'; |
1714 } | 1714 } |
1715 | 1715 |
1716 static void yahoo_auth16_stage3(PurpleConnection *gc, const char *crypt) | 1716 static void yahoo_auth16_stage3(PurpleConnection *gc, const char *crypt) |
1717 { | 1717 { |
1718 YahooData *yd = gc->proto_data; | 1718 YahooData *yd = purple_connection_get_protocol_data(gc); |
1719 PurpleAccount *account = purple_connection_get_account(gc); | 1719 PurpleAccount *account = purple_connection_get_account(gc); |
1720 const char *name = purple_normalize(account, purple_account_get_username(account)); | 1720 const char *name = purple_normalize(account, purple_account_get_username(account)); |
1721 PurpleCipher *md5_cipher; | 1721 PurpleCipher *md5_cipher; |
1722 PurpleCipherContext *md5_ctx; | 1722 PurpleCipherContext *md5_ctx; |
1723 guchar md5_digest[16]; | 1723 guchar md5_digest[16]; |
2018 char *url = NULL; | 2018 char *url = NULL; |
2019 gboolean yahoojp = yahoo_is_japan(account); | 2019 gboolean yahoojp = yahoo_is_japan(account); |
2020 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); | 2020 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); |
2021 | 2021 |
2022 url = g_strdup_printf(yahoojp ? YAHOOJP_LOGIN_URL : YAHOO_LOGIN_URL, token); | 2022 url = g_strdup_printf(yahoojp ? YAHOOJP_LOGIN_URL : YAHOO_LOGIN_URL, token); |
2023 url_data = purple_util_fetch_url_request_len( | 2023 url_data = purple_util_fetch_url_request( |
2024 proxy_ssl ? account : NULL, url, TRUE, YAHOO_CLIENT_USERAGENT, | 2024 proxy_ssl ? account : NULL, url, TRUE, YAHOO_CLIENT_USERAGENT, |
2025 TRUE, NULL, TRUE, -1, yahoo_auth16_stage2, auth_data); | 2025 TRUE, NULL, TRUE, -1, yahoo_auth16_stage2, auth_data); |
2026 if (url_data) | 2026 if (url_data) |
2027 yd->url_datas = g_slist_prepend(yd->url_datas, url_data); | 2027 yd->url_datas = g_slist_prepend(yd->url_datas, url_data); |
2028 g_free(url); | 2028 g_free(url); |
2059 url = g_strdup_printf(yahoojp ? YAHOOJP_TOKEN_URL : YAHOO_TOKEN_URL, | 2059 url = g_strdup_printf(yahoojp ? YAHOOJP_TOKEN_URL : YAHOO_TOKEN_URL, |
2060 encoded_username, encoded_password, purple_url_encode(seed)); | 2060 encoded_username, encoded_password, purple_url_encode(seed)); |
2061 g_free(encoded_password); | 2061 g_free(encoded_password); |
2062 g_free(encoded_username); | 2062 g_free(encoded_username); |
2063 | 2063 |
2064 url_data = purple_util_fetch_url_request_len( | 2064 url_data = purple_util_fetch_url_request( |
2065 proxy_ssl ? account : NULL, url, TRUE, | 2065 proxy_ssl ? account : NULL, url, TRUE, |
2066 YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1, | 2066 YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1, |
2067 yahoo_auth16_stage1_cb, auth_data); | 2067 yahoo_auth16_stage1_cb, auth_data); |
2068 if (url_data) | 2068 if (url_data) |
2069 yd->url_datas = g_slist_prepend(yd->url_datas, url_data); | 2069 yd->url_datas = g_slist_prepend(yd->url_datas, url_data); |
2211 } | 2211 } |
2212 | 2212 |
2213 static void yahoo_process_authresp(PurpleConnection *gc, struct yahoo_packet *pkt) | 2213 static void yahoo_process_authresp(PurpleConnection *gc, struct yahoo_packet *pkt) |
2214 { | 2214 { |
2215 #ifdef TRY_WEBMESSENGER_LOGIN | 2215 #ifdef TRY_WEBMESSENGER_LOGIN |
2216 YahooData *yd = gc->proto_data; | 2216 YahooData *yd = purple_connection_get_protocol_data(gc); |
2217 #endif /* TRY_WEBMESSENGER_LOGIN */ | 2217 #endif /* TRY_WEBMESSENGER_LOGIN */ |
2218 GSList *l = pkt->hash; | 2218 GSList *l = pkt->hash; |
2219 int err = 0; | 2219 int err = 0; |
2220 char *msg; | 2220 char *msg; |
2221 char *url = NULL; | 2221 char *url = NULL; |
2251 if (yd->fd >= 0) | 2251 if (yd->fd >= 0) |
2252 close(yd->fd); | 2252 close(yd->fd); |
2253 if (gc->inpa) | 2253 if (gc->inpa) |
2254 purple_input_remove(gc->inpa); | 2254 purple_input_remove(gc->inpa); |
2255 url_data = purple_util_fetch_url(WEBMESSENGER_URL, TRUE, | 2255 url_data = purple_util_fetch_url(WEBMESSENGER_URL, TRUE, |
2256 "Purple/" VERSION, FALSE, yahoo_login_page_cb, gc); | 2256 "Purple/" VERSION, FALSE, -1, yahoo_login_page_cb, gc); |
2257 if (url_data != NULL) | 2257 if (url_data != NULL) |
2258 yd->url_datas = g_slist_prepend(yd->url_datas, url_data); | 2258 yd->url_datas = g_slist_prepend(yd->url_datas, url_data); |
2259 return; | 2259 return; |
2260 } | 2260 } |
2261 #endif /* TRY_WEBMESSENGER_LOGIN */ | 2261 #endif /* TRY_WEBMESSENGER_LOGIN */ |
2304 char *group = NULL; | 2304 char *group = NULL; |
2305 char *decoded_group; | 2305 char *decoded_group; |
2306 char *buf; | 2306 char *buf; |
2307 YahooFriend *f; | 2307 YahooFriend *f; |
2308 GSList *l = pkt->hash; | 2308 GSList *l = pkt->hash; |
2309 YahooData *yd = gc->proto_data; | 2309 YahooData *yd = purple_connection_get_protocol_data(gc); |
2310 YahooFederation fed = YAHOO_FEDERATION_NONE; | 2310 YahooFederation fed = YAHOO_FEDERATION_NONE; |
2311 | 2311 |
2312 while (l) { | 2312 while (l) { |
2313 struct yahoo_pair *pair = l->data; | 2313 struct yahoo_pair *pair = l->data; |
2314 | 2314 |
2398 { | 2398 { |
2399 struct yahoo_p2p_data *p2p_data = value; | 2399 struct yahoo_p2p_data *p2p_data = value; |
2400 PurpleConnection *gc = user_data; | 2400 PurpleConnection *gc = user_data; |
2401 struct yahoo_packet *pkt_to_send; | 2401 struct yahoo_packet *pkt_to_send; |
2402 PurpleAccount *account; | 2402 PurpleAccount *account; |
2403 YahooData *yd = gc->proto_data; | 2403 YahooData *yd = purple_connection_get_protocol_data(gc); |
2404 | 2404 |
2405 account = purple_connection_get_account(gc); | 2405 account = purple_connection_get_account(gc); |
2406 | 2406 |
2407 pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id); | 2407 pkt_to_send = yahoo_packet_new(YAHOO_SERVICE_P2PFILEXFER, YAHOO_STATUS_AVAILABLE, yd->session_id); |
2408 yahoo_packet_hash(pkt_to_send, "ssisi", | 2408 yahoo_packet_hash(pkt_to_send, "ssisi", |
2417 } | 2417 } |
2418 | 2418 |
2419 static gboolean yahoo_p2p_keepalive(gpointer data) | 2419 static gboolean yahoo_p2p_keepalive(gpointer data) |
2420 { | 2420 { |
2421 PurpleConnection *gc = data; | 2421 PurpleConnection *gc = data; |
2422 YahooData *yd = gc->proto_data; | 2422 YahooData *yd = purple_connection_get_protocol_data(gc); |
2423 | 2423 |
2424 g_hash_table_foreach(yd->peers, yahoo_p2p_keepalive_cb, gc); | 2424 g_hash_table_foreach(yd->peers, yahoo_p2p_keepalive_cb, gc); |
2425 | 2425 |
2426 return TRUE; | 2426 return TRUE; |
2427 } | 2427 } |
2464 YahooFriend *f; | 2464 YahooFriend *f; |
2465 | 2465 |
2466 if(!(p2p_data = data)) | 2466 if(!(p2p_data = data)) |
2467 return ; | 2467 return ; |
2468 | 2468 |
2469 yd = p2p_data->gc->proto_data; | 2469 yd = purple_connection_get_protocol_data(p2p_data->gc); |
2470 | 2470 |
2471 /* lets see whats in the packet */ | 2471 /* lets see whats in the packet */ |
2472 while (l) { | 2472 while (l) { |
2473 struct yahoo_pair *pair = l->data; | 2473 struct yahoo_pair *pair = l->data; |
2474 | 2474 |
2549 struct yahoo_p2p_data *p2p_data; | 2549 struct yahoo_p2p_data *p2p_data; |
2550 YahooData *yd; | 2550 YahooData *yd; |
2551 | 2551 |
2552 if(!(p2p_data = data)) | 2552 if(!(p2p_data = data)) |
2553 return ; | 2553 return ; |
2554 yd = p2p_data->gc->proto_data; | 2554 yd = purple_connection_get_protocol_data(p2p_data->gc); |
2555 | 2555 |
2556 len = read(source, buf, sizeof(buf)); | 2556 len = read(source, buf, sizeof(buf)); |
2557 if ((len < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK))) | 2557 if ((len < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK))) |
2558 return ; /* No Worries*/ | 2558 return ; /* No Worries*/ |
2559 else if (len <= 0) | 2559 else if (len <= 0) |
2621 struct yahoo_p2p_data *p2p_data; | 2621 struct yahoo_p2p_data *p2p_data; |
2622 YahooData *yd; | 2622 YahooData *yd; |
2623 | 2623 |
2624 if(!(p2p_data = data)) | 2624 if(!(p2p_data = data)) |
2625 return ; | 2625 return ; |
2626 yd = p2p_data->gc->proto_data; | 2626 yd = purple_connection_get_protocol_data(p2p_data->gc); |
2627 | 2627 |
2628 acceptfd = accept(source, NULL, 0); | 2628 acceptfd = accept(source, NULL, 0); |
2629 if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) | 2629 if(acceptfd == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) |
2630 return; | 2630 return; |
2631 else if(acceptfd == -1) { | 2631 else if(acceptfd == -1) { |
2661 YahooData *yd; | 2661 YahooData *yd; |
2662 | 2662 |
2663 if(!(p2p_data = data)) | 2663 if(!(p2p_data = data)) |
2664 return FALSE; | 2664 return FALSE; |
2665 | 2665 |
2666 yd = p2p_data->gc->proto_data; | 2666 yd = purple_connection_get_protocol_data(p2p_data->gc); |
2667 | 2667 |
2668 purple_debug_warning("yahoo","yahoo p2p server timeout, peer failed to connect\n"); | 2668 purple_debug_warning("yahoo","yahoo p2p server timeout, peer failed to connect\n"); |
2669 yahoo_p2p_disconnect_destroy_data(data); | 2669 yahoo_p2p_disconnect_destroy_data(data); |
2670 purple_input_remove(yd->yahoo_p2p_server_watcher); | 2670 purple_input_remove(yd->yahoo_p2p_server_watcher); |
2671 yd->yahoo_p2p_server_watcher = 0; | 2671 yd->yahoo_p2p_server_watcher = 0; |
2682 YahooData *yd; | 2682 YahooData *yd; |
2683 | 2683 |
2684 if(!(p2p_data = data)) | 2684 if(!(p2p_data = data)) |
2685 return ; | 2685 return ; |
2686 | 2686 |
2687 yd = p2p_data->gc->proto_data; | 2687 yd = purple_connection_get_protocol_data(p2p_data->gc); |
2688 yd->listen_data = NULL; | 2688 yd->listen_data = NULL; |
2689 | 2689 |
2690 if(listenfd == -1) { | 2690 if(listenfd == -1) { |
2691 purple_debug_warning("yahoo","p2p: error starting p2p server\n"); | 2691 purple_debug_warning("yahoo","p2p: error starting p2p server\n"); |
2692 yahoo_p2p_disconnect_destroy_data(data); | 2692 yahoo_p2p_disconnect_destroy_data(data); |
2710 char temp_str[100]; | 2710 char temp_str[100]; |
2711 gchar *base64_ip = NULL; | 2711 gchar *base64_ip = NULL; |
2712 YahooFriend *f; | 2712 YahooFriend *f; |
2713 struct yahoo_packet *pkt; | 2713 struct yahoo_packet *pkt; |
2714 PurpleAccount *account; | 2714 PurpleAccount *account; |
2715 YahooData *yd = gc->proto_data; | 2715 YahooData *yd = purple_connection_get_protocol_data(gc); |
2716 struct yahoo_p2p_data *p2p_data; | 2716 struct yahoo_p2p_data *p2p_data; |
2717 const char *norm_username; | 2717 const char *norm_username; |
2718 | 2718 |
2719 f = yahoo_friend_find(gc, who); | 2719 f = yahoo_friend_find(gc, who); |
2720 account = purple_connection_get_account(gc); | 2720 account = purple_connection_get_account(gc); |
2774 /* FIXME: If the port is already used, purple_network_listener returns NULL and old listener won't be canceled | 2774 /* FIXME: If the port is already used, purple_network_listener returns NULL and old listener won't be canceled |
2775 * in yahoo_close function. */ | 2775 * in yahoo_close function. */ |
2776 if (yd->listen_data) | 2776 if (yd->listen_data) |
2777 purple_debug_warning("yahoo","p2p: Failed to create p2p server - server already exists\n"); | 2777 purple_debug_warning("yahoo","p2p: Failed to create p2p server - server already exists\n"); |
2778 else { | 2778 else { |
2779 yd->listen_data = purple_network_listen(YAHOO_PAGER_PORT_P2P, SOCK_STREAM, yahoo_p2p_server_listen_cb, p2p_data); | 2779 yd->listen_data = purple_network_listen(YAHOO_PAGER_PORT_P2P, AF_UNSPEC, SOCK_STREAM, TRUE, yahoo_p2p_server_listen_cb, p2p_data); |
2780 if (yd->listen_data == NULL) | 2780 if (yd->listen_data == NULL) |
2781 purple_debug_warning("yahoo","p2p: Failed to created p2p server\n"); | 2781 purple_debug_warning("yahoo","p2p: Failed to created p2p server\n"); |
2782 } | 2782 } |
2783 | 2783 |
2784 g_free(base64_ip); | 2784 g_free(base64_ip); |
2791 struct yahoo_packet *pkt_to_send; | 2791 struct yahoo_packet *pkt_to_send; |
2792 PurpleAccount *account; | 2792 PurpleAccount *account; |
2793 YahooData *yd; | 2793 YahooData *yd; |
2794 | 2794 |
2795 p2p_data = data; | 2795 p2p_data = data; |
2796 yd = p2p_data->gc->proto_data; | 2796 yd = purple_connection_get_protocol_data(p2p_data->gc); |
2797 | 2797 |
2798 if(error_message != NULL) { | 2798 if(error_message != NULL) { |
2799 purple_debug_warning("yahoo","p2p: %s\n",error_message); | 2799 purple_debug_warning("yahoo","p2p: %s\n",error_message); |
2800 yahoo_send_p2p_pkt(p2p_data->gc, p2p_data->host_username, 2);/* send p2p init packet with val_13=2 */ | 2800 yahoo_send_p2p_pkt(p2p_data->gc, p2p_data->host_username, 2);/* send p2p init packet with val_13=2 */ |
2801 | 2801 |
3136 } | 3136 } |
3137 | 3137 |
3138 static void yahoo_pending(gpointer data, gint source, PurpleInputCondition cond) | 3138 static void yahoo_pending(gpointer data, gint source, PurpleInputCondition cond) |
3139 { | 3139 { |
3140 PurpleConnection *gc = data; | 3140 PurpleConnection *gc = data; |
3141 YahooData *yd = gc->proto_data; | 3141 YahooData *yd = purple_connection_get_protocol_data(gc); |
3142 char buf[1024]; | 3142 char buf[1024]; |
3143 int len; | 3143 int len; |
3144 | 3144 |
3145 len = read(yd->fd, buf, sizeof(buf)); | 3145 len = read(yd->fd, buf, sizeof(buf)); |
3146 | 3146 |
3244 purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); | 3244 purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
3245 g_free(tmp); | 3245 g_free(tmp); |
3246 return; | 3246 return; |
3247 } | 3247 } |
3248 | 3248 |
3249 yd = gc->proto_data; | 3249 yd = purple_connection_get_protocol_data(gc); |
3250 yd->fd = source; | 3250 yd->fd = source; |
3251 | 3251 |
3252 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, yd->session_id); | 3252 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, yd->session_id); |
3253 | 3253 |
3254 yahoo_packet_hash_str(pkt, 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc)))); | 3254 yahoo_packet_hash_str(pkt, 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc)))); |
3270 purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); | 3270 purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
3271 g_free(tmp); | 3271 g_free(tmp); |
3272 return; | 3272 return; |
3273 } | 3273 } |
3274 | 3274 |
3275 yd = gc->proto_data; | 3275 yd = purple_connection_get_protocol_data(gc); |
3276 yd->fd = source; | 3276 yd->fd = source; |
3277 | 3277 |
3278 pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, yd->session_id); | 3278 pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, yd->session_id); |
3279 | 3279 |
3280 yahoo_packet_hash(pkt, "sss", 0, | 3280 yahoo_packet_hash(pkt, "sss", 0, |
3289 | 3289 |
3290 static void yahoo_web_pending(gpointer data, gint source, PurpleInputCondition cond) | 3290 static void yahoo_web_pending(gpointer data, gint source, PurpleInputCondition cond) |
3291 { | 3291 { |
3292 PurpleConnection *gc = data; | 3292 PurpleConnection *gc = data; |
3293 PurpleAccount *account = purple_connection_get_account(gc); | 3293 PurpleAccount *account = purple_connection_get_account(gc); |
3294 YahooData *yd = gc->proto_data; | 3294 YahooData *yd = purple_connection_get_protocol_data(gc); |
3295 char bufread[2048], *i = bufread, *buf = bufread; | 3295 char bufread[2048], *i = bufread, *buf = bufread; |
3296 int len; | 3296 int len; |
3297 GString *s; | 3297 GString *s; |
3298 | 3298 |
3299 len = read(source, bufread, sizeof(bufread) - 1); | 3299 len = read(source, bufread, sizeof(bufread) - 1); |
3368 PurpleConnection *gc; | 3368 PurpleConnection *gc; |
3369 YahooData *yd; | 3369 YahooData *yd; |
3370 int written, remaining; | 3370 int written, remaining; |
3371 | 3371 |
3372 gc = data; | 3372 gc = data; |
3373 yd = gc->proto_data; | 3373 yd = purple_connection_get_protocol_data(gc); |
3374 | 3374 |
3375 remaining = strlen(yd->auth) - yd->auth_written; | 3375 remaining = strlen(yd->auth) - yd->auth_written; |
3376 written = write(source, yd->auth + yd->auth_written, remaining); | 3376 written = write(source, yd->auth + yd->auth_written, remaining); |
3377 | 3377 |
3378 if (written < 0 && errno == EAGAIN) | 3378 if (written < 0 && errno == EAGAIN) |
3478 yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, | 3478 yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, |
3479 const gchar *url_text, size_t len, const gchar *error_message) | 3479 const gchar *url_text, size_t len, const gchar *error_message) |
3480 { | 3480 { |
3481 PurpleConnection *gc = (PurpleConnection *)user_data; | 3481 PurpleConnection *gc = (PurpleConnection *)user_data; |
3482 PurpleAccount *account = purple_connection_get_account(gc); | 3482 PurpleAccount *account = purple_connection_get_account(gc); |
3483 YahooData *yd = gc->proto_data; | 3483 YahooData *yd = purple_connection_get_protocol_data(gc); |
3484 const char *sn = purple_account_get_username(account); | 3484 const char *sn = purple_account_get_username(account); |
3485 const char *pass = purple_connection_get_password(gc); | 3485 const char *pass = purple_connection_get_password(gc); |
3486 GHashTable *hash = yahoo_login_page_hash(url_text, len); | 3486 GHashTable *hash = yahoo_login_page_hash(url_text, len); |
3487 GString *url = g_string_new("GET http://login.yahoo.com/config/login?login="); | 3487 GString *url = g_string_new("GET http://login.yahoo.com/config/login?login="); |
3488 char md5[33], *hashp = md5, *chal; | 3488 char md5[33], *hashp = md5, *chal; |
3675 g_free(cs_server); | 3675 g_free(cs_server); |
3676 } | 3676 } |
3677 | 3677 |
3678 void yahoo_login(PurpleAccount *account) { | 3678 void yahoo_login(PurpleAccount *account) { |
3679 PurpleConnection *gc = purple_account_get_connection(account); | 3679 PurpleConnection *gc = purple_account_get_connection(account); |
3680 YahooData *yd = gc->proto_data = g_new0(YahooData, 1); | 3680 YahooData *yd = g_new0(YahooData, 1); |
3681 PurpleStatus *status = purple_account_get_active_status(account); | 3681 PurpleStatus *status = purple_account_get_active_status(account); |
3682 gboolean use_whole_url = yahoo_account_use_http_proxy(gc); | 3682 gboolean use_whole_url = yahoo_account_use_http_proxy(gc); |
3683 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); | 3683 gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); |
3684 PurpleUtilFetchUrlData *url_data; | 3684 PurpleUtilFetchUrlData *url_data; |
3685 | 3685 |
3686 purple_connection_set_protocol_data(gc, yd); | |
3686 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC; | 3687 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC; |
3687 | 3688 |
3688 purple_connection_update_progress(gc, _("Connecting"), 1, 2); | 3689 purple_connection_update_progress(gc, _("Connecting"), 1, 2); |
3689 | 3690 |
3690 purple_connection_set_display_name(gc, purple_account_get_username(account)); | 3691 purple_connection_set_display_name(gc, purple_account_get_username(account)); |
3712 | 3713 |
3713 yahoo_picture_check(account); | 3714 yahoo_picture_check(account); |
3714 | 3715 |
3715 /* Get the pager server. Actually start connecting in the callback since we | 3716 /* Get the pager server. Actually start connecting in the callback since we |
3716 * must have the contents of the HTTP response to proceed. */ | 3717 * must have the contents of the HTTP response to proceed. */ |
3717 url_data = purple_util_fetch_url_request_len( | 3718 url_data = purple_util_fetch_url_request( |
3718 proxy_ssl ? purple_connection_get_account(gc) : NULL, | 3719 proxy_ssl ? purple_connection_get_account(gc) : NULL, |
3719 yd->jp ? YAHOOJP_PAGER_HOST_REQ_URL : YAHOO_PAGER_HOST_REQ_URL, | 3720 yd->jp ? YAHOOJP_PAGER_HOST_REQ_URL : YAHOO_PAGER_HOST_REQ_URL, |
3720 use_whole_url ? TRUE : FALSE, | 3721 use_whole_url ? TRUE : FALSE, |
3721 YAHOO_CLIENT_USERAGENT, FALSE, NULL, FALSE, -1, | 3722 YAHOO_CLIENT_USERAGENT, FALSE, NULL, FALSE, -1, |
3722 yahoo_got_pager_server, yd); | 3723 yahoo_got_pager_server, yd); |
3725 | 3726 |
3726 return; | 3727 return; |
3727 } | 3728 } |
3728 | 3729 |
3729 void yahoo_close(PurpleConnection *gc) { | 3730 void yahoo_close(PurpleConnection *gc) { |
3730 YahooData *yd = (YahooData *)gc->proto_data; | 3731 YahooData *yd = purple_connection_get_protocol_data(gc); |
3731 GSList *l; | 3732 GSList *l; |
3732 | 3733 |
3733 if (gc->inpa) | 3734 if (gc->inpa) |
3734 purple_input_remove(gc->inpa); | 3735 purple_input_remove(gc->inpa); |
3735 | 3736 |
3814 yahoo_personal_details_reset(&yd->ypd, TRUE); | 3815 yahoo_personal_details_reset(&yd->ypd, TRUE); |
3815 | 3816 |
3816 g_free(yd->current_list15_grp); | 3817 g_free(yd->current_list15_grp); |
3817 | 3818 |
3818 g_free(yd); | 3819 g_free(yd); |
3819 gc->proto_data = NULL; | 3820 purple_connection_set_protocol_data(gc, NULL); |
3820 } | 3821 } |
3821 | 3822 |
3822 const char *yahoo_list_icon(PurpleAccount *a, PurpleBuddy *b) | 3823 const char *yahoo_list_icon(PurpleAccount *a, PurpleBuddy *b) |
3823 { | 3824 { |
3824 return "yahoo"; | 3825 return "yahoo"; |
3831 YahooFriend *f; | 3832 YahooFriend *f; |
3832 PurplePresence *presence; | 3833 PurplePresence *presence; |
3833 | 3834 |
3834 if (!b || !(account = purple_buddy_get_account(b)) || | 3835 if (!b || !(account = purple_buddy_get_account(b)) || |
3835 !(gc = purple_account_get_connection(account)) || | 3836 !(gc = purple_account_get_connection(account)) || |
3836 !gc->proto_data) | 3837 !purple_connection_get_protocol_data(gc)) |
3837 return NULL; | 3838 return NULL; |
3838 | 3839 |
3839 f = yahoo_friend_find(gc, purple_buddy_get_name(b)); | 3840 f = yahoo_friend_find(gc, purple_buddy_get_name(b)); |
3840 if (!f) { | 3841 if (!f) { |
3841 return "not-authorized"; | 3842 return "not-authorized"; |
3896 | 3897 |
3897 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); | 3898 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
3898 | 3899 |
3899 buddy = (PurpleBuddy *) node; | 3900 buddy = (PurpleBuddy *) node; |
3900 gc = purple_account_get_connection(purple_buddy_get_account(buddy)); | 3901 gc = purple_account_get_connection(purple_buddy_get_account(buddy)); |
3901 yd = gc->proto_data; | 3902 yd = purple_connection_get_protocol_data(gc); |
3902 id = yd->conf_id; | 3903 id = yd->conf_id; |
3903 | 3904 |
3904 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); | 3905 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
3905 g_hash_table_replace(components, g_strdup("room"), | 3906 g_hash_table_replace(components, g_strdup("room"), |
3906 g_strdup_printf("%s-%d", purple_connection_get_display_name(gc), id)); | 3907 g_strdup_printf("%s-%d", purple_connection_get_display_name(gc), id)); |
4059 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); | 4060 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
4060 | 4061 |
4061 buddy = (PurpleBuddy *) node; | 4062 buddy = (PurpleBuddy *) node; |
4062 gc = purple_account_get_connection(purple_buddy_get_account(buddy)); | 4063 gc = purple_account_get_connection(purple_buddy_get_account(buddy)); |
4063 | 4064 |
4064 yahoo_add_buddy(gc, buddy, NULL); | 4065 yahoo_add_buddy(gc, buddy, NULL, NULL); |
4065 } | 4066 } |
4066 | 4067 |
4067 | 4068 |
4068 static void yahoo_chat_goto_menu(PurpleBlistNode *node, gpointer data) | 4069 static void yahoo_chat_goto_menu(PurpleBlistNode *node, gpointer data) |
4069 { | 4070 { |
4079 } | 4080 } |
4080 | 4081 |
4081 static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) { | 4082 static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) { |
4082 GList *m = NULL; | 4083 GList *m = NULL; |
4083 PurpleMenuAction *act; | 4084 PurpleMenuAction *act; |
4084 YahooData *yd = (YahooData *) gc->proto_data; | 4085 YahooData *yd = purple_connection_get_protocol_data(gc); |
4085 | 4086 |
4086 if (yd->current_status == YAHOO_STATUS_INVISIBLE) { | 4087 if (yd->current_status == YAHOO_STATUS_INVISIBLE) { |
4087 if (f->presence != YAHOO_PRESENCE_ONLINE) { | 4088 if (f->presence != YAHOO_PRESENCE_ONLINE) { |
4088 act = purple_menu_action_new(_("Appear Online"), | 4089 act = purple_menu_action_new(_("Appear Online"), |
4089 PURPLE_CALLBACK(yahoo_presence_settings), | 4090 PURPLE_CALLBACK(yahoo_presence_settings), |
4139 { | 4140 { |
4140 GList *m = NULL; | 4141 GList *m = NULL; |
4141 PurpleMenuAction *act; | 4142 PurpleMenuAction *act; |
4142 | 4143 |
4143 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy)); | 4144 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy)); |
4144 YahooData *yd = gc->proto_data; | 4145 YahooData *yd = purple_connection_get_protocol_data(gc); |
4145 static char buf2[1024]; | 4146 static char buf2[1024]; |
4146 YahooFriend *f; | 4147 YahooFriend *f; |
4147 | 4148 |
4148 f = yahoo_friend_find(gc, purple_buddy_get_name(buddy)); | 4149 f = yahoo_friend_find(gc, purple_buddy_get_name(buddy)); |
4149 | 4150 |
4222 } | 4223 } |
4223 } | 4224 } |
4224 | 4225 |
4225 static void yahoo_act_id(PurpleConnection *gc, PurpleRequestFields *fields) | 4226 static void yahoo_act_id(PurpleConnection *gc, PurpleRequestFields *fields) |
4226 { | 4227 { |
4227 YahooData *yd = gc->proto_data; | 4228 YahooData *yd = purple_connection_get_protocol_data(gc); |
4228 const char *name = yd->profiles[purple_request_fields_get_choice(fields, "id")]; | 4229 const char *name = yd->profiles[purple_request_fields_get_choice(fields, "id")]; |
4229 | 4230 |
4230 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, yd->session_id); | 4231 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, yd->session_id); |
4231 yahoo_packet_hash_str(pkt, 3, name); | 4232 yahoo_packet_hash_str(pkt, 3, name); |
4232 yahoo_packet_send_and_free(pkt, yd); | 4233 yahoo_packet_send_and_free(pkt, yd); |
4239 const gchar *token, size_t len, const gchar *error_message) | 4240 const gchar *token, size_t len, const gchar *error_message) |
4240 { | 4241 { |
4241 PurpleConnection *gc = user_data; | 4242 PurpleConnection *gc = user_data; |
4242 gboolean set_cookie = FALSE; | 4243 gboolean set_cookie = FALSE; |
4243 gchar *url; | 4244 gchar *url; |
4244 YahooData *yd = gc->proto_data; | 4245 YahooData *yd = purple_connection_get_protocol_data(gc); |
4245 | 4246 |
4246 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); | 4247 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); |
4247 | 4248 |
4248 yd->url_datas = g_slist_remove(yd->url_datas, url_data); | 4249 yd->url_datas = g_slist_remove(yd->url_datas, url_data); |
4249 | 4250 |
4275 { | 4276 { |
4276 /* Setup a cookie that can be used by the browser */ | 4277 /* Setup a cookie that can be used by the browser */ |
4277 /* XXX I have no idea how this will work with Yahoo! Japan. */ | 4278 /* XXX I have no idea how this will work with Yahoo! Japan. */ |
4278 | 4279 |
4279 PurpleConnection *gc = action->context; | 4280 PurpleConnection *gc = action->context; |
4280 YahooData *yd = gc->proto_data; | 4281 YahooData *yd = purple_connection_get_protocol_data(gc); |
4281 | 4282 |
4282 PurpleUtilFetchUrlData *url_data; | 4283 PurpleUtilFetchUrlData *url_data; |
4283 const char* base_url = "http://login.yahoo.com"; | 4284 const char* base_url = "http://login.yahoo.com"; |
4284 /* use whole URL if using HTTP Proxy */ | 4285 /* use whole URL if using HTTP Proxy */ |
4285 gboolean use_whole_url = yahoo_account_use_http_proxy(gc); | 4286 gboolean use_whole_url = yahoo_account_use_http_proxy(gc); |
4290 "Host: login.yahoo.com\r\n" | 4291 "Host: login.yahoo.com\r\n" |
4291 "Content-Length: 0\r\n\r\n", | 4292 "Content-Length: 0\r\n\r\n", |
4292 use_whole_url ? base_url : "", | 4293 use_whole_url ? base_url : "", |
4293 yd->cookie_t, yd->cookie_y); | 4294 yd->cookie_t, yd->cookie_y); |
4294 | 4295 |
4295 url_data = purple_util_fetch_url_request_len( | 4296 url_data = purple_util_fetch_url_request( |
4296 purple_connection_get_account(gc), base_url, use_whole_url, | 4297 purple_connection_get_account(gc), base_url, use_whole_url, |
4297 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, | 4298 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, |
4298 yahoo_get_inbox_token_cb, gc); | 4299 yahoo_get_inbox_token_cb, gc); |
4299 | 4300 |
4300 g_free(request); | 4301 g_free(request); |
4389 static void yahoo_get_sms_carrier_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, | 4390 static void yahoo_get_sms_carrier_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, |
4390 const gchar *webdata, size_t len, const gchar *error_message) | 4391 const gchar *webdata, size_t len, const gchar *error_message) |
4391 { | 4392 { |
4392 struct yahoo_sms_carrier_cb_data *sms_cb_data = user_data; | 4393 struct yahoo_sms_carrier_cb_data *sms_cb_data = user_data; |
4393 PurpleConnection *gc = sms_cb_data->gc; | 4394 PurpleConnection *gc = sms_cb_data->gc; |
4394 YahooData *yd = gc->proto_data; | 4395 YahooData *yd = purple_connection_get_protocol_data(gc); |
4395 char *status = NULL; | 4396 char *status = NULL; |
4396 char *carrier = NULL; | 4397 char *carrier = NULL; |
4397 PurpleAccount *account = purple_connection_get_account(gc); | 4398 PurpleAccount *account = purple_connection_get_account(gc); |
4398 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account); | 4399 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account); |
4399 | 4400 |
4444 } | 4445 } |
4445 } | 4446 } |
4446 | 4447 |
4447 static void yahoo_get_sms_carrier(PurpleConnection *gc, gpointer data) | 4448 static void yahoo_get_sms_carrier(PurpleConnection *gc, gpointer data) |
4448 { | 4449 { |
4449 YahooData *yd = gc->proto_data; | 4450 YahooData *yd = purple_connection_get_protocol_data(gc); |
4450 PurpleUtilFetchUrlData *url_data; | 4451 PurpleUtilFetchUrlData *url_data; |
4451 struct yahoo_sms_carrier_cb_data *sms_cb_data; | 4452 struct yahoo_sms_carrier_cb_data *sms_cb_data; |
4452 char *validate_request_str = NULL; | 4453 char *validate_request_str = NULL; |
4453 char *request = NULL; | 4454 char *request = NULL; |
4454 gboolean use_whole_url = FALSE; | 4455 gboolean use_whole_url = FALSE; |
4479 "Content-Length: %" G_GSIZE_FORMAT "\r\n" | 4480 "Content-Length: %" G_GSIZE_FORMAT "\r\n" |
4480 "Cache-Control: no-cache\r\n\r\n%s", | 4481 "Cache-Control: no-cache\r\n\r\n%s", |
4481 YAHOO_CLIENT_VERSION, yd->cookie_t, yd->cookie_y, strlen(validate_request_str), validate_request_str); | 4482 YAHOO_CLIENT_VERSION, yd->cookie_t, yd->cookie_y, strlen(validate_request_str), validate_request_str); |
4482 | 4483 |
4483 /* use whole URL if using HTTP Proxy */ | 4484 /* use whole URL if using HTTP Proxy */ |
4484 if ((gc->account->proxy_info) && (gc->account->proxy_info->type == PURPLE_PROXY_HTTP)) | 4485 if ((gc->account->proxy_info) && (purple_proxy_info_get_type(gc->account->proxy_info) == PURPLE_PROXY_HTTP)) |
4485 use_whole_url = TRUE; | 4486 use_whole_url = TRUE; |
4486 | 4487 |
4487 url_data = purple_util_fetch_url_request_len( | 4488 url_data = purple_util_fetch_url_request( |
4488 purple_connection_get_account(gc), YAHOO_SMS_CARRIER_URL, use_whole_url, | 4489 purple_connection_get_account(gc), YAHOO_SMS_CARRIER_URL, use_whole_url, |
4489 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, | 4490 YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, |
4490 yahoo_get_sms_carrier_cb, data); | 4491 yahoo_get_sms_carrier_cb, data); |
4491 | 4492 |
4492 g_free(request); | 4493 g_free(request); |
4504 } | 4505 } |
4505 } | 4506 } |
4506 | 4507 |
4507 int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags) | 4508 int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags) |
4508 { | 4509 { |
4509 YahooData *yd = gc->proto_data; | 4510 YahooData *yd = purple_connection_get_protocol_data(gc); |
4510 struct yahoo_packet *pkt = NULL; | 4511 struct yahoo_packet *pkt = NULL; |
4511 char *msg = yahoo_html_to_codes(what); | 4512 char *msg = yahoo_html_to_codes(what); |
4512 char *msg2; | 4513 char *msg2; |
4513 gboolean utf8 = TRUE; | 4514 gboolean utf8 = TRUE; |
4514 PurpleWhiteboard *wb; | 4515 PurpleWhiteboard *wb; |
4661 return ret; | 4662 return ret; |
4662 } | 4663 } |
4663 | 4664 |
4664 unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state) | 4665 unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state) |
4665 { | 4666 { |
4666 YahooData *yd = gc->proto_data; | 4667 YahooData *yd = purple_connection_get_protocol_data(gc); |
4667 struct yahoo_p2p_data *p2p_data; | 4668 struct yahoo_p2p_data *p2p_data; |
4668 YahooFederation fed = YAHOO_FEDERATION_NONE; | 4669 YahooFederation fed = YAHOO_FEDERATION_NONE; |
4669 struct yahoo_packet *pkt = NULL; | 4670 struct yahoo_packet *pkt = NULL; |
4670 | 4671 |
4671 fed = yahoo_get_federation_from_name(who); | 4672 fed = yahoo_get_federation_from_name(who); |
4732 if (!purple_status_is_active(status)) | 4733 if (!purple_status_is_active(status)) |
4733 return; | 4734 return; |
4734 | 4735 |
4735 gc = purple_account_get_connection(account); | 4736 gc = purple_account_get_connection(account); |
4736 presence = purple_status_get_presence(status); | 4737 presence = purple_status_get_presence(status); |
4737 yd = (YahooData *)gc->proto_data; | 4738 yd = purple_connection_get_protocol_data(gc); |
4738 old_status = yd->current_status; | 4739 old_status = yd->current_status; |
4739 | 4740 |
4740 yd->current_status = get_yahoo_status_from_purple_status(status); | 4741 yd->current_status = get_yahoo_status_from_purple_status(status); |
4741 | 4742 |
4742 if (yd->current_status == YAHOO_STATUS_CUSTOM) | 4743 if (yd->current_status == YAHOO_STATUS_CUSTOM) |
4798 } | 4799 } |
4799 } | 4800 } |
4800 | 4801 |
4801 void yahoo_set_idle(PurpleConnection *gc, int idle) | 4802 void yahoo_set_idle(PurpleConnection *gc, int idle) |
4802 { | 4803 { |
4803 YahooData *yd = gc->proto_data; | 4804 YahooData *yd = purple_connection_get_protocol_data(gc); |
4804 struct yahoo_packet *pkt = NULL; | 4805 struct yahoo_packet *pkt = NULL; |
4805 char *msg = NULL, *msg2 = NULL; | 4806 char *msg = NULL, *msg2 = NULL; |
4806 PurpleStatus *status = NULL; | 4807 PurpleStatus *status = NULL; |
4807 gboolean invisible = FALSE; | 4808 gboolean invisible = FALSE; |
4808 gboolean utf8 = TRUE; | 4809 gboolean utf8 = TRUE; |
4918 } | 4919 } |
4919 | 4920 |
4920 void yahoo_keepalive(PurpleConnection *gc) | 4921 void yahoo_keepalive(PurpleConnection *gc) |
4921 { | 4922 { |
4922 struct yahoo_packet *pkt; | 4923 struct yahoo_packet *pkt; |
4923 YahooData *yd = gc->proto_data; | 4924 YahooData *yd = purple_connection_get_protocol_data(gc); |
4924 time_t now = time(NULL); | 4925 time_t now = time(NULL); |
4925 | 4926 |
4926 /* We're only allowed to send a ping once an hour or the servers will boot us */ | 4927 /* We're only allowed to send a ping once an hour or the servers will boot us */ |
4927 if ((now - yd->last_ping) >= PING_TIMEOUT) { | 4928 if ((now - yd->last_ping) >= PING_TIMEOUT) { |
4928 yd->last_ping = now; | 4929 yd->last_ping = now; |
4949 yahoo_packet_send_and_free(pkt, yd); | 4950 yahoo_packet_send_and_free(pkt, yd); |
4950 } | 4951 } |
4951 | 4952 |
4952 } | 4953 } |
4953 | 4954 |
4954 void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g) | 4955 void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g, const char *message) |
4955 { | 4956 { |
4956 YahooData *yd = (YahooData *)gc->proto_data; | 4957 YahooData *yd = purple_connection_get_protocol_data(gc); |
4957 struct yahoo_packet *pkt; | 4958 struct yahoo_packet *pkt; |
4958 const char *group = NULL; | 4959 const char *group = NULL; |
4959 char *group2; | 4960 char *group2; |
4960 const char *bname; | 4961 const char *bname; |
4961 const char *fed_bname; | 4962 const char *fed_bname; |
5014 g_free(group2); | 5015 g_free(group2); |
5015 } | 5016 } |
5016 | 5017 |
5017 void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) | 5018 void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) |
5018 { | 5019 { |
5019 YahooData *yd = (YahooData *)gc->proto_data; | 5020 YahooData *yd = purple_connection_get_protocol_data(gc); |
5020 struct yahoo_packet *pkt; | 5021 struct yahoo_packet *pkt; |
5021 GSList *buddies, *l; | 5022 GSList *buddies, *l; |
5022 PurpleGroup *g; | 5023 PurpleGroup *g; |
5023 gboolean remove = TRUE; | 5024 gboolean remove = TRUE; |
5024 char *cg; | 5025 char *cg; |
5070 yahoo_packet_send_and_free(pkt, yd); | 5071 yahoo_packet_send_and_free(pkt, yd); |
5071 g_free(cg); | 5072 g_free(cg); |
5072 } | 5073 } |
5073 | 5074 |
5074 void yahoo_add_deny(PurpleConnection *gc, const char *who) { | 5075 void yahoo_add_deny(PurpleConnection *gc, const char *who) { |
5075 YahooData *yd = (YahooData *)gc->proto_data; | 5076 YahooData *yd = purple_connection_get_protocol_data(gc); |
5076 struct yahoo_packet *pkt; | 5077 struct yahoo_packet *pkt; |
5077 YahooFederation fed = YAHOO_FEDERATION_NONE; | 5078 YahooFederation fed = YAHOO_FEDERATION_NONE; |
5078 | 5079 |
5079 if (!yd->logged_in) | 5080 if (!yd->logged_in) |
5080 return; | 5081 return; |
5093 | 5094 |
5094 yahoo_packet_send_and_free(pkt, yd); | 5095 yahoo_packet_send_and_free(pkt, yd); |
5095 } | 5096 } |
5096 | 5097 |
5097 void yahoo_rem_deny(PurpleConnection *gc, const char *who) { | 5098 void yahoo_rem_deny(PurpleConnection *gc, const char *who) { |
5098 YahooData *yd = (YahooData *)gc->proto_data; | 5099 YahooData *yd = purple_connection_get_protocol_data(gc); |
5099 struct yahoo_packet *pkt; | 5100 struct yahoo_packet *pkt; |
5100 YahooFederation fed = YAHOO_FEDERATION_NONE; | 5101 YahooFederation fed = YAHOO_FEDERATION_NONE; |
5101 | 5102 |
5102 if (!yd->logged_in) | 5103 if (!yd->logged_in) |
5103 return; | 5104 return; |
5141 } | 5142 } |
5142 | 5143 |
5143 void yahoo_change_buddys_group(PurpleConnection *gc, const char *who, | 5144 void yahoo_change_buddys_group(PurpleConnection *gc, const char *who, |
5144 const char *old_group, const char *new_group) | 5145 const char *old_group, const char *new_group) |
5145 { | 5146 { |
5146 YahooData *yd = gc->proto_data; | 5147 YahooData *yd = purple_connection_get_protocol_data(gc); |
5147 struct yahoo_packet *pkt; | 5148 struct yahoo_packet *pkt; |
5148 char *gpn, *gpo; | 5149 char *gpn, *gpo; |
5149 YahooFriend *f = yahoo_friend_find(gc, who); | 5150 YahooFriend *f = yahoo_friend_find(gc, who); |
5150 const char *temp = NULL; | 5151 const char *temp = NULL; |
5151 | 5152 |
5188 } | 5189 } |
5189 | 5190 |
5190 void yahoo_rename_group(PurpleConnection *gc, const char *old_name, | 5191 void yahoo_rename_group(PurpleConnection *gc, const char *old_name, |
5191 PurpleGroup *group, GList *moved_buddies) | 5192 PurpleGroup *group, GList *moved_buddies) |
5192 { | 5193 { |
5193 YahooData *yd = gc->proto_data; | 5194 YahooData *yd = purple_connection_get_protocol_data(gc); |
5194 struct yahoo_packet *pkt; | 5195 struct yahoo_packet *pkt; |
5195 char *gpn, *gpo; | 5196 char *gpn, *gpo; |
5196 | 5197 |
5197 gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL); | 5198 gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL); |
5198 gpo = yahoo_string_encode(gc, old_name, NULL); | 5199 gpo = yahoo_string_encode(gc, old_name, NULL); |