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=) 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 7CAA07D8294 for ; Sun, 31 Jan 2021 21:22:59 +0100 (CET) Received: from potemkin.univ-paris7.fr (potemkin.univ-paris7.fr [IPv6:2001:660:3301:8000::1:1]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 10VKMuC8013424 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Sun, 31 Jan 2021 21:22:56 +0100 Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by potemkin.univ-paris7.fr (8.14.4/8.14.4/relay2/82085) with ESMTP id 10VKMucw002440 for ; Sun, 31 Jan 2021 21:22:56 +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 8E7CDCDC19 for ; Sun, 31 Jan 2021 21:22:56 +0100 (CET) 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 jYO3erQWFKME for ; Sun, 31 Jan 2021 21:22:55 +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 03F83CDC17 for ; Sun, 31 Jan 2021 21:22:54 +0100 (CET) Date: Sun, 31 Jan 2021 21:22:54 +0100 Message-ID: <871re0500x.wl-jch@irif.fr> From: Juliusz Chroboczek To: galene@lists.galene.org User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.1 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=UTF-8 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]); Sun, 31 Jan 2021 21:22:56 +0100 (CET) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (potemkin.univ-paris7.fr [194.254.61.141]); Sun, 31 Jan 2021 21:22:56 +0100 (CET) X-Miltered: at korolev with ID 601711A0.001 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-Miltered: at potemkin with ID 601711A0.002 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 601711A0.001 from potemkin.univ-paris7.fr/potemkin.univ-paris7.fr/null/potemkin.univ-paris7.fr/ X-j-chkmail-Enveloppe: 601711A0.002 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 : 601711A0.001 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Score: MSGID : 601711A0.002 on potemkin.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham X-j-chkmail-Status: Ham Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4D7M67QBH3JCJM3AGCAIZJUBO5PRWRSX X-Message-ID-Hash: 4D7M67QBH3JCJM3AGCAIZJUBO5PRWRSX 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; suspicious-header X-Mailman-Version: 3.3.2 Precedence: list Subject: [Galene] Protocol rework List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Hi, I've just done some fairly major surgery to the protocol. The code lives in the branch "stable-id", I'll merge it into master later tonight. It's already deployed on galene.org, please let me know if I've broken anythin= g. Some background. Gal=C3=A8ne's protocol is asynchronous: the state autom= ata of distinct flows are not synchronised between each other, which allows us t= o perform multiple negotiations in parallel. Obviously, this means that we must take care not to mix up messages pertaining to distinct flows, so each flow is identified by an "id", which is supposed globally unique. Gal=C3=A8ne also performs flow stitching: when a user changes the paramet= er of their flow, Gal=C3=A8ne will sometimes not attempt to renegotiate the flo= w, it will simply replace the flow with a new one, negotiated from scratch. This avoids tricky edge-cases related to renegotation, but requires the protocol to carry information about which flow replaces which one. We used to signal stitching by reusing the same id. This made the code somewhat insecure (we couldn't reliably identify an id collision, which a malicious client could cause), and was racy =E2=80=94 we'd sometimes mi= stake an old answer for a recent one. We now signal stiching explicitly, with a "replace" field in the "offer" message. This means that we can no longer use the flow id as the id of a= n HTML element, so the client library now has a new "localId" which remains stable across replacements. This completes my plans for 0.3 =E2=80=94 no new features before 0.3 is o= ut. -- Juliusz