Check for compatibility with the client

Property definitions

gamnit $ RemoteClient :: handshake
	# Check for compatibility with the client
	fun handshake: Bool
	do
		print "Server: Handshake initiated by {socket.address}"

		# Make sure it is the same app
		var server_app = sys.handshake_app_name
		var client_app = socket.deserialize_msgpack
		if server_app != client_app then
			print_error "Server Error: Client app name is '{client_app or else "<invalid>"}'"

			# Send an empty string so the client read it and give up
			socket.serialize_msgpack ""
			socket.close
			return false
		end

		socket.serialize_msgpack server_app

		# App version
		var app_version = sys.handshake_app_version
		var client_version = socket.deserialize_msgpack
		if client_version != app_version then
			print_error "Handshake Error: client version is different '{client_version or else "<invalid>"}'"
			socket.serialize_msgpack ""
			socket.close
			return false
		end

		socket.serialize_msgpack app_version

		return true
	end
lib/gamnit/network/server.nit:178,2--210,4