]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/communicator.cpp
Acutally implement Protocol::get_hash
[libs/net.git] / source / net / communicator.cpp
index 92279c24e642bc7c6f9c2b80eba60f69d1b9c8a2..07c3be4f6b1d7c25623a957217a98f5bccea21a6 100644 (file)
@@ -10,7 +10,7 @@ using namespace Msp::Net;
 
 struct Handshake
 {
-       unsigned hash;
+       Msp::UInt64 hash;
 };
 
 
@@ -30,11 +30,11 @@ HandshakeProtocol::HandshakeProtocol():
 class HandshakeReceiver: public PacketReceiver<Handshake>
 {
 private:
-       unsigned hash;
+       Msp::UInt64 hash;
 
 public:
        HandshakeReceiver();
-       unsigned get_hash() const { return hash; }
+       Msp::UInt64 get_hash() const { return hash; }
        virtual void receive(const Handshake &);
 };
 
@@ -125,15 +125,16 @@ void Communicator::data_available()
                                HandshakeReceiver hsrecv;
                                if((more = receive_packet(hsproto, hsrecv)))
                                {
+                                       if(handshake_status==0)
+                                               send_handshake();
+
                                        if(hsrecv.get_hash()==protocol.get_hash())
                                        {
-                                               if(handshake_status==0)
-                                                       send_handshake();
                                                handshake_status = 2;
                                                signal_handshake_done.emit();
                                        }
                                        else
-                                               good = false;
+                                               throw incompatible_protocol("hash mismatch");
                                }
                        }
                }