struct Handshake
{
- unsigned hash;
+ Msp::UInt64 hash;
};
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 &);
};
while(more)
{
if(handshake_status==2)
- {
more = receive_packet(protocol, receiver);
- }
else
{
HandshakeProtocol hsproto;
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");
}
}
}