Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package galene for openSUSE:Factory checked 
in at 2022-02-02 22:40:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/galene (Old)
 and      /work/SRC/openSUSE:Factory/.galene.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "galene"

Wed Feb  2 22:40:48 2022 rev:15 rq:950560 version:0.4.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/galene/galene.changes    2022-01-27 
23:18:54.418173956 +0100
+++ /work/SRC/openSUSE:Factory/.galene.new.1898/galene.changes  2022-02-02 
22:41:55.223325791 +0100
@@ -1,0 +2,9 @@
+Tue Feb 01 21:10:01 UTC 2022 - mich...@stroeder.com
+
+- Update to version 0.4.4:
+  * Update dependencies.  Pion WebRTC v3.1.19 fixes a bug that could cause
+    audio tracks to be discarded under some circumstances.
+  * Fix a bug that could cause user statuses (raisehand) to be discarded.
+  * Fix incorrect maxRate value in statistics display.
+
+-------------------------------------------------------------------

Old:
----
  galene-0.4.3.tar.gz

New:
----
  galene-0.4.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ galene.spec ++++++
--- /var/tmp/diff_new_pack.I9ZgAb/_old  2022-02-02 22:41:57.115312967 +0100
+++ /var/tmp/diff_new_pack.I9ZgAb/_new  2022-02-02 22:41:57.119312940 +0100
@@ -25,7 +25,7 @@
 %bcond_without  apparmor
 
 Name:           galene
-Version:        0.4.3
+Version:        0.4.4
 Release:        0
 Summary:        Gal??ne videoconferencing server
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.I9ZgAb/_old  2022-02-02 22:41:57.159312669 +0100
+++ /var/tmp/diff_new_pack.I9ZgAb/_new  2022-02-02 22:41:57.163312642 +0100
@@ -3,8 +3,8 @@
     <param name="url">git://github.com/jech/galene.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">galene-0.4.3</param>
-    <param name="version">0.4.3</param>
+    <param name="revision">galene-0.4.4</param>
+    <param name="version">0.4.4</param>
     <param name="changesgenerate">enable</param>
     <!--param name="versionrewrite-pattern">galene-(\d+)</param>
     <param name="versionrewrite-replacement">\1</param-->

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.I9ZgAb/_old  2022-02-02 22:41:57.187312479 +0100
+++ /var/tmp/diff_new_pack.I9ZgAb/_new  2022-02-02 22:41:57.187312479 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">git://github.com/jech/galene.git</param>
-              <param 
name="changesrevision">c1eb8a9cb5db7d94d8098d16e0b9cb92108c3da7</param></service></servicedata>
+              <param 
name="changesrevision">6634b7c1e8862d07e42a87973eb9e6099bdbdeef</param></service></servicedata>
 (No newline at EOF)
 

++++++ galene-0.4.3.tar.gz -> galene-0.4.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/galene-0.4.3/CHANGES new/galene-0.4.4/CHANGES
--- old/galene-0.4.3/CHANGES    2022-01-27 14:22:43.000000000 +0100
+++ new/galene-0.4.4/CHANGES    2022-02-01 20:18:44.000000000 +0100
@@ -1,4 +1,11 @@
-27 January 2021: Gal??ne 0.4.3
+1 February 2022: Galene 0.4.4
+
+  * Update dependencies.  Pion WebRTC v3.1.19 fixes a bug that could cause
+    audio tracks to be discarded under some circumstances.
+  * Fix a bug that could cause user statuses (raisehand) to be discarded.
+  * Fix incorrect maxRate value in statistics display.
+
+27 January 2022: Gal??ne 0.4.3
 
   * Fix a locking issue that could cause a deadlock when massive numbers
     of clients join at the same time.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/galene-0.4.3/go.mod new/galene-0.4.4/go.mod
--- old/galene-0.4.3/go.mod     2022-01-27 14:22:43.000000000 +0100
+++ new/galene-0.4.4/go.mod     2022-02-01 20:18:44.000000000 +0100
@@ -7,13 +7,12 @@
        github.com/gorilla/websocket v1.4.2
        github.com/jech/cert v0.0.0-20210819231831-aca735647728
        github.com/jech/samplebuilder v0.0.0-20220125212352-4553ed6f9a6c
-       github.com/pion/ice/v2 v2.1.19
-       github.com/pion/interceptor v0.1.7 // indirect
+       github.com/pion/ice/v2 v2.1.20
        github.com/pion/rtcp v1.2.9
        github.com/pion/rtp v1.7.4
        github.com/pion/sdp/v3 v3.0.4
        github.com/pion/turn/v2 v2.0.6
-       github.com/pion/webrtc/v3 v3.1.17
+       github.com/pion/webrtc/v3 v3.1.19
        golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce
        golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba // indirect
        golang.org/x/sys v0.0.0-20220114195835-da31bd327af9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/galene-0.4.3/go.sum new/galene-0.4.4/go.sum
--- old/galene-0.4.3/go.sum     2022-01-27 14:22:43.000000000 +0100
+++ new/galene-0.4.4/go.sum     2022-02-01 20:18:44.000000000 +0100
@@ -49,15 +49,12 @@
 github.com/pion/datachannel v1.5.2 
h1:piB93s8LGmbECrpO84DnkIVWasRMk3IimbcXkTQLE6E=
 github.com/pion/datachannel v1.5.2/go.mod 
h1:FTGQWaHrdCwIJ1rw6xBIfZVkslikjShim5yr05XFuCQ=
 github.com/pion/dtls/v2 v2.0.9/go.mod 
h1:O0Wr7si/Zj5/EBFlDzDd6UtVxx25CE1r7XM7BQKYQho=
-github.com/pion/dtls/v2 v2.0.13/go.mod 
h1:OaE7eTM+ppaUhJ99OTO4aHl9uY6vPrT1gPY27uNTxRY=
-github.com/pion/dtls/v2 v2.1.0 h1:g6gtKVNLp6URDkv9OijFJl16kqGHzVzZG+Fa4A38GTY=
-github.com/pion/dtls/v2 v2.1.0/go.mod 
h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
+github.com/pion/dtls/v2 v2.1.1 h1:+ak8AXk2Hw0xjBTwC3ZwTmg72nLckNs3kpIugs4R594=
+github.com/pion/dtls/v2 v2.1.1/go.mod 
h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
 github.com/pion/ice/v2 v2.1.12/go.mod 
