X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fconnection.cpp;h=9cffb895a52b755e5b818adaba3ee7e02da36585;hp=361cfda8f42384ccc365e9af506f012bb2c11808;hb=8104c8f70605ee24230e5988d7bf68e3fce7465a;hpb=a7170401dd90dc79cc7d7a808cfe18a06c7e983b diff --git a/src/connection.cpp b/src/connection.cpp index 361cfda..9cffb89 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -21,6 +21,8 @@ #include #include +#include + #include "connection.hxx" namespace libt2n @@ -31,13 +33,13 @@ connection::packet_size_indicator connection::bytes_available() // max packet size is unsigned int // no size information -> no packet - if (buffer.size() < sizeof(unsigned int)) + if (buffer.size() < sizeof(packet_size_indicator)) return 0; - packet_size_indicator psize=*((packet_size_indicator*)(buffer.data())); + packet_size_indicator psize=ntohl(*((packet_size_indicator*)(buffer.data()))); // enough data for one packet in buffer? - if (buffer.size() < sizeof(unsigned int)+psize) + if (buffer.size() < sizeof(packet_size_indicator)+psize) return 0; // ok, full packet there @@ -55,8 +57,8 @@ bool connection::get_packet(std::string& data) if ((psize=bytes_available())) { - data.assign(buffer,sizeof(unsigned int),psize); - buffer.erase(0,sizeof(unsigned int)+psize); + data.assign(buffer,sizeof(packet_size_indicator),psize); + buffer.erase(0,sizeof(packet_size_indicator)+psize); return true; } else @@ -67,7 +69,7 @@ bool connection::get_packet(std::string& data) void connection::write(const std::string& data) { // prepend packet size to data - packet_size_indicator psize=data.size(); + packet_size_indicator psize=htonl(data.size()); std::string send_data(data); send_data.insert(0,(char*)&psize,sizeof(packet_size_indicator));