Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/si.c @ 30037:f988f25259c7
merged with im.pidgin.pidgin
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Wed, 24 Mar 2010 17:44:40 +0900 |
parents | f44718de8b06 9f59abd49def |
children | 77aba27f64da |
comparison
equal
deleted
inserted
replaced
29995:2292d8896b0b | 30037:f988f25259c7 |
---|---|
289 else | 289 else |
290 dstaddr = g_strdup_printf("%s%s@%s/%s%s@%s/%s", jsx->stream_id, dstjid->node, dstjid->domain, dstjid->resource, | 290 dstaddr = g_strdup_printf("%s%s@%s/%s%s@%s/%s", jsx->stream_id, dstjid->node, dstjid->domain, dstjid->resource, |
291 jsx->js->user->node, jsx->js->user->domain, jsx->js->user->resource); | 291 jsx->js->user->node, jsx->js->user->domain, jsx->js->user->resource); |
292 | 292 |
293 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ | 293 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ |
294 hash = jabber_calculate_data_sha1sum(dstaddr, strlen(dstaddr)); | 294 hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1"); |
295 | 295 |
296 jsx->connect_data = purple_proxy_connect_socks5(NULL, jsx->gpi, | 296 jsx->connect_data = purple_proxy_connect_socks5(NULL, jsx->gpi, |
297 hash, 0, | 297 hash, 0, |
298 jabber_si_bytestreams_connect_cb, xfer); | 298 jabber_si_bytestreams_connect_cb, xfer); |
299 g_free(hash); | 299 g_free(hash); |
474 dstaddr = g_strdup_printf("%s%s@%s/%s%s", jsx->stream_id, | 474 dstaddr = g_strdup_printf("%s%s@%s/%s%s", jsx->stream_id, |
475 jsx->js->user->node, jsx->js->user->domain, | 475 jsx->js->user->node, jsx->js->user->domain, |
476 jsx->js->user->resource, xfer->who); | 476 jsx->js->user->resource, xfer->who); |
477 | 477 |
478 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ | 478 /* Per XEP-0065, the 'host' must be SHA1(SID + from JID + to JID) */ |
479 hash = jabber_calculate_data_sha1sum(dstaddr, strlen(dstaddr)); | 479 hash = jabber_calculate_data_hash(dstaddr, strlen(dstaddr), "sha1"); |
480 | 480 |
481 if(strncmp(hash, jsx->rxqueue + 5, 40) || | 481 if(strncmp(hash, jsx->rxqueue + 5, 40) || |
482 jsx->rxqueue[45] != 0x00 || jsx->rxqueue[46] != 0x00) { | 482 jsx->rxqueue[45] != 0x00 || jsx->rxqueue[46] != 0x00) { |
483 if (jsx->rxqueue[45] != 0x00 || jsx->rxqueue[46] != 0x00) | 483 if (jsx->rxqueue[45] != 0x00 || jsx->rxqueue[46] != 0x00) |
484 purple_debug_error("jabber", "Got SOCKS5 BS conn with the wrong DST.PORT" | 484 purple_debug_error("jabber", "Got SOCKS5 BS conn with the wrong DST.PORT" |
1075 jabber_si_xfer_ibb_closed_cb); | 1075 jabber_si_xfer_ibb_closed_cb); |
1076 jabber_ibb_session_set_error_callback(sess, | 1076 jabber_ibb_session_set_error_callback(sess, |
1077 jabber_si_xfer_ibb_error_cb); | 1077 jabber_si_xfer_ibb_error_cb); |
1078 | 1078 |
1079 jsx->ibb_session = sess; | 1079 jsx->ibb_session = sess; |
1080 /* we handle up to block-size bytes of decoded data, to handle | |
1081 clients interpreting the block-size attribute as that | |
1082 (see also remark in ibb.c) */ | |
1080 jsx->ibb_buffer = | 1083 jsx->ibb_buffer = |
1081 purple_circ_buffer_new(jabber_ibb_session_get_block_size(sess)); | 1084 purple_circ_buffer_new(jabber_ibb_session_get_block_size(sess)); |
1082 | 1085 |
1083 /* set up read function */ | 1086 /* set up read function */ |
1084 purple_xfer_set_read_fnc(xfer, jabber_si_xfer_ibb_read); | 1087 purple_xfer_set_read_fnc(xfer, jabber_si_xfer_ibb_read); |
1103 static gssize | 1106 static gssize |
1104 jabber_si_xfer_ibb_write(const guchar *buffer, size_t len, PurpleXfer *xfer) | 1107 jabber_si_xfer_ibb_write(const guchar *buffer, size_t len, PurpleXfer *xfer) |
1105 { | 1108 { |
1106 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; | 1109 JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; |
1107 JabberIBBSession *sess = jsx->ibb_session; | 1110 JabberIBBSession *sess = jsx->ibb_session; |
1108 gsize packet_size = len < jabber_ibb_session_get_block_size(sess) ? | 1111 gsize packet_size = len < jabber_ibb_session_get_max_data_size(sess) ? |
1109 len : jabber_ibb_session_get_block_size(sess); | 1112 len : jabber_ibb_session_get_max_data_size(sess); |
1110 | 1113 |
1111 jabber_ibb_session_send_data(sess, buffer, packet_size); | 1114 jabber_ibb_session_send_data(sess, buffer, packet_size); |
1112 | 1115 |
1113 return packet_size; | 1116 return packet_size; |
1114 } | 1117 } |
1170 jabber_si_xfer_ibb_error_cb); | 1173 jabber_si_xfer_ibb_error_cb); |
1171 | 1174 |
1172 purple_xfer_set_write_fnc(xfer, jabber_si_xfer_ibb_write); | 1175 purple_xfer_set_write_fnc(xfer, jabber_si_xfer_ibb_write); |
1173 | 1176 |
1174 jsx->ibb_buffer = | 1177 jsx->ibb_buffer = |
1175 purple_circ_buffer_new(jabber_ibb_session_get_block_size(jsx->ibb_session)); | 1178 purple_circ_buffer_new(jabber_ibb_session_get_max_data_size(jsx->ibb_session)); |
1176 | 1179 |
1177 /* open the IBB session */ | 1180 /* open the IBB session */ |
1178 jabber_ibb_session_open(jsx->ibb_session); | 1181 jabber_ibb_session_open(jsx->ibb_session); |
1179 | 1182 |
1180 } else { | 1183 } else { |