Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package galene for openSUSE:Factory checked in at 2021-12-02 22:30:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/galene (Old) and /work/SRC/openSUSE:Factory/.galene.new.31177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "galene" Thu Dec 2 22:30:14 2021 rev:13 rq:935084 version:0.4.2 Changes: -------- --- /work/SRC/openSUSE:Factory/galene/galene.changes 2021-11-05 22:59:19.632308768 +0100 +++ /work/SRC/openSUSE:Factory/.galene.new.31177/galene.changes 2021-12-02 22:31:08.922466148 +0100 @@ -1,0 +2,9 @@ +Wed Dec 01 23:58:29 UTC 2021 - mich...@stroeder.com + +- Update to version 0.4.2: + * Update the samplebuilder to avoid a crash when a single frame is so + large that it overflows the buffer. + * Various other changes that improve the quality of disk recordings. + * Update dependencies. + +------------------------------------------------------------------- Old: ---- galene-0.4.1.tar.gz New: ---- galene-0.4.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ galene.spec ++++++ --- /var/tmp/diff_new_pack.yfZbHD/_old 2021-12-02 22:31:09.762463055 +0100 +++ /var/tmp/diff_new_pack.yfZbHD/_new 2021-12-02 22:31:09.762463055 +0100 @@ -25,7 +25,7 @@ %bcond_without apparmor Name: galene -Version: 0.4.1 +Version: 0.4.2 Release: 0 Summary: Gal??ne videoconferencing server License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.yfZbHD/_old 2021-12-02 22:31:09.806462892 +0100 +++ /var/tmp/diff_new_pack.yfZbHD/_new 2021-12-02 22:31:09.810462878 +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.1</param> - <param name="version">0.4.1</param> + <param name="revision">galene-0.4.2</param> + <param name="version">0.4.2</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.yfZbHD/_old 2021-12-02 22:31:09.834462789 +0100 +++ /var/tmp/diff_new_pack.yfZbHD/_new 2021-12-02 22:31:09.834462789 +0100 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/jech/galene.git</param> - <param name="changesrevision">37d6ab5445f5f0279e17694dd774fd86610e6c5e</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">0e85552ea776d7d7e8498e599b5655ed9d7a244e</param></service></servicedata> \ No newline at end of file ++++++ galene-0.4.1.tar.gz -> galene-0.4.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/CHANGES new/galene-0.4.2/CHANGES --- old/galene-0.4.1/CHANGES 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/CHANGES 2021-12-02 00:09:28.000000000 +0100 @@ -1,3 +1,9 @@ +1 December 2021: Gal??ne 0.4.2 + + * Update the samplebuilder to avoid a crash when a single frame is so + large that it overflows the buffer. + * Various other changes that improve the quality of disk recordings. + 4 November 2021: Gal??ne 0.4.1 * Create a new file data/config.json with global configuration. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/README new/galene-0.4.2/README --- old/galene-0.4.1/README 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/README 2021-12-02 00:09:28.000000000 +0100 @@ -1,3 +1,7 @@ +Galene is a videoconferencing server that is easy to deploy and requires +moderate server resources. It is described at <https://galene.org>. + + # Installation See the file INSTALL in this directory for installation instructions. @@ -43,7 +47,7 @@ file may look as follows: { - "canonicalHost: "galene.example.org", + "canonicalHost": "galene.example.org", "admin":[{"username":"root","password":"secret"}] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/diskwriter/diskwriter.go new/galene-0.4.2/diskwriter/diskwriter.go --- old/galene-0.4.1/diskwriter/diskwriter.go 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/diskwriter/diskwriter.go 2021-12-02 00:09:28.000000000 +0100 @@ -335,21 +335,21 @@ codec := remote.Codec() if strings.EqualFold(codec.MimeType, "audio/opus") { builder = samplebuilder.New( - 16, &codecs.OpusPacket{}, codec.ClockRate, + 32, &codecs.OpusPacket{}, codec.ClockRate, ) } else if strings.EqualFold(codec.MimeType, "video/vp8") { builder = samplebuilder.New( - 128, &codecs.VP8Packet{}, codec.ClockRate, + 1024, &codecs.VP8Packet{}, codec.ClockRate, ) conn.hasVideo = true } else if strings.EqualFold(codec.MimeType, "video/vp9") { builder = samplebuilder.New( - 128, &codecs.VP9Packet{}, codec.ClockRate, + 1024, &codecs.VP9Packet{}, codec.ClockRate, ) conn.hasVideo = true } else if strings.EqualFold(codec.MimeType, "video/h264") { builder = samplebuilder.New( - 128, &codecs.H264Packet{}, codec.ClockRate, + 1024, &codecs.H264Packet{}, codec.ClockRate, ) conn.hasVideo = true } else { @@ -410,27 +410,28 @@ if valid(t.lastSeqno) { lastSeqno := uint16(value(t.lastSeqno)) if ((p.SequenceNumber - lastSeqno) & 0x8000) == 0 { + // jump forward count := p.SequenceNumber - lastSeqno - if count > 0 && count < 128 { - for i := lastSeqno + 1; i != p.SequenceNumber; i++ { - // different buf each time - buf := make([]byte, 1504) - n := t.remote.GetPacket(i, buf, true) - if n == 0 { - continue - } - p := new(rtp.Packet) - err := p.Unmarshal(buf) - if err == nil { - t.writeRTP(p) - } + if count < 256 { + for i := uint16(1); i < count; i++ { + recover(t, lastSeqno + i) } + } else { + requestKeyframe(t) + } + t.lastSeqno = some(uint32(p.SequenceNumber)) + } else { + // jump backward + count := lastSeqno - p.SequenceNumber + if count >= 512 { + t.lastSeqno = none + requestKeyframe(t) } } + } else { + t.lastSeqno = some(uint32(p.SequenceNumber)) } - t.lastSeqno = some(uint32(p.SequenceNumber)) - err = t.writeRTP(p) if err != nil { return 0, err @@ -438,6 +439,29 @@ return len(buf), nil } +func recover(t *diskTrack, seqno uint16) { + // since the samplebuilder retains packets, use a fresh buffer + buf := make([]byte, 1504) + n := t.remote.GetPacket(seqno, buf, true) + if n == 0 { + return + } + p := new(rtp.Packet) + err := p.Unmarshal(buf) + if err != nil { + return + } + t.writeRTP(p) +} + +func requestKeyframe(t *diskTrack) { + now := time.Now() + if now.Sub(t.kfRequested) > 500*time.Millisecond { + t.remote.RequestKeyframe() + t.kfRequested = now + } +} + // writeRTP writes the packet without doing any loss recovery. // Called locked. func (t *diskTrack) writeRTP(p *rtp.Packet) error { @@ -513,10 +537,7 @@ if keyframe { t.lastKf = now } else if t.writer == nil || now.Sub(t.lastKf) > 4*time.Second { - if now.Sub(t.kfRequested) > time.Second { - t.remote.RequestKeyframe() - t.kfRequested = now - } + requestKeyframe(t) return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/go.mod new/galene-0.4.2/go.mod --- old/galene-0.4.1/go.mod 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/go.mod 2021-12-02 00:09:28.000000000 +0100 @@ -6,13 +6,14 @@ github.com/at-wat/ebml-go v0.16.0 github.com/gorilla/websocket v1.4.2 github.com/jech/cert v0.0.0-20210819231831-aca735647728 - github.com/jech/samplebuilder v0.0.0-20210823163459-dd92d75bae48 - github.com/pion/ice/v2 v2.1.13 - github.com/pion/rtcp v1.2.8 + github.com/jech/samplebuilder v0.0.0-20211128135502-32cf2bc0a2b6 + github.com/pion/ice/v2 v2.1.14 + 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.5 - github.com/pion/webrtc/v3 v3.1.6 - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 - golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 + github.com/pion/webrtc/v3 v3.1.11 + golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 + golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 // indirect + golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/go.sum new/galene-0.4.2/go.sum --- old/galene-0.4.1/go.sum 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/go.sum 2021-12-02 00:09:28.000000000 +0100 @@ -25,8 +25,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/jech/cert v0.0.0-20210819231831-aca735647728 h1:tN+W1ll2oKuJGMCaO1CRK4rr+xSRjVSfWmnKlACdx38= github.com/jech/cert v0.0.0-20210819231831-aca735647728/go.mod h1:FXUA/zpiQfV4uBVN2kAwkf3X7pU7l1l2ovS45CsSYZs= -github.com/jech/samplebuilder v0.0.0-20210823163459-dd92d75bae48 h1:KTbuIm1zPo0aWHLPs5uLU4u68gxvP6bs7Iyw4Rzd8c0= -github.com/jech/samplebuilder v0.0.0-20210823163459-dd92d75bae48/go.mod h1:CHSZxAXMLpiht1TO02fn+EO2IEd1jgg80O9XswtRDW0= +github.com/jech/samplebuilder v0.0.0-20211128135502-32cf2bc0a2b6 h1:H9gIl/rX1Lb44RxR/9tljyQWC/cvlWGBSSuSb5iOnII= +github.com/jech/samplebuilder v0.0.0-20211128135502-32cf2bc0a2b6/go.mod h1:v8Ft/hAXNMLvYSyhWFcKgKgfqPV4EwOhVwk4oLstjpE= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -40,17 +40,18 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.11.0/go.mod h1:azGKhqFUon9Vuj0YmTfLSmx0FUwqXYSTl5re8lQLTUg= -github.com/pion/datachannel v1.4.21 h1:3ZvhNyfmxsAqltQrApLPQMhSFNA+aT87RqyCq4OXmf0= github.com/pion/datachannel v1.4.21/go.mod h1:oiNyP4gHx2DIwRzX/MFyH0Rz/Gz05OgBlayAI2hAWjg= +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.10 h1:wgys7gPR1NMbWjmjJ3CW7lkUGaun8djgH8nahpNLnxI= github.com/pion/dtls/v2 v2.0.10/go.mod h1:00OxfeCRWHShcqT9jx8pKKmBWuTt0NCZoVPCaC4VKvU= github.com/pion/ice/v2 v2.1.10/go.mod h1:kV4EODVD5ux2z8XncbLHIOtcXKtYXVgLVCeVqnpoeP0= -github.com/pion/ice/v2 v2.1.13 h1:/YNYcIw56LT/whwuzkTnrprcRnapj2ZNqUsR0W8elmo= -github.com/pion/ice/v2 v2.1.13/go.mod h1:ovgYHUmwYLlRvcCLI67PnQ5YGe+upXZbGgllBDG/ktU= +github.com/pion/ice/v2 v2.1.14 h1:nD9GZs3MiR1/dPa5EiMRMe8hLBG3/qqCdx/hTS2g8VE= +github.com/pion/ice/v2 v2.1.14/go.mod h1:ovgYHUmwYLlRvcCLI67PnQ5YGe+upXZbGgllBDG/ktU= github.com/pion/interceptor v0.0.15/go.mod h1:pg3J253eGi5bqyKzA74+ej5Y19ez2jkWANVnF+Z9Dfk= -github.com/pion/interceptor v0.1.0 h1:SlXKaDlEvSl7cr4j8fJykzVz4UdH+7UDtcvx+u01wLU= -github.com/pion/interceptor v0.1.0/go.mod h1:j5NIl3tJJPB3u8+Z2Xz8MZs/VV6rc+If9mXEKNuFmEM= +github.com/pion/interceptor v0.1.2 h1:1IfrJ+AQ0HhwxNl4hqh9hMvl1hBKiNhAAr7DrUHsC6s= +github.com/pion/interceptor v0.1.2/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= @@ -58,16 +59,17 @@ github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= github.com/pion/rtcp v1.2.6/go.mod h1:52rMNPWFsjr39z9B9MhnkqhPLoeHTv1aN63o/42bWE0= -github.com/pion/rtcp v1.2.8 h1:Cys8X6r0xxU65ESTmXkqr8eU1Q1Wx+lNkoZCUH4zD7E= -github.com/pion/rtcp v1.2.8/go.mod h1:qVPhiCzAm4D/rxb6XzKeyZiQK69yJpbUDJSF7TgrqNo= +github.com/pion/rtcp v1.2.9 h1:1ujStwg++IOLIEoOiIQ2s+qBuJ1VN81KW+9pMPsif+U= +github.com/pion/rtcp v1.2.9/go.mod h1:qVPhiCzAm4D/rxb6XzKeyZiQK69yJpbUDJSF7TgrqNo= github.com/pion/rtp v1.7.0/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko= github.com/pion/rtp v1.7.1/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko= github.com/pion/rtp v1.7.2/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko= github.com/pion/rtp v1.7.4 h1:4dMbjb1SuynU5OpA3kz1zHK+u+eOCQjW3MAeVHf1ODA= github.com/pion/rtp v1.7.4/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko= github.com/pion/sctp v1.7.10/go.mod h1:EhpTUQu1/lcK3xI+eriS6/96fWetHGCvBi9MSsnaBN0= -github.com/pion/sctp v1.7.12 h1:GsatLufywVruXbZZT1CKg+Jr8ZTkwiPnmUC/oO9+uuY= github.com/pion/sctp v1.7.12/go.mod h1:xFe9cLMZ5Vj6eOzpyiKjT9SwGM4KpK/8Jbw5//jc+0s= +github.com/pion/sctp v1.8.0 h1:6erMF2qmQwXr+0iB1lm0AUSmDr9LdmpaBzgSVAEgehw= +github.com/pion/sctp v1.8.0/go.mod h1:xFe9cLMZ5Vj6eOzpyiKjT9SwGM4KpK/8Jbw5//jc+0s= github.com/pion/sdp/v3 v3.0.4 h1:2Kf+dgrzJflNCSw3TV5v2VLeI0s/qkzy2r5jlR0wzf8= github.com/pion/sdp/v3 v3.0.4/go.mod h1:bNiSknmJE0HYBprTHXKPQ3+JjacTv5uap92ueJZKsRk= github.com/pion/srtp/v2 v2.0.5 h1:ks3wcTvIUE/GHndO3FAvROQ9opy0uLELpwHJaQ1yqhQ= @@ -83,9 +85,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-beta.3/go.mod h1:I4O6v2pkiXdVmcn7sUhCNwHUAepGU19PVEyR204s1qc= -github.com/pion/webrtc/v3 v3.1.6 h1:r6WQRayW2SyKTYeRl4vBUQ43XXp7RSwBJ9+tNQWI5zQ= -github.com/pion/webrtc/v3 v3.1.6/go.mod h1:tkwdWNYdZhc200hH/wPx6AtNo/rcTAM6MICA6dg1je8= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pion/webrtc/v3 v3.1.11 h1:8Q5BEsxvlDn3botM8U8n/Haln745FBa5TWgm8v2c2FA= +github.com/pion/webrtc/v3 v3.1.11/go.mod h1:h9pbP+CADYb/99s5rfjflEcBLgdVKm55Rm7heQ/gIvY= 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= @@ -100,8 +101,9 @@ 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-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 h1:/pEO3GD/ABYAjuakUS6xSEmmlyVS4kxBNkeA9tLJiTI= +golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -117,8 +119,10 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211005001312-d4b1ae081e3b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211020060615-d418f374d309 h1:A0lJIi+hcTR6aajJH4YqKWwohY4aW9RO7oRMcdv+HKI= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 h1:0qxwC5n+ttVOINCBeRHO0nq9X7uy8SDsPoi5OaCdIEI= +golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -135,8 +139,9 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 h1:TyHqChC80pFkXWraUUf6RuB5IqFdQieMLwwCJokV2pc= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/rtpconn/rtpwriter.go new/galene-0.4.2/rtpconn/rtpwriter.go --- old/galene-0.4.1/rtpconn/rtpwriter.go 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/rtpconn/rtpwriter.go 2021-12-02 00:09:28.000000000 +0100 @@ -327,8 +327,6 @@ return } - time.Sleep(50 * time.Millisecond) - // drop any nacks before the last keyframe var cutoff uint16 seqno, found := track.cache.Keyframe() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/rtpconn/webclient.go new/galene-0.4.2/rtpconn/webclient.go --- old/galene-0.4.1/rtpconn/webclient.go 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/rtpconn/webclient.go 2021-12-02 00:09:28.000000000 +0100 @@ -1590,7 +1590,7 @@ if sg.Clients > 1 { plural = "s" } - s = s + fmt.Sprintf("%v (%v client%v)", + s = s + fmt.Sprintf("%v (%v client%v)\n", sg.Name, sg.Clients, plural) } c.write(clientMessage{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/static/galene.js new/galene-0.4.2/static/galene.js --- old/galene-0.4.1/static/galene.js 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/static/galene.js 2021-12-02 00:09:28.000000000 +0100 @@ -1085,7 +1085,15 @@ case 'off': return false; default: - if(Object.keys(serverConnection.users).length <= 2) + let count = 0; + for(let n in serverConnection.users) { + if(!serverConnection.users[n].permissions["system"]) { + count++; + if(count > 2) + break; + } + } + if(count <= 2) return false; let bps = getMaxVideoThroughput(); return bps <= 0 || bps >= 2 * simulcastRate; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/static/protocol.js new/galene-0.4.2/static/protocol.js --- old/galene-0.4.1/static/protocol.js 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/static/protocol.js 2021-12-02 00:09:28.000000000 +0100 @@ -783,8 +783,10 @@ */ ServerConnection.prototype.gotClose = function(id) { let c = this.down[id]; - if(!c) + if(!c) { console.warn('unknown down stream', id); + return; + } c.close(); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.4.1/webserver/webserver.go new/galene-0.4.2/webserver/webserver.go --- old/galene-0.4.1/webserver/webserver.go 2021-11-05 15:31:09.000000000 +0100 +++ new/galene-0.4.2/webserver/webserver.go 2021-12-02 00:09:28.000000000 +0100 @@ -86,7 +86,7 @@ return err } -func mungeHeader(w http.ResponseWriter) { +func cspHeader(w http.ResponseWriter) { w.Header().Add("Content-Security-Policy", "connect-src ws: wss: 'self'; img-src data: 'self'; media-src blob: 'self'; default-src 'self'") } @@ -174,7 +174,7 @@ return } - mungeHeader(w) + cspHeader(w) p := r.URL.Path // this ensures any leading .. are removed by path.Clean below if !strings.HasPrefix(p, "/") { @@ -316,7 +316,7 @@ return } - mungeHeader(w) + cspHeader(w) serveFile(w, r, filepath.Join(StaticRoot, "galene.html")) } ++++++ vendor.tar.gz ++++++ ++++ 6839 lines of diff (skipped)