Mercurial > pidgin
comparison libpurple/protocols/msn/msn.c @ 23488:8aa7e01bc4d5
An MSN patch from Masca to check if there's a SB available before
sending OIM's.
References #4877.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 20 Jun 2008 04:58:20 +0000 |
parents | 46d8edad1647 |
children | efa4534fd23a |
comparison
equal
deleted
inserted
replaced
23487:d65150b5622f | 23488:8aa7e01bc4d5 |
---|---|
1093 msn_send_im(PurpleConnection *gc, const char *who, const char *message, | 1093 msn_send_im(PurpleConnection *gc, const char *who, const char *message, |
1094 PurpleMessageFlags flags) | 1094 PurpleMessageFlags flags) |
1095 { | 1095 { |
1096 PurpleAccount *account; | 1096 PurpleAccount *account; |
1097 PurpleBuddy *buddy = purple_find_buddy(gc->account, who); | 1097 PurpleBuddy *buddy = purple_find_buddy(gc->account, who); |
1098 MsnSession *session; | |
1099 MsnSwitchBoard *swboard; | |
1098 MsnMessage *msg; | 1100 MsnMessage *msg; |
1099 char *msgformat; | 1101 char *msgformat; |
1100 char *msgtext; | 1102 char *msgtext; |
1101 const char *username; | 1103 const char *username; |
1102 | 1104 |
1103 purple_debug_info("MSNP14","send IM {%s} to %s\n",message,who); | 1105 purple_debug_info("MSNP14","send IM {%s} to %s\n",message,who); |
1104 account = purple_connection_get_account(gc); | 1106 account = purple_connection_get_account(gc); |
1105 username = purple_account_get_username(account); | 1107 username = purple_account_get_username(account); |
1108 | |
1109 session = gc->proto_data; | |
1110 swboard = msn_session_find_swboard(session, who); | |
1106 | 1111 |
1107 if (buddy) { | 1112 if (buddy) { |
1108 PurplePresence *p = purple_buddy_get_presence(buddy); | 1113 PurplePresence *p = purple_buddy_get_presence(buddy); |
1109 if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_MOBILE)) { | 1114 if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_MOBILE)) { |
1110 char *text = purple_markup_strip_html(message); | 1115 char *text = purple_markup_strip_html(message); |
1113 return 1; | 1118 return 1; |
1114 } | 1119 } |
1115 } | 1120 } |
1116 | 1121 |
1117 msn_import_html(message, &msgformat, &msgtext); | 1122 msn_import_html(message, &msgformat, &msgtext); |
1118 /* this is incorrect, we should try to initiate a connection to the | |
1119 buddy first, and only falls back if that fails. Otherwise we can | |
1120 only send offline message to invisible buddies */ | |
1121 if (msn_user_is_online(account, who)|| | 1123 if (msn_user_is_online(account, who)|| |
1122 msn_user_is_yahoo(account, who)){ | 1124 msn_user_is_yahoo(account, who) || |
1123 /*User online,then send Online Instant Message*/ | 1125 swboard != NULL){ |
1124 | 1126 /*User online or have a swboard open because it's invisible |
1127 * and sent us a message,then send Online Instant Message*/ | |
1128 | |
1125 if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) | 1129 if (strlen(msgtext) + strlen(msgformat) + strlen(VERSION) > 1564) |
1126 { | 1130 { |
1127 g_free(msgformat); | 1131 g_free(msgformat); |
1128 g_free(msgtext); | 1132 g_free(msgtext); |
1129 | 1133 |
1138 g_free(msgtext); | 1142 g_free(msgtext); |
1139 | 1143 |
1140 purple_debug_info("MSNP14","prepare to send online Message\n"); | 1144 purple_debug_info("MSNP14","prepare to send online Message\n"); |
1141 if (g_ascii_strcasecmp(who, username)) | 1145 if (g_ascii_strcasecmp(who, username)) |
1142 { | 1146 { |
1143 MsnSession *session; | |
1144 MsnSwitchBoard *swboard; | |
1145 MsnEmoticon *smile; | 1147 MsnEmoticon *smile; |
1146 GSList *smileys; | 1148 GSList *smileys; |
1147 GString *emoticons = NULL; | 1149 GString *emoticons = NULL; |
1148 | 1150 |
1149 session = gc->proto_data; | |
1150 if(msn_user_is_yahoo(account,who)){ | 1151 if(msn_user_is_yahoo(account,who)){ |
1151 /*we send the online and offline Message to Yahoo User via UBM*/ | 1152 /*we send the online and offline Message to Yahoo User via UBM*/ |
1152 purple_debug_info("MSNP14","send to Yahoo User\n"); | 1153 purple_debug_info("MSNP14","send to Yahoo User\n"); |
1153 uum_send_msg(session,msg); | 1154 uum_send_msg(session,msg); |
1154 }else{ | 1155 }else{ |
1201 } | 1202 } |
1202 | 1203 |
1203 msn_message_destroy(msg); | 1204 msn_message_destroy(msg); |
1204 } else { | 1205 } else { |
1205 /*send Offline Instant Message,only to MSN Passport User*/ | 1206 /*send Offline Instant Message,only to MSN Passport User*/ |
1206 MsnSession *session; | |
1207 char *friendname; | 1207 char *friendname; |
1208 | 1208 |
1209 purple_debug_info("MSNP14","prepare to send offline Message\n"); | 1209 purple_debug_info("MSNP14","prepare to send offline Message\n"); |
1210 session = gc->proto_data; | |
1211 | 1210 |
1212 friendname = msn_encode_mime(account->username); | 1211 friendname = msn_encode_mime(account->username); |
1213 msn_oim_prep_send_msg_info(session->oim, | 1212 msn_oim_prep_send_msg_info(session->oim, |
1214 purple_account_get_username(account), | 1213 purple_account_get_username(account), |
1215 friendname, who, msgtext); | 1214 friendname, who, msgtext); |