这是SDPARTA!Firefox WebRTC实现中的复活节彩蛋

2020-09-07 05:04:57

当在Firefox中的WebRTC信令过程中生成Offer和Answer对象时,Mozilla通过返回答案和提议,添加了一个关于会话描述协议的双关语";this_is_SDPARTA.";

下面是两个SDP。一个是用Chrome制作的,另一个是用Firefox制作的,每一个都使用相同的Web应用程序、STUN服务器和信令服务器。

";答案";:{";类型";:";答案";,";SDP";:";V=0\r\no=-`Numbers omitted```2 in IP4123.4.5.6\r\ns=-\r\nt=0\r\na=GROUP:捆绑数据\r\na=MSID-语义:wms\r\nm=APPLICATION 9 DTD/SCTP5000\r\nc=INIP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:CYLs\r\na=ice-pwd:```pwd omitted```\r\na=ice-options:trickle\r\na=fingerprint:sha-256`sha-256 omitted```\r\na=SETUP:ACTIVE\r\na=MID:DATA\。R\na=sctpmap:5000 WebRTC-datachannel 1024\r\n";}。

";答案";:{";类型";:";答案";,";SDP";:";V=0\r\no=mozilla...THIS_IS_SDPARTA-61.0.2```numbers在IP4 0.0.0.0中省略``0\r\ns=-\r\nt=0\r\na=指纹:SHA-256```sha-256省略`\r\na=组:捆绑包sdparta_0\r\na=ice-options:trickle\r\na=msid-semantic:WMS*\r\nm=应用程序9DTLS/SCTP5000\r\nc=INIP4 0.0.0\r\na=sendrecv\r\na=ICE-Pwd:`pwd省略`\r\。\r\na=MID:sdparta_0\r\na=sctpmap:5000WebRTC-数据通道256\r\na=setup:active\r\na=max-message-size:1073741823\r\n";}。

根据RFC 4566概述会话描述协议,原始值由SDP字符串中的';o=value';指定:

我假设';this_is_SDPARTA根据协议被视为会话id的非正式前缀。

我找不到任何使用';ARTA&39;作为与SDP或WebRTC有任何关系的首字母缩写的用法。作为一个词,艺术可以是一个人的名字,也可以是希腊、吉布提或阿尔巴尼亚的一个地方。除了都是希腊人之外,我找不到古代斯巴达和阿尔塔之间的任何联系。维基百科在Arta;Arta;上的消歧页面。

搜索堆栈溢出以查找';this_sdparta&39;或';sdparta';会返回用户排除其SDP和信令故障的代码片段,没有人在其标题中提出带有sdparta的问题,因此搜索';sdparta';,也没有直接讨论';sdparta&39;或';this_is_sdparta';找到的任何答案。

我发现有两个开发人员专门讨论';this_is_sdparta';的示例。其中一条是伊纳基·巴兹·卡斯蒂略(Iñaki Baz Castillo)的一条推文,没有技术解释:

另一篇是一篇文章,在那里我很难找到作者的名字,而他大多只是享受其中的幽默。以下是截图:

注意:这是我删除的一个问题的转载,因为它包含个人网络连接详细信息。抱歉搞混了。

早在2014年,五名Mozilla开发人员(包括我自己)将他们自己锁在Airbnb中一周,以便在Firefox中添加对多数据流的支持。周一晚上,我们得出结论,使用当前的代码库是不可能实现这一点的,因为目前的代码库包含来自思科的完整的SIP堆栈。周二早上,我们开始删除所有我们永远不想再使用的代码,并开始用从头开始编写的代码替换它,但这些代码适合WebRTC更高级的用例。

可以想象,到了周末,我们所有人都受够了晦涩难懂的会话描述协议(Session Description Protocol)。因此,当Adam打开bug时,Byron开始研究SDP语法,以及它将允许我们将Firefox版本号放在哪里。就在那时,我们意识到这将是一个增加乐趣的理想地方。

所以TL;DR:这只是一个典型的复活节彩蛋,开发者想要在那里获得一些乐趣。仅此而已。