h1:ovgYHUmwYLlRvcCLI67PnQ5YGe+upXZbGgllBDG/ktU=
-github.com/pion/ice/v2 v2.1.18/go.mod 
h1:9jDr0iIUg8P6+0Jq8QJ/eFSkX3JnsPd293TjCdkfpTs=
-github.com/pion/ice/v2 v2.1.19 h1:z7iVx/fHlqvPILUbvcj1xjuz/6eVKgEFOM8h1AuLbF8=
-github.com/pion/ice/v2 v2.1.19/go.mod 
h1:E5frMpIJ3zzcQiRo+XyT7z1IiAsGc1hDURcVJQUzGWA=
+github.com/pion/ice/v2 v2.1.20 h1:xpxXyX5b4WjCh/D905gzBeW/hbJxMEPx2ptVfrhVE6M=
+github.com/pion/ice/v2 v2.1.20/go.mod 
h1:hEAldRzBhTtAfvlU1V/2/nLCMvveQWFKPNCop+63/Iw=
 github.com/pion/interceptor v0.1.0/go.mod 
h1:j5NIl3tJJPB3u8+Z2Xz8MZs/VV6rc+If9mXEKNuFmEM=
-github.com/pion/interceptor v0.1.6/go.mod 
h1:Lh3JSl/cbJ2wP8I3ccrjh1K/deRGRn3UlSPuOTiHb6U=
 github.com/pion/interceptor v0.1.7 
h1:HThW0tIIKT9RRoDWGURe8rlZVOx0fJHxBHpA0ej0+bo=
 github.com/pion/interceptor v0.1.7/go.mod 
h1:Lh3JSl/cbJ2wP8I3ccrjh1K/deRGRn3UlSPuOTiHb6U=
 github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
@@ -96,8 +93,8 @@
 github.com/pion/udp v0.1.1 h1:8UAPvyqmsxK8oOjloDk4wUt63TzFe9WEJkg5lChlj7o=
 github.com/pion/udp v0.1.1/go.mod 
h1:6AFo+CMdKQm7UiA0eUPA8/eVCTx8jBIITLZHc9DWX5M=
 github.com/pion/webrtc/v3 v3.1.0/go.mod 
h1:t51XSam1k56eYLuO1Ubxjs3pDBfGYxkGBFhYf55Mn/s=
-github.com/pion/webrtc/v3 v3.1.17 
h1:6V4Yf5wnvJZKs86401EcpsKmB5Px5pfF1ICXdPIRsC0=
-github.com/pion/webrtc/v3 v3.1.17/go.mod 
h1:kHunUx6HPCbCvGy/HdWQNwtT9LJ2XMS/sBmLwB1A4rs=
+github.com/pion/webrtc/v3 v3.1.19 
h1:a4mrYskJE9LLUEogSnYVBna0Plg+fwwGLkDraz1WSwI=
+github.com/pion/webrtc/v3 v3.1.19/go.mod 
h1:JRlX2EANa0bbyNzbqhkSiio+tT284fgco03Xw+aS/4Q=
 github.com/pkg/errors v0.9.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -112,7 +109,6 @@
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod 
h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce 
h1:Roh6XWxHFKrPgC/EQhVubSAGQ6Ozk6IdxHSzt1mR0EI=
 golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/galene-0.4.3/rtpconn/rtpstats.go 
new/galene-0.4.4/rtpconn/rtpstats.go
--- old/galene-0.4.3/rtpconn/rtpstats.go        2022-01-27 14:22:43.000000000 
+0100
+++ new/galene-0.4.4/rtpconn/rtpstats.go        2022-02-01 20:18:44.000000000 
+0100
@@ -56,6 +56,7 @@
                        tid := layer.tid
                        maxTid := layer.maxTid
                        rate, _ := t.rate.Estimate()
+                       maxRate, _, _ := t.GetMaxBitrate()
                        rtt := rtptime.ToDuration(t.getRTT(),
                                rtptime.JiffiesPerSec)
                        loss, jitter := t.stats.Get(jiffies)
@@ -67,7 +68,7 @@
                                Sid:        &sid,
                                MaxSid:     &maxSid,
                                Bitrate:    uint64(rate) * 8,
-                               MaxBitrate: t.maxBitrate.Get(jiffies),
+                               MaxBitrate: maxRate,
                                Loss:       float64(loss) / 256.0,
                                Rtt:        stats.Duration(rtt),
                                Jitter:     stats.Duration(j),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/galene-0.4.3/static/galene.js 
new/galene-0.4.4/static/galene.js
--- old/galene-0.4.3/static/galene.js   2022-01-27 14:22:43.000000000 +0100
+++ new/galene-0.4.4/static/galene.js   2022-02-01 20:18:44.000000000 +0100
@@ -1961,26 +1961,27 @@
 
 /**
  * @param {string} id
- * @param {string} name
+ * @param {user} userinfo
  */
