From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=irif.fr (client-ip=2001:660:3301:8000::1:2; helo=korolev.univ-paris7.fr; envelope-from=jch@irif.fr; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=irif.fr header.i=@irif.fr header.a=rsa-sha256 header.s=dkim-irif header.b=Yy1GewBU Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) by mail.toke.dk (Postfix) with ESMTPS id 8EE039D1A42 for ; Sun, 18 Dec 2022 20:09:16 +0100 (CET) Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 2BIJ9F3K028237 for ; Sun, 18 Dec 2022 20:09:15 +0100 Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id C3CB6DBFB3 for ; Sun, 18 Dec 2022 20:09:15 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=irif.fr; h= content-type:content-type:mime-version:user-agent:subject :subject:from:from:message-id:date:date:received:received; s= dkim-irif; t=1671390554; x=1672254555; bh=j+Yz+gOvawN3SuX4O1xThj 2OGhJPyddiYPr6j0PK0W0=; b=Yy1GewBUR0C3KbV+HitdGyZ1bKbpRLReQb3rdq 21rnLbXekfvOkYLxk0J13STVcW5yhsZu8VLe8IK4xpTTHOKFEmPOtPdvM32se786 yJBZAOWpolJq0Bcf2gPmQzIaSDrpF5eTvH6KIUNj8y9zZQ0m65lfLVZY1QO5+aIZ 8l4MrT+2hsfSpcXk849E307h5Cm5i1BEUzwCW+WjZHO5BymXd3sWhc2FEY2KXmxB qf+Kizi9bHyZYGZJ6N4cRBBHvNjglS/tFFvJFBi3bsxLB0GiOww5PqUByF8dNZDs Mfb4jsH0NTfOXsDFPa9K32P/JkbGS4ZnF1wuTzS1oDBIIdyw== X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id oh0RM7Rm8J-i for ; Sun, 18 Dec 2022 20:09:14 +0100 (CET) Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id 39FACDBFB0 for ; Sun, 18 Dec 2022 20:09:13 +0100 (CET) Date: Sun, 18 Dec 2022 20:09:13 +0100 Message-ID: <87sfhch6li.wl-jch@irif.fr> From: Juliusz Chroboczek To: galene@lists.galene.org User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/28.2 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [194.254.61.138]); Sun, 18 Dec 2022 20:09:16 +0100 (CET) X-Miltered: at korolev with ID 639F655B.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 639F655B.000 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/ X-j-chkmail-Score: MSGID : 639F655B.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham Message-ID-Hash: NRB4RNVOYSRRL2DVHG42UVKMRTLEB2FR X-Message-ID-Hash: NRB4RNVOYSRRL2DVHG42UVKMRTLEB2FR X-MailFrom: jch@irif.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.7 Precedence: list Subject: [Galene] Heads up: incompatible changes to protocol List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Hi, This is just to warn people that Galene's protocol will bump its version within the next weeks. The current status is as follows: - the server in the master branch speaks protocol 1; - the servers in the branch "stateful-token" speaks protocol 2; - the Javascript client speaks both protocols; - the Android client speaks both protocols. I am not planning to implement any compatibility code on the server side; on the other hand, I will maintain compatibility with protocol 1 on the client side for at least a couple versions. Changes in protocol 2 ********************* Dates are now encoded as strings in RFC 3339 format rather than numbers; numbers can be used to specify relative dates ("so many milliseconds from now"), which avoids issues with incorrect client-side clocks. Error messages may now contain a machine-readable, stable identifier in the "error" field in addition to the human readable string in the "value" field. This makes it possible for the client to react to server-side messages without having to parse the (human-readable) error message. Some errors have become non-fatal, they indicate that an action has not been taken without dropping the connection. Together with the previous change, this makes it possible for a client to gracefully recover from an error, most notably if a feature is not implemented by the server. There is one new group action and one new user action, used for stateful tokens (similar to Zoom invites). This part of the protocol is still in flux. What do you need to do? *********************** ## If you're a user If you're only using the web client, there's nothing to do. If you're using the Android client, you should upgrade to a version from 16 December or later. ## If you're a Javascript frontend developer Upgrade to a version of the protocol.js library dated 16 December or later. The type of the "onchat" and "onusermessage" has changed, the "time" field is now a "Date" object instead of an integer. You may convert it to an integer by using the "getTime" method. ## If you're speaking the protocol directly Ensure that you send "[2,1]" in the version field in the handshake message to the server, indicating that you speak both versions. Accept server handshakes with either version "[1]" or "[2]". When parsing dates in "chat", "chathistory" and "usermessage" messages, make sure that you accept both integer dates (in protocol 1) and strings in RFC 3339 format (in protocol 2). For example, in Javascript you may simply use the "Date" constructor, in Python, you may use the "datetime.fromisoformat" method, and in Go, use "time.RFC3339". -- Juliusz