src/Network/Server.cc
changeset 391 59c2499fe7bb
parent 387 294ce7ae8140
child 406 a2e35ca66c74
--- a/src/Network/Server.cc	Tue Jan 13 20:21:28 2009 +0200
+++ b/src/Network/Server.cc	Tue Jan 13 21:14:12 2009 +0200
@@ -6,7 +6,6 @@
 #include "../Logger.hh"
 
 #include <cassert>
-#include <zlib.h>
 
 NetworkServer::NetworkServer (GameState &state, const NetworkEndpoint &listen_addr) : 
     state(state), netsession(NETWORK_MAGIC_ID), controller(netsession, NETCHAN_CORE) {
@@ -250,19 +249,16 @@
         }
     }
 
-    // compress the terrain buffer
-    unsigned long deflate_size = compressBound(terrain_size);
-    uint8_t deflate_buf[deflate_size];
-
-    // and compress
-    if (compress(deflate_buf, &deflate_size, (const uint8_t *) terrain_buf, terrain_size) != Z_OK)
-       throw Error("compress failed"); 
-    
     // allocate our packet...
     BigNetworkPacket pkt (
-        NETWORK_SESSION_HEADER_SIZE     // NetworkChannel header
-        + 3 * sizeof(uint32_t)          // our own header
-        + deflate_size                  // compressed terrain buffer
+        // NetworkChannel header
+        NETWORK_SESSION_HEADER_SIZE     
+
+        // our own header
+        + 2 * sizeof(uint32_t)          
+
+        // compressed terrain buffer
+        + NetworkPacketOutput::write_compressed_size(terrain_size)
     );
     
     // write netsession header
@@ -272,8 +268,8 @@
     pkt.write_uint32(map.x);
     pkt.write_uint32(map.y);
 
-    // write compressed data
-    pkt.write(deflate_buf, deflate_size);
+    // write compressed terrain data
+    pkt.write_compressed(terrain_buf, terrain_size);
 
     // send
     node->send_raw(pkt, true);