Changeset 5506
- Timestamp:
- 05/08/08 13:49:31 (1 week ago)
- Files:
-
- libwired/trunk/libwired/p7/wi-p7-socket.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libwired/trunk/libwired/p7/wi-p7-socket.c
r5454 r5506 148 148 149 149 wi_boolean_t compression_enabled; 150 z_stream deflate_stream; 151 z_stream inflate_stream; 150 152 151 153 wi_boolean_t checksum_enabled; … … 193 195 static wi_p7_message_t * _wi_p7_socket_read_xml_message(wi_p7_socket_t *, wi_time_interval_t, wi_string_t *); 194 196 197 static wi_boolean_t _wi_p7_socket_configure_compression(wi_p7_socket_t *); 195 198 static wi_integer_t _wi_p7_socket_deflate(wi_p7_socket_t *, const void *, uint32_t); 196 199 static wi_integer_t _wi_p7_socket_inflate(wi_p7_socket_t *, const void *, uint32_t); … … 1101 1104 1102 1105 if(p7_socket->compression_enabled) { 1106 wi_log_info(WI_STR("compressing")); 1107 1103 1108 compressed_size = _wi_p7_socket_deflate(p7_socket, send_buffer, send_size); 1104 1109 … … 1111 1116 1112 1117 if(p7_socket->encryption_enabled) { 1118 wi_log_info(WI_STR("encrypting")); 1119 1113 1120 encrypted_size = send_size + wi_cipher_block_size(p7_socket->cipher); 1114 1121 … … 1146 1153 if(p7_socket->checksum_enabled) { 1147 1154 _wi_p7_socket_checksum_binary_message(p7_socket, p7_message, checksum_buffer); 1155 1156 wi_log_info(WI_STR("send message data %@"), wi_data_with_bytes(send_buffer, send_size)); 1157 wi_log_info(WI_STR("writing checksum %@"), wi_data_with_bytes(checksum_buffer, p7_socket->checksum_length)); 1148 1158 1149 1159 if(wi_socket_write_buffer(p7_socket->socket, timeout, checksum_buffer, p7_socket->checksum_length) < 0) … … 1307 1317 #pragma mark - 1308 1318 1319 static wi_boolean_t _wi_p7_socket_configure_compression(wi_p7_socket_t *p7_socket) { 1320 int err; 1321 1322 p7_socket->deflate_stream.data_type = Z_UNKNOWN; 1323 1324 err = deflateInit(&p7_socket->deflate_stream, Z_DEFAULT_COMPRESSION); 1325 1326 if(err != Z_OK) { 1327 wi_error_set_zlib_error(err); 1328 1329 return false; 1330 } 1331 1332 err = inflateInit(&p7_socket->inflate_stream); 1333 1334 if(err != Z_OK) { 1335 wi_error_set_zlib_error(err); 1336 1337 return false; 1338 } 1339 1340 p7_socket->compression_enabled = true; 1341 1342 return true; 1343 } 1344 1345 1346 1309 1347 static wi_integer_t _wi_p7_socket_deflate(wi_p7_socket_t *p7_socket, const void *in_buffer, uint32_t in_size) { 1310 z_stream stream;1348 wi_integer_t bytes; 1311 1349 int err, enderr; 1312 1350 … … 1318 1356 p7_socket->compression_buffer = wi_realloc(p7_socket->compression_buffer, p7_socket->compression_buffer_length); 1319 1357 1320 stream.data_type = Z_UNKNOWN; 1321 stream.zalloc = Z_NULL; 1322 stream.zfree = Z_NULL; 1323 stream.opaque = Z_NULL; 1324 stream.next_in = (unsigned char *) in_buffer; 1325 stream.avail_in = in_size; 1326 stream.next_out = p7_socket->compression_buffer; 1327 stream.avail_out = p7_socket->compression_buffer_length; 1328 1329 err = deflateInit(&stream, Z_DEFAULT_COMPRESSION); 1330 1331 if(err != Z_OK) { 1332 wi_error_set_zlib_error(err); 1333 1334 return -1; 1335 } 1336 1337 err = deflate(&stream, Z_FINISH); 1338 enderr = deflateEnd(&stream); 1358 p7_socket->deflate_stream.next_in = (unsigned char *) in_buffer; 1359 p7_socket->deflate_stream.avail_in = in_size; 1360 p7_socket->deflate_stream.next_out = p7_socket->compression_buffer; 1361 p7_socket->deflate_stream.avail_out = p7_socket->compression_buffer_length; 1362 1363 err = deflate(&p7_socket->deflate_stream, Z_FINISH); 1364 bytes = p7_socket->deflate_stream.total_out; 1365 enderr = deflateReset(&p7_socket->deflate_stream); 1339 1366 1340 1367 if(err != Z_STREAM_END) { … … 1353 1380 } 1354 1381 1355 return stream.total_out;1382 return bytes; 1356 1383 } 1357 1384 … … 1359 1386 1360 1387 static wi_integer_t _wi_p7_socket_inflate(wi_p7_socket_t *p7_socket, const void *in_buffer, uint32_t in_size) { 1361 z_stream stream; 1362 wi_uinteger_t multiple; 1388 wi_uinteger_t multiple, bytes; 1363 1389 int err, enderr; 1364 1390 … … 1371 1397 p7_socket->compression_buffer = wi_realloc(p7_socket->compression_buffer, p7_socket->compression_buffer_length); 1372 1398 1373 stream.zalloc = Z_NULL; 1374 stream.zfree = Z_NULL; 1375 stream.next_in = (unsigned char *) in_buffer; 1376 stream.avail_in = in_size; 1377 stream.next_out = (unsigned char *) p7_socket->compression_buffer; 1378 stream.avail_out = p7_socket->compression_buffer_length; 1379 1380 err = inflateInit(&stream); 1381 1382 if(err != Z_OK) { 1383 wi_error_set_zlib_error(err); 1384 1385 return -1; 1386 } 1387 1388 err = inflate(&stream, Z_FINISH); 1389 enderr = inflateEnd(&stream); 1399 p7_socket->inflate_stream.next_in = (unsigned char *) in_buffer; 1400 p7_socket->inflate_stream.avail_in = in_size; 1401 p7_socket->inflate_stream.next_out = (unsigned char *) p7_socket->compression_buffer; 1402 p7_socket->inflate_stream.avail_out = p7_socket->compression_buffer_length; 1403 1404 err = inflate(&p7_socket->inflate_stream, Z_FINISH); 1405 bytes = p7_socket->inflate_stream.total_out; 1406 enderr = inflateReset(&p7_socket->inflate_stream); 1390 1407 1391 1408 if(err == Z_STREAM_END) { … … 1397 1414 } 1398 1415 } 1399 1400 return stream.total_out;1416 1417 return bytes; 1401 1418 } 1402 1419 … … 1440 1457 return false; 1441 1458 1459 if(WI_P7_COMPRESSION_ENABLED(p7_socket->options)) { 1460 if(!_wi_p7_socket_configure_compression(p7_socket)) 1461 return false; 1462 } 1463 1442 1464 if(WI_P7_CHECKSUM_ENABLED(p7_socket->options)) 1443 1465 _wi_p7_socket_configure_checksum(p7_socket); … … 1472 1494 return false; 1473 1495 1496 if(WI_P7_COMPRESSION_ENABLED(p7_socket->options)) { 1497 if(!_wi_p7_socket_configure_compression(p7_socket)) 1498 return false; 1499 } 1500 1474 1501 if(WI_P7_CHECKSUM_ENABLED(p7_socket->options)) 1475 1502 _wi_p7_socket_configure_checksum(p7_socket);