听起来像是相当长的一周。感谢分享详情!我没想到团队里的两个人都会回答。 --BEVR1337。

复活节彩蛋很不错,但在礼仪中使用它并不是认真的。例如,我想知道为什么WebRTC连接在一分钟后失败,我被要求检查关于:WebRTC,并看到this_is_SDPARTA。当我们试图找出事情失败的原因时,看到这样的笑话是很奇怪的。 -1个baptx

@baptx我不同意。说真的,整天看RFC可能会有压力。没有能让你快乐的小事,我们怎么能在生活中保持平衡呢? -*Millar248。

为了进一步说明尼尔斯的答案,我记不起这是我们五个人中谁的主意,但我认为可能是马丁。它出现在代码中的第一个位置是在重写的代码中的一些ASCII艺术中。

我们知道这次重写是极端和危险的,但是我们对当前代码状态的耐心终于耗尽了,房间里的气氛让人想起Leeroy Jenkins。因此,在代码中潜入了一点愚蠢的幽默。

,-。、--。、--。';.--./,--,--.,--,--,-';';-.`--';,-。,--,--,||';,-。|';-。.-';,--.|.-.|`';';--';\\';-';|';';';|';-';';|`-';`--`--';`-';`-';`--';`--';`--';';--';:+o+--dNNNNND。YNNNNNNNNS:mNNNNNm-`/sso/``-://-.:+sydNNNNNNMS:`://`-/+shmNNNNNNNNNNNNNNNNNNNMS-:mnnnm/`-/eydmNNNNNNNNNNNNNNNNNNNNNDO-+Nnnnnn+.shmNN。`sNNNNNm+hNNNNNNNNmhs+:-`.dNNNNNNNNNNNNNNNNNNNNNNNH+-``hNNNNNNNm:-yddyo/:。-dNNNNm::ymNNNNNNNNNNNNNNNNMdy+/dNNNNND。:mNNNND。`/ymNNNNNNNNNNNNNNNNNNNNH`+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNS sNNNNy`.yNNNNm`-/oymNNNm+`yNNNNNo oNNNNM`-。.dNNNNm/oNNNNm`oNNNNm:+NNNNNm`+yho。+NNNNNm`+NNNNNNs。`yNNNNNNMy--smNNNNNNh:.smNNNNNNH/`omNNNNNND:`+dNNNNNND`.`/hmdy-`.:/+osyhddmNNMMMMMMMMMMMMMMMMMMMMNNmddhyso+/:.``-+shmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmhs+-`-smMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMds-hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs.ohNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNh+.。./oydmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmhyo:.。`.:/+osyyhddmmNNMMMMMMMMMMMMMMNNmmddhyyso+/:.`,-.,--。、--。、--。';--。.--';|,-。`--';,-。||、-。||.-.|,--.(.-';|(.-';|.-';`)|.-';`)`--';`--';`--';`-';`-';`-';`-';--。,-。,-。,-。、--。|';.-';|.-.\|.--.';,--.-,-';';-。,--,--.||`。`-。|\:|';--';|';,-。||.--';';-。.-';';,-.。||.-';|';--';/||--';\';|\';-';|`--';`-';`-';`-';`-';`--';`--';`--`。.--.';__';

感谢您的回复!这个问题有很多很棒的答案和细节。我很感谢真正的团队参与进来。非常酷。 --BEVR1337。

有趣的调查。添加用户代理是出于调试目的,这可以从相关的错误中推断出来:

Adam Roach:如果我们在SDP中报告当前的Firefox版本,会对调试很有帮助。

然后,Byron Campen添加了一个带有用户代理和Mozilla...this_is_SDPARTA-<;user-agent<;行的变更集。因此,几乎可以肯定的是,没有更多的事情要做了。

感谢您挖掘错误和更改。这是一个很好的答案,因为它提供了来源。 --BEVR1337。

点击“发布您的答案”,即表示您同意我们的服务条款、隐私政策和Cookie政策。

不是你想要的答案吗?浏览标记的其他问题或提出您自己的问题。