-function addUser(id, name) {
-    if(!name)
-        name = null;
-
+function addUser(id, userinfo) {
     let div = document.getElementById('users');
     let user = document.createElement('div');
     user.id = 'user-' + id;
     user.classList.add("user-p");
-    user.textContent = name ? name : '(anon)';
+    user.textContent = userinfo.username ? userinfo.username : '(anon)';
+    if (userinfo.status.raisehand)
+        user.classList.add('user-status-raisehand');
+    else
+        user.classList.remove('user-status-raisehand');
 
-    if(name) {
+    if(userinfo.username) {
         let us = div.children;
         for(let i = 0; i < us.length; i++) {
             let child = us[i];
             let childuser =
                 serverConnection.users[child.id.slice('user-'.length)] || null;
             let childname = (childuser && childuser.username) || null;
-            if(!childname || stringCompare(childname, name) > 0) {
+            if(!childname || stringCompare(childname, userinfo.username) > 0) {
                 div.insertBefore(user, child);
                 return;
             }
@@ -2022,7 +2023,7 @@
 function gotUser(id, kind) {
     switch(kind) {
     case 'add':
-        addUser(id, serverConnection.users[id].username);
+        addUser(id, serverConnection.users[id]);
         if(Object.keys(serverConnection.users).length == 3)
             reconsiderSendParameters();
         break;

++++++ vendor.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/AUTHORS.txt 
new/vendor/github.com/pion/dtls/v2/AUTHORS.txt
--- old/vendor/github.com/pion/dtls/v2/AUTHORS.txt      2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/AUTHORS.txt      2022-02-01 
22:10:04.065418500 +0100
@@ -27,6 +27,8 @@
 Julien Salleyron <julien.salley...@gmail.com>
 Kegan Dougal <ke...@matrix.org>
 Lander Noterman <lander.noter...@basalte.be>
+Len <l...@hpcnt.com>
+Lukas Lihotzki <lu...@lihotzki.de>
 Michael Zabka <zabka.mich...@gmail.com>
 Michiel De Backker <m...@backkem.me>
 Robert Eperjesi <eperj...@uber.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/README.md 
new/vendor/github.com/pion/dtls/v2/README.md
--- old/vendor/github.com/pion/dtls/v2/README.md        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/README.md        2022-02-01 
22:10:04.065418500 +0100
@@ -35,9 +35,11 @@
 * Key export ([RFC 5705][rfc5705])
 * Serialization and Resumption of sessions
 * Extended Master Secret extension ([RFC 7627][rfc7627])
+* ALPN extension ([RFC 7301][rfc7301])
 
 [rfc5705]: https://tools.ietf.org/html/rfc5705
 [rfc7627]: https://tools.ietf.org/html/rfc7627
+[rfc7301]: https://tools.ietf.org/html/rfc7301
 
 #### Supported ciphers
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/cipher_suite.go 
new/vendor/github.com/pion/dtls/v2/cipher_suite.go
--- old/vendor/github.com/pion/dtls/v2/cipher_suite.go  2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/cipher_suite.go  2022-02-01 
22:10:04.065418500 +0100
@@ -1,6 +1,10 @@
 package dtls
 
 import (
+       "crypto/ecdsa"
+       "crypto/ed25519"
+       "crypto/rsa"
+       "crypto/tls"
        "fmt"
        "hash"
 
@@ -67,7 +71,6 @@
        // Called when keying material has been generated, should initialize 
the internal cipher
        Init(masterSecret, clientRandom, serverRandom []byte, isClient bool) 
error
        IsInitialized() bool
-
        Encrypt(pkt *recordlayer.RecordLayer, raw []byte) ([]byte, error)
        Decrypt(in []byte) ([]byte, error)
 }
@@ -222,3 +225,24 @@
 
        return cipherSuites[:i], nil
 }
+
+func filterCipherSuitesForCertificate(cert *tls.Certificate, cipherSuites 
[]CipherSuite) []CipherSuite {
+       if cert == nil || cert.PrivateKey == nil {
+               return cipherSuites
+       }
+       var certType clientcertificate.Type
+       switch cert.PrivateKey.(type) {
+       case ed25519.PrivateKey, *ecdsa.PrivateKey:
+               certType = clientcertificate.ECDSASign
+       case *rsa.PrivateKey:
+               certType = clientcertificate.RSASign
+       }
+
+       filtered := []CipherSuite{}
+       for _, c := range cipherSuites {
+               if c.AuthenticationType() != 
CipherSuiteAuthenticationTypeCertificate || certType == c.CertificateType() {
+                       filtered = append(filtered, c)
+               }
+       }
+       return filtered
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/cipher_suite_go114.go 
new/vendor/github.com/pion/dtls/v2/cipher_suite_go114.go
--- old/vendor/github.com/pion/dtls/v2/cipher_suite_go114.go    2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/cipher_suite_go114.go    2022-02-01 
22:10:04.065418500 +0100
@@ -1,3 +1,4 @@
+//go:build go1.14
 // +build go1.14
 
 package dtls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/config.go 
new/vendor/github.com/pion/dtls/v2/config.go
--- old/vendor/github.com/pion/dtls/v2/config.go        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/config.go        2022-02-01 
22:10:04.065418500 +0100
@@ -127,6 +127,9 @@
 
        // SessionStore is the container to store session for resumption.
        SessionStore SessionStore
+
+       // List of application protocols the peer supports, for ALPN
+       SupportedProtocols []string
 }
 
 func defaultConnectContextMaker() (context.Context, func()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/conn.go 
new/vendor/github.com/pion/dtls/v2/conn.go
--- old/vendor/github.com/pion/dtls/v2/conn.go  2022-01-27 19:09:03.711526000 
+0100
+++ new/vendor/github.com/pion/dtls/v2/conn.go  2022-02-01 22:10:04.065418500 
+0100
@@ -162,6 +162,7 @@
                extendedMasterSecret:        config.ExtendedMasterSecret,
                localSRTPProtectionProfiles: config.SRTPProtectionProfiles,
                serverName:                  serverName,
+               supportedProtocols:          config.SupportedProtocols,
                clientAuth:                  config.ClientAuth,
                localCertificates:           config.Certificates,
                insecureSkipVerify:          config.InsecureSkipVerify,
@@ -176,6 +177,12 @@
                sessionStore:                config.SessionStore,
        }
 
+       cert, err := hsCfg.getCertificate(serverName)
+       if err != nil && !errors.Is(err, errNoCertificates) {
+               return nil, err
+       }
+       hsCfg.localCipherSuites = filterCipherSuitesForCertificate(cert, 
cipherSuites)
+
        var initialFlight flightVal
        var initialFSMState handshakeState
 
@@ -564,7 +571,7 @@
 
        var hasHandshake bool
        for _, p := range pkts {
-               hs, alert, err := c.handleIncomingPacket(p, true)
+               hs, alert, err := c.handleIncomingPacket(ctx, p, true)
                if alert != nil {
                        if alertErr := c.notify(ctx, alert.Level, 
alert.Description); alertErr != nil {
                                if err == nil {
@@ -603,7 +610,7 @@
        c.encryptedPackets = nil
 
        for _, p := range pkts {
-               _, alert, err := c.handleIncomingPacket(p, false) // don't 
re-enqueue
+               _, alert, err := c.handleIncomingPacket(ctx, p, false) // don't 
re-enqueue
                if alert != nil {
                        if alertErr := c.notify(ctx, alert.Level, 
alert.Description); alertErr != nil {
                                if err == nil {
@@ -624,7 +631,7 @@
        return nil
 }
 
-func (c *Conn) handleIncomingPacket(buf []byte, enqueue bool) (bool, 
*alert.Alert, error) { //nolint:gocognit
+func (c *Conn) handleIncomingPacket(ctx context.Context, buf []byte, enqueue 
bool) (bool, *alert.Alert, error) { //nolint:gocognit
        h := &recordlayer.Header{}
        if err := h.Unmarshal(buf); err != nil {
                // Decode error must be silently discarded
@@ -743,6 +750,7 @@
                select {
                case c.decrypted <- content.Data:
                case <-c.closed.Done():
+               case <-ctx.Done():
                }
 
        default:
@@ -844,6 +852,7 @@
                                                        select {
                                                        case c.decrypted <- err:
                                                        case <-c.closed.Done():
+                                                       case <-ctxRead.Done():
                                                        }
                                                }
                                                continue // non-fatal alert 
must not stop read loop
@@ -857,6 +866,7 @@
                                                        select {
                                                        case c.decrypted <- err:
                                                        case <-c.closed.Done():
+                                                       case <-ctxRead.Done():
                                                        }
                                                        continue // non-fatal 
alert must not stop read loop
                                                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/errors_errno.go 
new/vendor/github.com/pion/dtls/v2/errors_errno.go
--- old/vendor/github.com/pion/dtls/v2/errors_errno.go  2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/errors_errno.go  2022-02-01 
22:10:04.069418400 +0100
@@ -1,3 +1,4 @@
+//go:build aix || darwin || dragonfly || freebsd || linux || nacl || nacljs || 
netbsd || openbsd || solaris || windows
 // +build aix darwin dragonfly freebsd linux nacl nacljs netbsd openbsd 
solaris windows
 
 // For systems having syscall.Errno.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/errors_noerrno.go 
new/vendor/github.com/pion/dtls/v2/errors_noerrno.go
--- old/vendor/github.com/pion/dtls/v2/errors_noerrno.go        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/errors_noerrno.go        2022-02-01 
22:10:04.069418400 +0100
@@ -1,3 +1,4 @@
+//go:build !aix && !darwin && !dragonfly && !freebsd && !linux && !nacl && 
!nacljs && !netbsd && !openbsd && !solaris && !windows
 // +build 
!aix,!darwin,!dragonfly,!freebsd,!linux,!nacl,!nacljs,!netbsd,!openbsd,!solaris,!windows
 
 // For systems without syscall.Errno.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/flight0handler.go 
new/vendor/github.com/pion/dtls/v2/flight0handler.go
--- old/vendor/github.com/pion/dtls/v2/flight0handler.go        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/flight0handler.go        2022-02-01 
22:10:04.069418400 +0100
@@ -64,6 +64,8 @@
                        }
                case *extension.ServerName:
                        state.serverName = e.ServerName // remote server name
+               case *extension.ALPN:
+                       state.peerSupportedProtocols = e.ProtocolNameList
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/flight1handler.go 
new/vendor/github.com/pion/dtls/v2/flight1handler.go
--- old/vendor/github.com/pion/dtls/v2/flight1handler.go        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/flight1handler.go        2022-02-01 
22:10:04.069418400 +0100
@@ -90,6 +90,10 @@
                extensions = append(extensions, 
&extension.ServerName{ServerName: cfg.serverName})
        }
 
+       if len(cfg.supportedProtocols) > 0 {
+               extensions = append(extensions, 
&extension.ALPN{ProtocolNameList: cfg.supportedProtocols})
+       }
+
        if cfg.sessionStore != nil {
                cfg.log.Tracef("[handshake] try to resume session")
                if s, err := cfg.sessionStore.Get(c.sessionKey()); err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/flight3handler.go 
new/vendor/github.com/pion/dtls/v2/flight3handler.go
--- old/vendor/github.com/pion/dtls/v2/flight3handler.go        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/flight3handler.go        2022-02-01 
22:10:04.069418400 +0100
@@ -57,6 +57,11 @@
                                if cfg.extendedMasterSecret != 
DisableExtendedMasterSecret {
                                        state.extendedMasterSecret = true
                                }
+                       case *extension.ALPN:
+                               if len(e.ProtocolNameList) > 1 { // This should 
be exactly 1, the zero case is handle when unmarshalling
+                                       return 0, &alert.Alert{Level: 
alert.Fatal, Description: alert.InternalError}, extension.ErrALPNInvalidFormat 
// Meh, internal error?
+                               }
+                               state.NegotiatedProtocol = e.ProtocolNameList[0]
                        }
                }
                if cfg.extendedMasterSecret == RequireExtendedMasterSecret && 
!state.extendedMasterSecret {
@@ -239,6 +244,10 @@
                extensions = append(extensions, 
&extension.ServerName{ServerName: cfg.serverName})
        }
 
+       if len(cfg.supportedProtocols) > 0 {
+               extensions = append(extensions, 
&extension.ALPN{ProtocolNameList: cfg.supportedProtocols})
+       }
+
        return []*packet{
                {
                        record: &recordlayer.RecordLayer{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/flight4bhandler.go 
new/vendor/github.com/pion/dtls/v2/flight4bhandler.go
--- old/vendor/github.com/pion/dtls/v2/flight4bhandler.go       2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/flight4bhandler.go       2022-02-01 
22:10:04.069418400 +0100
@@ -62,6 +62,17 @@
                })
        }
 
+       selectedProto, err := 
extension.ALPNProtocolSelection(cfg.supportedProtocols, 
state.peerSupportedProtocols)
+       if err != nil {
+               return nil, &alert.Alert{Level: alert.Fatal, Description: 
alert.NoApplicationProtocol}, err
+       }
+       if selectedProto != "" {
+               extensions = append(extensions, &extension.ALPN{
+                       ProtocolNameList: []string{selectedProto},
+               })
+               state.NegotiatedProtocol = selectedProto
+       }
+
        cipherSuiteID := uint16(state.cipherSuite.ID())
        serverHello := &handshake.Handshake{
                Message: &handshake.MessageServerHello{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/flight4handler.go 
new/vendor/github.com/pion/dtls/v2/flight4handler.go
--- old/vendor/github.com/pion/dtls/v2/flight4handler.go        2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/flight4handler.go        2022-02-01 
22:10:04.069418400 +0100
@@ -212,6 +212,17 @@
                })
        }
 
+       selectedProto, err := 
extension.ALPNProtocolSelection(cfg.supportedProtocols, 
state.peerSupportedProtocols)
+       if err != nil {
+               return nil, &alert.Alert{Level: alert.Fatal, Description: 
alert.NoApplicationProtocol}, err
+       }
+       if selectedProto != "" {
+               extensions = append(extensions, &extension.ALPN{
+                       ProtocolNameList: []string{selectedProto},
+               })
+               state.NegotiatedProtocol = selectedProto
+       }
+
        var pkts []*packet
        cipherSuiteID := uint16(state.cipherSuite.ID())
 
@@ -242,7 +253,7 @@
 
        switch {
        case state.cipherSuite.AuthenticationType() == 
CipherSuiteAuthenticationTypeCertificate:
-               certificate, err := cfg.getCertificate(cfg.serverName)
+               certificate, err := cfg.getCertificate(state.serverName)
                if err != nil {
                        return nil, &alert.Alert{Level: alert.Fatal, 
Description: alert.HandshakeFailure}, err
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/fuzz.go 
new/vendor/github.com/pion/dtls/v2/fuzz.go
--- old/vendor/github.com/pion/dtls/v2/fuzz.go  2022-01-27 19:09:03.711526000 
+0100
+++ new/vendor/github.com/pion/dtls/v2/fuzz.go  2022-02-01 22:10:04.069418400 
+0100
@@ -1,3 +1,4 @@
+//go:build gofuzz
 // +build gofuzz
 
 package dtls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/handshaker.go 
new/vendor/github.com/pion/dtls/v2/handshaker.go
--- old/vendor/github.com/pion/dtls/v2/handshaker.go    2022-01-27 
19:09:03.711526000 +0100
+++ new/vendor/github.com/pion/dtls/v2/handshaker.go    2022-02-01 
22:10:04.069418400 +0100
@@ -95,6 +95,7 @@
        extendedMasterSecret        ExtendedMasterSecretType  // Policy for the 
Extended Master Support extension
        localSRTPProtectionProfiles []SRTPProtectionProfile   // Available 
SRTPProtectionProfiles, if empty no SRTP support
        serverName                  string
+       supportedProtocols          []string
        clientAuth                  ClientAuthType // If we are a client should 
we request a client certificate
        localCertificates           []tls.Certificate
        nameToCertificate           map[string]*tls.Certificate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/alert/alert.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/alert/alert.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/alert/alert.go      
2022-01-27 19:09:03.719525800 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/alert/alert.go      
2022-02-01 22:10:04.073418400 +0100
@@ -60,6 +60,7 @@
        UserCanceled           Description = 90
        NoRenegotiation        Description = 100
        UnsupportedExtension   Description = 110
+       NoApplicationProtocol  Description = 120
 )
 
 func (d Description) String() string {
@@ -114,6 +115,8 @@
                return "NoRenegotiation"
        case UnsupportedExtension:
                return "UnsupportedExtension"
+       case NoApplicationProtocol:
+               return "NoApplicationProtocol"
        default:
                return "Invalid alert description"
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/change_cipher_spec.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/change_cipher_spec.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/change_cipher_spec.go       
2022-01-27 19:09:03.719525800 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/change_cipher_spec.go       
2022-02-01 22:10:04.073418400 +0100
@@ -5,8 +5,7 @@
 // which is encrypted and compressed under the current (not the pending)
 // connection state.  The message consists of a single byte of value 1.
 // https://tools.ietf.org/html/rfc5246#section-7.1
-type ChangeCipherSpec struct {
-}
+type ChangeCipherSpec struct{}
 
 // ContentType returns the ContentType of this content
 func (c ChangeCipherSpec) ContentType() ContentType {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/alpn.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/alpn.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/alpn.go   
1970-01-01 01:00:00.000000000 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/alpn.go   
2022-02-01 22:10:04.073418400 +0100
@@ -0,0 +1,77 @@
+package extension
+
+import (
+       "golang.org/x/crypto/cryptobyte"
+)
+
+// ALPN is a TLS extension for application-layer protocol negotiation within
+// the TLS handshake.
+//
+// https://tools.ietf.org/html/rfc7301
+type ALPN struct {
+       ProtocolNameList []string
+}
+
+// TypeValue returns the extension TypeValue
+func (a ALPN) TypeValue() TypeValue {
+       return ALPNTypeValue
+}
+
+// Marshal encodes the extension
+func (a *ALPN) Marshal() ([]byte, error) {
+       var b cryptobyte.Builder
+       b.AddUint16(uint16(a.TypeValue()))
+       b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) {
+               b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) {
+                       for _, proto := range a.ProtocolNameList {
+                               p := proto // Satisfy range scope lint
+                               b.AddUint8LengthPrefixed(func(b 
*cryptobyte.Builder) {
+                                       b.AddBytes([]byte(p))
+                               })
+                       }
+               })
+       })
+       return b.Bytes()
+}
+
+// Unmarshal populates the extension from encoded data
+func (a *ALPN) Unmarshal(data []byte) error {
+       val := cryptobyte.String(data)
+
+       var extension uint16
+       val.ReadUint16(&extension)
+       if TypeValue(extension) != a.TypeValue() {
+               return errInvalidExtensionType
+       }
+
+       var extData cryptobyte.String
+       val.ReadUint16LengthPrefixed(&extData)
+
+       var protoList cryptobyte.String
+       if !extData.ReadUint16LengthPrefixed(&protoList) || protoList.Empty() {
+               return ErrALPNInvalidFormat
+       }
+       for !protoList.Empty() {
+               var proto cryptobyte.String
+               if !protoList.ReadUint8LengthPrefixed(&proto) || proto.Empty() {
+                       return ErrALPNInvalidFormat
+               }
+               a.ProtocolNameList = append(a.ProtocolNameList, string(proto))
+       }
+       return nil
+}
+
+// ALPNProtocolSelection negotiates a shared protocol according to #3.2 of 
rfc7301
+func ALPNProtocolSelection(supportedProtocols, peerSupportedProtocols 
[]string) (string, error) {
+       if len(supportedProtocols) == 0 || len(peerSupportedProtocols) == 0 {
+               return "", nil
+       }
+       for _, s := range supportedProtocols {
+               for _, c := range peerSupportedProtocols {
+                       if s == c {
+                               return s, nil
+                       }
+               }
+       }
+       return "", errALPNNoAppProto
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/errors.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/errors.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/errors.go 
2022-01-27 19:09:03.719525800 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/errors.go 
2022-02-01 22:10:04.073418400 +0100
@@ -7,6 +7,9 @@
 )
 
 var (
+       // ErrALPNInvalidFormat is raised when the ALPN format is invalid
+       ErrALPNInvalidFormat    = &protocol.FatalError{Err: errors.New("invalid 
alpn format")}                             //nolint:goerr113
+       errALPNNoAppProto       = &protocol.FatalError{Err: errors.New("no 
application protocol")}                         //nolint:goerr113
        errBufferTooSmall       = &protocol.TemporaryError{Err: 
errors.New("buffer is too small")}                         //nolint:goerr113
        errInvalidExtensionType = &protocol.FatalError{Err: errors.New("invalid 
extension type")}                          //nolint:goerr113
        errInvalidSNIFormat     = &protocol.FatalError{Err: errors.New("invalid 
server name format")}                      //nolint:goerr113
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/extension.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/extension.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/extension.go      
2022-01-27 19:09:03.719525800 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/extension.go      
2022-02-01 22:10:04.073418400 +0100
@@ -15,6 +15,7 @@
        SupportedPointFormatsTypeValue        TypeValue = 11
        SupportedSignatureAlgorithmsTypeValue TypeValue = 13
        UseSRTPTypeValue                      TypeValue = 14
+       ALPNTypeValue                         TypeValue = 16
        UseExtendedMasterSecretTypeValue      TypeValue = 23
        RenegotiationInfoTypeValue            TypeValue = 65281
 )
@@ -62,6 +63,8 @@
                        err = unmarshalAndAppend(buf[offset:], 
&SupportedEllipticCurves{})
                case UseSRTPTypeValue:
                        err = unmarshalAndAppend(buf[offset:], &UseSRTP{})
+               case ALPNTypeValue:
+                       err = unmarshalAndAppend(buf[offset:], &ALPN{})
                case UseExtendedMasterSecretTypeValue:
                        err = unmarshalAndAppend(buf[offset:], 
&UseExtendedMasterSecret{})
                case RenegotiationInfoTypeValue:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/server_name.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/server_name.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/server_name.go    
2022-01-27 19:09:03.719525800 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/extension/server_name.go    
2022-02-01 22:10:04.073418400 +0100
@@ -9,7 +9,7 @@
 const serverNameTypeDNSHostName = 0
 
 // ServerName allows the client to inform the server the specific
-// name it wishs to contact. Useful if multiple DNS names resolve
+// name it wishes to contact. Useful if multiple DNS names resolve
 // to one IP
 //
 // https://tools.ietf.org/html/rfc6066#section-3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/handshake.go 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/handshake.go
--- old/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/handshake.go      
2022-01-27 19:09:03.719525800 +0100
+++ new/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/handshake.go      
2022-02-01 22:10:04.077418600 +0100
@@ -58,7 +58,6 @@
 type Message interface {
        Marshal() ([]byte, error)
        Unmarshal(data []byte) error
-
        Type() Type
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/message_server_hello_done.go
 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/message_server_hello_done.go
--- 
old/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/message_server_hello_done.go
      2022-01-27 19:09:03.723525800 +0100
+++ 
new/vendor/github.com/pion/dtls/v2/pkg/protocol/handshake/message_server_hello_done.go
      2022-02-01 22:10:04.077418600 +0100
@@ -3,8 +3,7 @@
 // MessageServerHelloDone is final non-encrypted message from server
 // this communicates server has sent all its handshake messages and next
 // should be MessageFinished
-type MessageServerHelloDone struct {
-}
+type MessageServerHelloDone struct{}
 
 // Type returns the Handshake Type
 func (m MessageServerHelloDone) Type() Type {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/dtls/v2/state.go 
new/vendor/github.com/pion/dtls/v2/state.go
--- old/vendor/github.com/pion/dtls/v2/state.go 2022-01-27 19:09:03.711526000 
+0100
+++ new/vendor/github.com/pion/dtls/v2/state.go 2022-02-01 22:10:04.069418400 
+0100
@@ -42,6 +42,9 @@
        peerCertificatesVerified   bool
 
        replayDetector []replaydetector.ReplayDetector
+
+       peerSupportedProtocols []string
+       NegotiatedProtocol     string
 }
 
 type serializedState struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/ice/v2/agent.go 
new/vendor/github.com/pion/ice/v2/agent.go
--- old/vendor/github.com/pion/ice/v2/agent.go  2022-01-27 19:09:03.723525800 
+0100
+++ new/vendor/github.com/pion/ice/v2/agent.go  2022-02-01 22:10:04.077418600 
+0100
@@ -109,8 +109,9 @@
        extIPMapper *externalIPMapper
 
        // State for closing
-       done chan struct{}
-       err  atomicError
+       done         chan struct{}
+       taskLoopDone chan struct{}
+       err          atomicError
 
        gatherCandidateCancel func()
 
@@ -213,6 +214,7 @@
                close(a.chanState)
                close(a.chanCandidate)
                close(a.chanCandidatePair)
+               close(a.taskLoopDone)
        }()
 
        for {
@@ -289,6 +291,7 @@
                onConnected:       make(chan struct{}),
                buffer:            packetio.NewBuffer(),
                done:              make(chan struct{}),
+               taskLoopDone:      make(chan struct{}),
                startedCh:         startedCtx.Done(),
                startedFn:         startedFn,
                portmin:           config.PortMin,
@@ -421,12 +424,12 @@
                                        }
                                        return
                                }
-                               a.onConnectionStateChange(s)
+                               go a.onConnectionStateChange(s)
 
                        case c, isOpen := <-a.chanCandidate:
                                if !isOpen {
                                        for s := range a.chanState {
-                                               a.onConnectionStateChange(s)
+                                               go a.onConnectionStateChange(s)
                                        }
                                        return
                                }
@@ -897,20 +900,15 @@
                return err
        }
 
-       done := make(chan struct{})
-
        a.afterRun(func(context.Context) {
                a.gatherCandidateCancel()
-               close(done)
        })
-
        a.err.Store(ErrClosed)
 
        a.removeUfragFromMux()
 
        close(a.done)
-
-       <-done
+       <-a.taskLoopDone
        return nil
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/ice/v2/go.mod 
new/vendor/github.com/pion/ice/v2/go.mod
--- old/vendor/github.com/pion/ice/v2/go.mod    2022-01-27 19:09:03.723525800 
+0100
+++ new/vendor/github.com/pion/ice/v2/go.mod    2022-02-01 22:10:04.077418600 
+0100
@@ -5,7 +5,7 @@
 require (
        github.com/google/uuid v1.3.0
        github.com/kr/pretty v0.1.0 // indirect
-       github.com/pion/dtls/v2 v2.1.0
+       github.com/pion/dtls/v2 v2.1.1
        github.com/pion/logging v0.2.2
        github.com/pion/mdns v0.0.5
        github.com/pion/randutil v0.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/ice/v2/go.sum 
new/vendor/github.com/pion/ice/v2/go.sum
--- old/vendor/github.com/pion/ice/v2/go.sum    2022-01-27 19:09:03.723525800 
+0100
+++ new/vendor/github.com/pion/ice/v2/go.sum    2022-02-01 22:10:04.077418600 
+0100
@@ -7,8 +7,8 @@
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 github.com/kr/text v0.1.0/go.mod 
h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/pion/dtls/v2 v2.1.0 h1:g6gtKVNLp6URDkv9OijFJl16kqGHzVzZG+Fa4A38GTY=
-github.com/pion/dtls/v2 v2.1.0/go.mod 
h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
+github.com/pion/dtls/v2 v2.1.1 h1:+ak8AXk2Hw0xjBTwC3ZwTmg72nLckNs3kpIugs4R594=
+github.com/pion/dtls/v2 v2.1.1/go.mod 
h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
 github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
 github.com/pion/logging v0.2.2/go.mod 
h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
 github.com/pion/mdns v0.0.5 h1:Q2oj/JB3NqfzY9xGZ1fPzZzK7sDSD8rZPOvcIQ10BCw=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/webrtc/v3/AUTHORS.txt 
new/vendor/github.com/pion/webrtc/v3/AUTHORS.txt
--- old/vendor/github.com/pion/webrtc/v3/AUTHORS.txt    2022-01-27 
19:09:03.755525600 +0100
+++ new/vendor/github.com/pion/webrtc/v3/AUTHORS.txt    2022-02-01 
22:10:04.105418200 +0100
@@ -133,6 +133,7 @@
 rob-deutsch <robzyb+altgit...@gmail.com>
 Robert Eperjesi <eperj...@uber.com>
 Robin Raymond <robin-raym...@users.noreply.github.com>
+Roman Romanenko <roman.romane...@aliexpress.ru>
 Roman Romanenko <romandaf...@gmail.com>
 ronan <ronan.jezeq...@gmail.com>
 Ryan Shumate <ryan.shum...@garmin.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/webrtc/v3/api.go 
new/vendor/github.com/pion/webrtc/v3/api.go
--- old/vendor/github.com/pion/webrtc/v3/api.go 2022-01-27 19:09:03.759525500 
+0100
+++ new/vendor/github.com/pion/webrtc/v3/api.go 2022-02-01 22:10:04.105418200 
+0100
@@ -23,28 +23,21 @@
 
 // NewAPI Creates a new API object for keeping semi-global settings to WebRTC 
objects
 func NewAPI(options ...func(*API)) *API {
-       a := &API{interceptor: &interceptor.NoOp{}}
+       a := &API{
+               interceptor:         &interceptor.NoOp{},
+               settingEngine:       &SettingEngine{},
+               mediaEngine:         &MediaEngine{},
+               interceptorRegistry: &interceptor.Registry{},
+       }
 
        for _, o := range options {
                o(a)
        }
 
-       if a.settingEngine == nil {
-               a.settingEngine = &SettingEngine{}
-       }
-
        if a.settingEngine.LoggerFactory == nil {
                a.settingEngine.LoggerFactory = 
logging.NewDefaultLoggerFactory()
        }
 
-       if a.mediaEngine == nil {
-               a.mediaEngine = &MediaEngine{}
-       }
-
-       if a.interceptorRegistry == nil {
-               a.interceptorRegistry = &interceptor.Registry{}
-       }
-
        return a
 }
 
@@ -52,9 +45,8 @@
 // Settings can be changed after passing the engine to an API.
 func WithMediaEngine(m *MediaEngine) func(a *API) {
        return func(a *API) {
-               if m != nil {
-                       a.mediaEngine = m
-               } else {
+               a.mediaEngine = m
+               if a.mediaEngine == nil {
                        a.mediaEngine = &MediaEngine{}
                }
        }
@@ -70,8 +62,11 @@
 
 // WithInterceptorRegistry allows providing Interceptors to the API.
 // Settings should not be changed after passing the registry to an API.
-func WithInterceptorRegistry(interceptorRegistry *interceptor.Registry) func(a 
*API) {
+func WithInterceptorRegistry(ir *interceptor.Registry) func(a *API) {
        return func(a *API) {
-               a.interceptorRegistry = interceptorRegistry
+               a.interceptorRegistry = ir
+               if a.interceptorRegistry == nil {
+                       a.interceptorRegistry = &interceptor.Registry{}
+               }
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/webrtc/v3/go.mod 
new/vendor/github.com/pion/webrtc/v3/go.mod
--- old/vendor/github.com/pion/webrtc/v3/go.mod 2022-01-27 19:09:03.759525500 
+0100
+++ new/vendor/github.com/pion/webrtc/v3/go.mod 2022-02-01 22:10:04.105418200 
+0100
@@ -6,9 +6,9 @@
        github.com/onsi/ginkgo v1.16.5 // indirect
        github.com/onsi/gomega v1.17.0 // indirect
        github.com/pion/datachannel v1.5.2
-       github.com/pion/dtls/v2 v2.1.0
-       github.com/pion/ice/v2 v2.1.18
-       github.com/pion/interceptor v0.1.6
+       github.com/pion/dtls/v2 v2.1.1
+       github.com/pion/ice/v2 v2.1.20
+       github.com/pion/interceptor v0.1.7
        github.com/pion/logging v0.2.2
        github.com/pion/randutil v0.1.0
        github.com/pion/rtcp v1.2.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/webrtc/v3/go.sum 
new/vendor/github.com/pion/webrtc/v3/go.sum
--- old/vendor/github.com/pion/webrtc/v3/go.sum 2022-01-27 19:09:03.759525500 
+0100
+++ new/vendor/github.com/pion/webrtc/v3/go.sum 2022-02-01 22:10:04.105418200 
+0100
@@ -42,13 +42,12 @@
 github.com/onsi/gomega v1.17.0/go.mod 
h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
 github.com/pion/datachannel v1.5.2 
h1:piB93s8LGmbECrpO84DnkIVWasRMk3IimbcXkTQLE6E=
 github.com/pion/datachannel v1.5.2/go.mod 
h1:FTGQWaHrdCwIJ1rw6xBIfZVkslikjShim5yr05XFuCQ=
-github.com/pion/dtls/v2 v2.0.13/go.mod 
h1:OaE7eTM+ppaUhJ99OTO4aHl9uY6vPrT1gPY27uNTxRY=
-github.com/pion/dtls/v2 v2.1.0 h1:g6gtKVNLp6URDkv9OijFJl16kqGHzVzZG+Fa4A38GTY=
-github.com/pion/dtls/v2 v2.1.0/go.mod 
h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
-github.com/pion/ice/v2 v2.1.18 h1:mDzd+iPKJmU30p4Kb+RPjK9olORLqJmQdiTUnVba50g=
-github.com/pion/ice/v2 v2.1.18/go.mod 
h1:9jDr0iIUg8P6+0Jq8QJ/eFSkX3JnsPd293TjCdkfpTs=
-github.com/pion/interceptor v0.1.6 
h1:ZTXN9fApUDmFqifG64g+ar57XY7vlnXUs7/0DjHVtLo=
-github.com/pion/interceptor v0.1.6/go.mod 
h1:Lh3JSl/cbJ2wP8I3ccrjh1K/deRGRn3UlSPuOTiHb6U=
+github.com/pion/dtls/v2 v2.1.1 h1:+ak8AXk2Hw0xjBTwC3ZwTmg72nLckNs3kpIugs4R594=
+github.com/pion/dtls/v2 v2.1.1/go.mod 
h1:qG3gA7ZPZemBqpEFqRKyURYdKEwFZQCGb7gv9T3ON3Y=
+github.com/pion/ice/v2 v2.1.20 h1:xpxXyX5b4WjCh/D905gzBeW/hbJxMEPx2ptVfrhVE6M=
+github.com/pion/ice/v2 v2.1.20/go.mod 
h1:hEAldRzBhTtAfvlU1V/2/nLCMvveQWFKPNCop+63/Iw=
+github.com/pion/interceptor v0.1.7 
h1:HThW0tIIKT9RRoDWGURe8rlZVOx0fJHxBHpA0ej0+bo=
+github.com/pion/interceptor v0.1.7/go.mod 
h1:Lh3JSl/cbJ2wP8I3ccrjh1K/deRGRn3UlSPuOTiHb6U=
 github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
 github.com/pion/logging v0.2.2/go.mod 
h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
 github.com/pion/mdns v0.0.5 h1:Q2oj/JB3NqfzY9xGZ1fPzZzK7sDSD8rZPOvcIQ10BCw=
@@ -91,7 +90,6 @@
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 
h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M=
 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod 
h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/webrtc/v3/peerconnection.go 
new/vendor/github.com/pion/webrtc/v3/peerconnection.go
--- old/vendor/github.com/pion/webrtc/v3/peerconnection.go      2022-01-27 
19:09:03.759525500 +0100
+++ new/vendor/github.com/pion/webrtc/v3/peerconnection.go      2022-02-01 
22:10:04.105418200 +0100
@@ -1450,6 +1450,18 @@
                return errPeerConnRemoteDescriptionNil
        }
 
+       // If a SSRC already exists in the RemoteDescription don't perform 
heuristics upon it
+       for _, track := range trackDetailsFromSDP(pc.log, 
remoteDescription.parsed) {
+               if track.repairSsrc != nil && ssrc == *track.repairSsrc {
+                       return nil
+               }
+               for _, trackSsrc := range track.ssrcs {
+                       if ssrc == trackSsrc {
+                               return nil
+                       }
+               }
+       }
+
        // If the remote SDP was only one media section the ssrc doesn't have 
to be explicitly declared
        if handled, err := pc.handleUndeclaredSSRC(ssrc, remoteDescription); 
handled || err != nil {
                return err
@@ -1526,12 +1538,6 @@
                }
        }
 
-       if readStream != nil {
-               _ = readStream.Close()
-       }
-       if rtcpReadStream != nil {
-               _ = rtcpReadStream.Close()
-       }
        pc.api.interceptor.UnbindRemoteStream(streamInfo)
        return errPeerConnSimulcastIncomingSSRCFailed
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/github.com/pion/webrtc/v3/sdp.go 
new/vendor/github.com/pion/webrtc/v3/sdp.go
--- old/vendor/github.com/pion/webrtc/v3/sdp.go 2022-01-27 19:09:03.759525500 
+0100
+++ new/vendor/github.com/pion/webrtc/v3/sdp.go 2022-02-01 22:10:04.105418200 
+0100
@@ -25,7 +25,7 @@
        streamID   string
        id         string
        ssrcs      []SSRC
-       repairSsrc SSRC
+       repairSsrc *SSRC
        rids       []string
 }
 
@@ -168,9 +168,10 @@
                                trackDetails.id = trackID
                                trackDetails.ssrcs = []SSRC{SSRC(ssrc)}
 
-                               for repairSsrc, baseSsrc := range 
rtxRepairFlows {
+                               for r, baseSsrc := range rtxRepairFlows {
                                        if baseSsrc == ssrc {
-                                               trackDetails.repairSsrc = 
SSRC(repairSsrc)
+                                               repairSsrc := SSRC(r)
+                                               trackDetails.repairSsrc = 
&repairSsrc
                                        }
                                }
 
@@ -216,7 +217,9 @@
                        encodings[i].SSRC = t.ssrcs[i]
                }
 
-               encodings[i].RTX.SSRC = t.repairSsrc
+               if t.repairSsrc != nil {
+                       encodings[i].RTX.SSRC = *t.repairSsrc
+               }
        }
 
        return RTPReceiveParameters{Encodings: encodings}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt
--- old/vendor/modules.txt      2022-01-27 19:09:03.807525000 +0100
+++ new/vendor/modules.txt      2022-02-01 22:10:04.153418000 +0100
@@ -12,7 +12,7 @@
 github.com/jech/samplebuilder
 # github.com/pion/datachannel v1.5.2
 github.com/pion/datachannel
-# github.com/pion/dtls/v2 v2.1.0
+# github.com/pion/dtls/v2 v2.1.1
 github.com/pion/dtls/v2
 github.com/pion/dtls/v2/internal/ciphersuite
 github.com/pion/dtls/v2/internal/closer
@@ -31,7 +31,7 @@
 github.com/pion/dtls/v2/pkg/protocol/extension
 github.com/pion/dtls/v2/pkg/protocol/handshake
 github.com/pion/dtls/v2/pkg/protocol/recordlayer
-# github.com/pion/ice/v2 v2.1.19
+# github.com/pion/ice/v2 v2.1.20
 github.com/pion/ice/v2
 # github.com/pion/interceptor v0.1.7
 github.com/pion/interceptor
@@ -73,7 +73,7 @@
 github.com/pion/turn/v2/internal/server
 # github.com/pion/udp v0.1.1
 github.com/pion/udp
-# github.com/pion/webrtc/v3 v3.1.17
+# github.com/pion/webrtc/v3 v3.1.19
 github.com/pion/webrtc/v3
 github.com/pion/webrtc/v3/internal/fmtp
 github.com/pion/webrtc/v3/internal/mux

Reply via email to