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-04-27 21:35:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/galene (Old) and /work/SRC/openSUSE:Factory/.galene.new.12324 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "galene" Tue Apr 27 21:35:29 2021 rev:8 rq:888869 version:0.3.4 Changes: -------- --- /work/SRC/openSUSE:Factory/galene/galene.changes 2021-04-17 23:24:51.213582642 +0200 +++ /work/SRC/openSUSE:Factory/.galene.new.12324/galene.changes 2021-04-27 21:36:02.592120185 +0200 @@ -1,0 +2,10 @@ +Tue Apr 27 17:22:43 UTC 2021 - [email protected] + +- Update to version 0.3.4: + * Fixed a bug in the loss estimator. We will now reduce the rate more + aggressively when there is loss in the client->serer direction. + * Fixed display of the chat on some devices. + * Exported the group.Description data structure for the sake of external + configuration tools. + +------------------------------------------------------------------- Old: ---- galene-0.3.3.tar.gz New: ---- galene-0.3.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ galene.spec ++++++ --- /var/tmp/diff_new_pack.RbtqSq/_old 2021-04-27 21:36:03.204121192 +0200 +++ /var/tmp/diff_new_pack.RbtqSq/_new 2021-04-27 21:36:03.204121192 +0200 @@ -25,7 +25,7 @@ %bcond_without apparmor Name: galene -Version: 0.3.3 +Version: 0.3.4 Release: 0 Summary: Gal??ne videoconferencing server License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.RbtqSq/_old 2021-04-27 21:36:03.232121238 +0200 +++ /var/tmp/diff_new_pack.RbtqSq/_new 2021-04-27 21:36:03.232121238 +0200 @@ -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.3.3</param> - <param name="version">0.3.3</param> + <param name="revision">galene-0.3.4</param> + <param name="version">0.3.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.RbtqSq/_old 2021-04-27 21:36:03.248121265 +0200 +++ /var/tmp/diff_new_pack.RbtqSq/_new 2021-04-27 21:36:03.248121265 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/jech/galene.git</param> - <param name="changesrevision">45558f3e881543b0394e70069f2307434b9f6580</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">cd673d01d34b09fe68450ad57d406ccf6903a0d3</param></service></servicedata> \ No newline at end of file ++++++ galene-0.3.3.tar.gz -> galene-0.3.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/CHANGES new/galene-0.3.4/CHANGES --- old/galene-0.3.3/CHANGES 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/CHANGES 2021-04-27 16:15:33.000000000 +0200 @@ -1,3 +1,11 @@ +27 April 2021: Gal??ne 0.3.4 + + * Fixed a bug in the loss estimator. We will now reduce the rate more + aggressively when there is loss in the client->serer direction. + * Fixed display of the chat on some devices. + * Exported the group.Description data structure for the sake of external + configuration tools. + 16 April 2021: Gal??ne 0.3.3 * Fixed an off-by-one error that could occasionally lead to a server diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/go.mod new/galene-0.3.4/go.mod --- old/galene-0.3.3/go.mod 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/go.mod 2021-04-27 16:15:33.000000000 +0200 @@ -3,13 +3,13 @@ go 1.13 require ( - github.com/at-wat/ebml-go v0.15.0 + github.com/at-wat/ebml-go v0.16.0 github.com/gorilla/websocket v1.4.2 - github.com/pion/ice/v2 v2.0.15 + github.com/pion/ice/v2 v2.1.5 github.com/pion/rtcp v1.2.6 github.com/pion/rtp v1.6.2 github.com/pion/sdp/v3 v3.0.4 github.com/pion/turn/v2 v2.0.5 - github.com/pion/webrtc/v3 v3.0.12 - golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 + github.com/pion/webrtc/v3 v3.0.25 + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/go.sum new/galene-0.3.4/go.sum --- old/galene-0.3.3/go.sum 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/go.sum 2021-04-27 16:15:33.000000000 +0200 @@ -1,59 +1,52 @@ -github.com/at-wat/ebml-go v0.15.0 h1:TkKXDOyT720o0pc8rENLknicSILxS1izaII/zaPLTEQ= -github.com/at-wat/ebml-go v0.15.0/go.mod h1:w1cJs7zmGsb5nnSvhWGKLCxvfu4FVx5ERvYDIalj1ww= +github.com/at-wat/ebml-go v0.16.0 h1:3NPy83uMzVRHWdWlcJYSXWn/+u2GmtPQSL1LZJbjcCw= +github.com/at-wat/ebml-go v0.16.0/go.mod h1:w1cJs7zmGsb5nnSvhWGKLCxvfu4FVx5ERvYDIalj1ww= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.5 h1:kxhtnfFVi+rYdOALN0B3k9UT86zVJKfBimRaciULW4I= -github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= 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= 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/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.1/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= +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/dtls/v2 v2.0.4 h1:WuUcqi6oYMu/noNTz92QrF1DaFj4eXbhQ6dzaaAwOiI= -github.com/pion/dtls/v2 v2.0.4/go.mod h1:qAkFscX0ZHoI1E07RfYPoRw3manThveu+mlTDdOxoGI= -github.com/pion/dtls/v2 v2.0.7 h1:PNcUs/G1l9hb4jzMEorgFMxIBdp7fRN4LIApOTMtCYs= -github.com/pion/dtls/v2 v2.0.7/go.mod h1:QuDII+8FVvk9Dp5t5vYIMTo7hh7uBkra+8QIm7QGm10= -github.com/pion/ice/v2 v2.0.15 h1:KZrwa2ciL9od8+TUVJiYTNsCW9J5lktBjGwW1MacEnQ= -github.com/pion/ice/v2 v2.0.15/go.mod h1:ZIiVGevpgAxF/cXiIVmuIUtCb3Xs4gCzCbXB6+nFkSI= -github.com/pion/interceptor v0.0.10 h1:dXFyFWRJFwmzQqyn0U8dUAbOJu+JJnMVAqxmvTu30B4= -github.com/pion/interceptor v0.0.10/go.mod h1:qzeuWuD/ZXvPqOnxNcnhWfkCZ2e1kwwslicyyPnhoK4= +github.com/pion/dtls/v2 v2.0.9 h1:7Ow+V++YSZQMYzggI0P9vLJz/hUFcffsfGMfT/Qy+u8= +github.com/pion/dtls/v2 v2.0.9/go.mod h1:O0Wr7si/Zj5/EBFlDzDd6UtVxx25CE1r7XM7BQKYQho= +github.com/pion/ice/v2 v2.1.5 h1:OqWkKmiLqDU6j+oZnoaxTtO2tR/2QwrUfj3l7BgltzE= +github.com/pion/ice/v2 v2.1.5/go.mod h1:kV4EODVD5ux2z8XncbLHIOtcXKtYXVgLVCeVqnpoeP0= +github.com/pion/interceptor v0.0.12 h1:eC1iVneBIAQJEfaNAfDqAncJWhMDAnaXPRCJsltdokE= +github.com/pion/interceptor v0.0.12/go.mod h1:qzeuWuD/ZXvPqOnxNcnhWfkCZ2e1kwwslicyyPnhoK4= 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.4 h1:O4vvVqr4DGX63vzmO6Fw9vpy3lfztVWHGCQfyw0ZLSY= -github.com/pion/mdns v0.0.4/go.mod h1:R1sL0p50l42S5lJs91oNdUL58nm0QHrhxnSegr++qC0= +github.com/pion/mdns v0.0.5 h1:Q2oj/JB3NqfzY9xGZ1fPzZzK7sDSD8rZPOvcIQ10BCw= +github.com/pion/mdns v0.0.5/go.mod h1:UgssrvdD3mxpi8tMxAXbsppL3vJ4Jipw1mTCW+al01g= 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 h1:1zvwBbyd0TeEuuWftrd/4d++m+/kZSeiguxU61LFWpo= @@ -61,92 +54,80 @@ github.com/pion/rtp v1.6.2 h1:iGBerLX6JiDjB9NXuaPzHyxHFG9JsIEdgwTC0lp5n/U= github.com/pion/rtp v1.6.2/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.11 h1:UCnj7MsobLKLuP/Hh+JMiI/6W5Bs/VF45lWKgHFjSIE= -github.com/pion/sctp v1.7.11/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/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.1 h1:kgfh65ob3EcnFYA4kUBvU/menCp9u7qaJLXwWgpobzs= -github.com/pion/srtp/v2 v2.0.1/go.mod h1:c8NWHhhkFf/drmHTAblkdu8++lsISEBBdAuiyxgqIsE= +github.com/pion/srtp/v2 v2.0.2 h1:664iGzVmaY7KYS5M0gleY0DscRo9ReDfTxQrq4UgGoU= +github.com/pion/srtp/v2 v2.0.2/go.mod h1:VEyLv4CuxrwGY8cxM+Ng3bmVy8ckz/1t6A0q/msKOw0= github.com/pion/stun v0.3.5 h1:uLUCBCkQby4S1cf6CGuR9QrVOKcvUwFeemaC865QHDg= github.com/pion/stun v0.3.5/go.mod h1:gDMim+47EeEtfWogA37n6qXZS88L5V6LqFcf+DZA2UA= -github.com/pion/transport v0.8.10/go.mod h1:tBmha/UCjpum5hqTWhfAEs3CO4/tHSg0MYRhSzR+CZ8= -github.com/pion/transport v0.10.0 h1:9M12BSneJm6ggGhJyWpDveFOstJsTiQjkLf4M44rm80= -github.com/pion/transport v0.10.0/go.mod h1:BnHnUipd0rZQyTVB2SBGojFHT9CBt5C5TcsJSQGkvSE= -github.com/pion/transport v0.10.1 h1:2W+yJT+0mOQ160ThZYUx5Zp2skzshiNgxrNE9GUfhJM= github.com/pion/transport v0.10.1/go.mod h1:PBis1stIILMiis0PewDw91WJeLJkyIMcEk+DwKOzf4A= -github.com/pion/transport v0.12.1/go.mod h1:N3+vZQD9HlDP5GWkZ85LohxNsDcNgofQmyL6ojX5d8Q= -github.com/pion/transport v0.12.2 h1:WYEjhloRHt1R86LhUKjC5y+P52Y11/QqEUalvtzVoys= github.com/pion/transport v0.12.2/go.mod h1:N3+vZQD9HlDP5GWkZ85LohxNsDcNgofQmyL6ojX5d8Q= +github.com/pion/transport v0.12.3 h1:vdBfvfU/0Wq8kd2yhUMSDB/x+O4Z9MYVl2fJ5BT4JZw= +github.com/pion/transport v0.12.3/go.mod h1:OViWW9SP2peE/HbwBvARicmAVnesphkNkCVZIWJ6q9A= github.com/pion/turn/v2 v2.0.5 h1:iwMHqDfPEDEOFzwWKT56eFmh6DYC6o/+xnLAEzgISbA= github.com/pion/turn/v2 v2.0.5/go.mod h1:APg43CFyt/14Uy7heYUOGWdkem/Wu4PhCO/bjyrTqMw= -github.com/pion/udp v0.1.0 h1:uGxQsNyrqG3GLINv36Ff60covYmfrLoxzwnCsIYspXI= -github.com/pion/udp v0.1.0/go.mod h1:BPELIjbwE9PRbd/zxI/KYBnbo7B6+oA6YuEaNE8lths= -github.com/pion/webrtc/v3 v3.0.12 h1:XjTwtnx8dsyfBfESHAdBTnqmajku+2Y9RXXyC4KB0LM= -github.com/pion/webrtc/v3 v3.0.12/go.mod h1:Y9t8I+0qeCCaUjg5wrweNVtK7reqZHc/MQdkznhzcro= +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.0.25 h1:AOsku4YIegyrGD6CQFDDGvNeS1p8KnwWlnDWaY3yTTM= +github.com/pion/webrtc/v3 v3.0.25/go.mod h1:Qx9zd4xvIeFTN1hygyJ77XVi/YbElyjVitL6KyCEIpE= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 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= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +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-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +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= -golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7 h1:3uJsdck53FDIpWwLeAXlia9p4C8j0BO2xZrqzKpL0D8= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210420210106-798c2154c571 h1:Q6Bg8xzKzpFPU4Oi1sBnBTHBwlMsLeEXpu4hYBY8rAg= +golang.org/x/net v0.0.0-20210420210106-798c2154c571/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe h1:WdX7u8s3yOigWAhHEaDl8r9G+4XwFQEQFtBMYyN+kXQ= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -155,19 +136,15 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/group/group.go new/galene-0.3.4/group/group.go --- old/galene-0.3.3/group/group.go 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/group/group.go 2021-04-27 16:15:33.000000000 +0200 @@ -66,7 +66,7 @@ name string mu sync.Mutex - description *description + description *Description locked *string clients map[string]Client history []ChatHistoryEntry @@ -266,7 +266,7 @@ return APIFromCodecs(codecs) } -func Add(name string, desc *description) (*Group, error) { +func Add(name string, desc *Description) (*Group, error) { if name == "" || strings.HasSuffix(name, "/") { return nil, UserError("illegal group name") } @@ -698,31 +698,72 @@ return false, false } -type description struct { - fileName string `json:"-"` - modTime time.Time `json:"-"` - fileSize int64 `json:"-"` - Description string `json:"description,omitempty"` - Contact string `json:"contact,omitempty"` - Comment string `json:"comment,omitempty"` - Redirect string `json:"redirect,omitempty"` - Public bool `json:"public,omitempty"` - MaxClients int `json:"max-clients,omitempty"` - MaxHistoryAge int `json:"max-history-age,omitempty"` - AllowAnonymous bool `json:"allow-anonymous,omitempty"` - AllowRecording bool `json:"allow-recording,omitempty"` - AllowSubgroups bool `json:"allow-subgroups,omitempty"` - Autolock bool `json:"autolock,omitempty"` - Autokick bool `json:"autokick,omitempty"` - Op []ClientCredentials `json:"op,omitempty"` - Presenter []ClientCredentials `json:"presenter,omitempty"` - Other []ClientCredentials `json:"other,omitempty"` - Codecs []string `json:"codecs,omitempty"` +// Type Description represents a group description together with some +// metadata about the JSON file it was deserialised from. +type Description struct { + // The file this was deserialised from. This is not necessarily + // the name of the group, for example in case of a subgroup. + FileName string `json:"-"` + + // The modtime and size of the file. These are used to detect + // when a file has changed on disk. + modTime time.Time `json:"-"` + fileSize int64 `json:"-"` + + // A user-readable description of the group. + Description string `json:"description,omitempty"` + + // A user-readable contact, typically an e-mail address. + Contact string `json:"contact,omitempty"` + + // A user-readable comment. Ignored by the server. + Comment string `json:"comment,omitempty"` + + // Whether to display the group on the landing page. + Public bool `json:"public,omitempty"` + + // A URL to redirect the group to. If this is not empty, most + // other fields are ignored. + Redirect string `json:"redirect,omitempty"` + + // The maximum number of simultaneous clients. Unlimited if 0. + MaxClients int `json:"max-clients,omitempty"` + + // The time for which history entries are kept. + MaxHistoryAge int `json:"max-history-age,omitempty"` + + // Whether users are allowed to log in with an empty username. + AllowAnonymous bool `json:"allow-anonymous,omitempty"` + + // Whether recording is allowed. + AllowRecording bool `json:"allow-recording,omitempty"` + + // Whether subgroups are created on the fly. + AllowSubgroups bool `json:"allow-subgroups,omitempty"` + + // Whether to lock the group when the last op logs out. + Autolock bool `json:"autolock,omitempty"` + + // Whether to kick all users when the last op logs out. + Autokick bool `json:"autokick,omitempty"` + + // A list of logins for ops. + Op []ClientCredentials `json:"op,omitempty"` + + // A list of logins for presenters. + Presenter []ClientCredentials `json:"presenter,omitempty"` + + // A list of logins for non-presenting users. + Other []ClientCredentials `json:"other,omitempty"` + + // Codec preferences. If empty, a suitable default is chosen in + // the APIFromNames function. + Codecs []string `json:"codecs,omitempty"` } const DefaultMaxHistoryAge = 4 * time.Hour -func maxHistoryAge(desc *description) time.Duration { +func maxHistoryAge(desc *Description) time.Duration { if desc.MaxHistoryAge != 0 { return time.Duration(desc.MaxHistoryAge) * time.Second } @@ -765,9 +806,9 @@ // descriptionChanged returns true if a group's description may have // changed since it was last read. -func descriptionChanged(name string, desc *description) bool { +func descriptionChanged(name string, desc *Description) bool { fi, fileName, _, err := statDescriptionFile(name) - if err != nil || fileName != desc.fileName { + if err != nil || fileName != desc.FileName { return true } @@ -777,14 +818,14 @@ return false } -func GetDescription(name string) (*description, error) { +func GetDescription(name string) (*Description, error) { r, fileName, isParent, err := openDescriptionFile(name) if err != nil { return nil, err } defer r.Close() - var desc description + var desc Description fi, err := r.Stat() if err != nil { @@ -805,14 +846,14 @@ desc.Description = "" } - desc.fileName = fileName + desc.FileName = fileName desc.fileSize = fi.Size() desc.modTime = fi.ModTime() return &desc, nil } -func (desc *description) GetPermission(group string, c Challengeable) (ClientPermissions, error) { +func (desc *Description) GetPermission(group string, c Challengeable) (ClientPermissions, error) { var p ClientPermissions if !desc.AllowAnonymous && c.Username() == "" { return p, UserError("anonymous users not allowed in this group, please choose a username") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/group/group_test.go new/galene-0.3.4/group/group_test.go --- old/galene-0.3.3/group/group_test.go 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/group/group_test.go 2021-04-27 16:15:33.000000000 +0200 @@ -10,8 +10,8 @@ func TestGroup(t *testing.T) { groups.groups = nil - Add("group", &description{}) - Add("group/subgroup", &description{Public: true}) + Add("group", &Description{}) + Add("group/subgroup", &Description{Public: true}) if len(groups.groups) != 2 { t.Errorf("Expected 2, got %v", len(groups.groups)) } @@ -95,7 +95,7 @@ func TestChatHistory(t *testing.T) { g := Group{ - description: &description{}, + description: &Description{}, } for i := 0; i < 2*maxChatHistory; i++ { g.AddToChatHistory("id", "user", ToJSTime(time.Now()), "", @@ -132,7 +132,7 @@ }` func TestDescriptionJSON(t *testing.T) { - var d description + var d Description err := json.Unmarshal([]byte(descJSON), &d) if err != nil { t.Fatalf("unmarshal: %v", err) @@ -143,7 +143,7 @@ t.Fatalf("marshal: %v", err) } - var ddd description + var ddd Description err = json.Unmarshal([]byte(dd), &ddd) if err != nil { t.Fatalf("unmarshal: %v", err) @@ -209,7 +209,7 @@ } func TestPermissions(t *testing.T) { - var d description + var d Description err := json.Unmarshal([]byte(descJSON), &d) if err != nil { t.Fatalf("unmarshal: %v", err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/packetcache/packetcache.go new/galene-0.3.4/packetcache/packetcache.go --- old/galene-0.3.3/packetcache/packetcache.go 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/packetcache/packetcache.go 2021-04-27 16:15:33.000000000 +0200 @@ -260,14 +260,15 @@ cache.lastValid = true cache.expected++ } else { - if compare(cache.last, seqno) <= 0 { + cmp := compare(cache.last, seqno) + if cmp < 0 { cache.expected += uint32(seqno - cache.last) cache.lost += uint32(seqno - cache.last - 1) if seqno < cache.last { cache.cycle++ } cache.last = seqno - } else { + } else if cmp > 0 { if cache.lost > 0 { cache.lost-- } @@ -346,7 +347,7 @@ } } -// Expect records that we expect n packets. It is used for loss statistics. +// Expect records that we expect n additional packets. func (cache *Cache) Expect(n int) { if n <= 0 { return @@ -354,6 +355,7 @@ cache.mu.Lock() defer cache.mu.Unlock() cache.expected += uint32(n) + cache.lost++ } // get retrieves a packet from a slice of entries. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/packetcache/packetcache_test.go new/galene-0.3.4/packetcache/packetcache_test.go --- old/galene-0.3.3/packetcache/packetcache_test.go 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/packetcache/packetcache_test.go 2021-04-27 16:15:33.000000000 +0200 @@ -493,3 +493,72 @@ t.Errorf("Expected %v, got %v", l, n) } } + +func TestCacheStatsFull(t *testing.T) { + cache := New(16) + for i := 0; i < 32; i++ { + cache.Store(uint16(i), 0, false, false, []byte{uint8(i)}) + } + expected, lost, totalLost, eseqno := cache.GetStats(false) + if expected != 32 || + lost != 0 || + totalLost != 0 || + eseqno != 31 { + t.Errorf("Expected 32, 0, 0, 31, got %v, %v, %v, %v", + expected, lost, totalLost, eseqno) + } +} + +func TestCacheStatsDrop(t *testing.T) { + cache := New(16) + for i := 0; i < 32; i++ { + if i != 8 { + cache.Store(uint16(i), 0, false, false, []byte{uint8(i)}) + } + } + expected, lost, totalLost, eseqno := cache.GetStats(false) + if expected != 32 || + lost != 1 || + totalLost != 1 || + eseqno != 31 { + t.Errorf("Expected 32, 1, 1, 31, got %v, %v, %v, %v", + expected, lost, totalLost, eseqno) + } +} + +func TestCacheStatsUnordered(t *testing.T) { + cache := New(16) + for i := 0; i < 32; i++ { + if i != 8 { + cache.Store(uint16(i), 0, false, false, []byte{uint8(i)}) + } + } + cache.Store(uint16(8), 0, false, false, []byte{8}) + expected, lost, totalLost, eseqno := cache.GetStats(false) + if expected != 32 || + lost != 0 || + totalLost != 0 || + eseqno != 31 { + t.Errorf("Expected 32, 1, 1, 31, got %v, %v, %v, %v", + expected, lost, totalLost, eseqno) + } +} + +func TestCacheStatsNack(t *testing.T) { + cache := New(16) + for i := 0; i < 32; i++ { + if i != 8 { + cache.Store(uint16(i), 0, false, false, []byte{uint8(i)}) + } + } + cache.Expect(1) + cache.Store(uint16(8), 0, false, false, []byte{8}) + expected, lost, totalLost, eseqno := cache.GetStats(false) + if expected != 33 || + lost != 1 || + totalLost != 1 || + eseqno != 31 { + t.Errorf("Expected 33, 1, 1, 31, got %v, %v, %v, %v", + expected, lost, totalLost, eseqno) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/common.css new/galene-0.3.4/static/common.css --- old/galene-0.3.3/static/common.css 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/common.css 2021-04-27 16:15:33.000000000 +0200 @@ -11,7 +11,7 @@ padding-top: 0; border-width: thin; clear: both; - height: 3.125rem; + min-height: 3.125rem; text-align: center; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/galene.css new/galene-0.3.4/static/galene.css --- old/galene-0.3.3/static/galene.css 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/galene.css 2021-04-27 16:15:33.000000000 +0200 @@ -434,8 +434,8 @@ display: block; } -.collapse-video { - display: none; +.chat-btn { + display: block; /*on top of video peers*/ z-index: 1002; font-size: 1.8em; @@ -445,15 +445,16 @@ cursor: pointer; } -.collapse-video .open-chat { +.chat-btn .icon-chat { color: #cac7c7; height: 50px; padding: 10px; text-shadow: 0px 0px 1px #b3adad; } -.no-video { - display: none; +.collapse-video { + left: inherit; + right: 30px; } .video-controls, .top-video-controls { @@ -1000,7 +1001,6 @@ .show-video { position: absolute; - display: none; right: 30px; bottom: 120px; color: white; @@ -1188,7 +1188,13 @@ /* END Sidebar Left */ -@media only screen and (max-device-width: 1024px) { +@media only screen and (min-width: 1025px) { + .coln-right .collapse-video, .coln-right .show-video { + display: none; + } +} + +@media only screen and (max-width: 1024px) { #presentbutton, #unpresentbutton { width: auto; } @@ -1214,12 +1220,7 @@ height: calc(var(--vh, 1vh) * 100 - 56px); } - .collapse-video { - left: inherit; - right: 60px; - } - - .close-chat { + .close-chat, .show-chat { display: none; } @@ -1248,6 +1249,8 @@ .coln-left { flex: 100%; width: 100vw; + /* chat is always visible here */ + display: block !important; } .coln-right { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/galene.html new/galene-0.3.4/static/galene.html --- old/galene-0.3.3/static/galene.html 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/galene.html 2021-04-27 16:15:33.000000000 +0200 @@ -99,13 +99,16 @@ </div> <div id="resizer"></div> <div class="coln-right" id="right"> - <span class="show-video blink" id="switch-video"> + <span class="show-video blink invisible" id="show-video"> <i class="fas fa-exchange-alt" aria-hidden="true"></i> </span> - <div class="collapse-video" id="collapse-video"> - <i class="far fa-comment-alt open-chat" title="Open chat"></i> - </div> - <div class="video-container no-video" id="video-container"> + <div class="chat-btn show-chat invisible" id="show-chat"> + <i class="far fa-comment-alt icon-chat" title="Show chat"></i> + </div> + <div class="chat-btn collapse-video invisible" id="collapse-video"> + <i class="far fa-comment-alt icon-chat" title="Hide video and show chat"></i> + </div> + <div class="video-container invisible" id="video-container"> <div id="expand-video" class="expand-video"> <div id="peers"></div> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/galene.js new/galene-0.3.4/static/galene.js --- old/galene-0.3.3/static/galene.js 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/galene.js 2021-04-27 16:15:33.000000000 +0200 @@ -40,12 +40,6 @@ let fallbackUserPass = null; -/* max-device-width which is defined in css for mobile layout */ -/** - * @type {number} - */ -let mobileViewportWidth = 1024; - /** * @param {string} username * @param {string} password @@ -259,12 +253,10 @@ storeSettings(settings); } -function showVideo() { - let width = window.innerWidth; - let video_container = document.getElementById('video-container'); - video_container.classList.remove('no-video'); - if (width <= mobileViewportWidth) - document.getElementById('collapse-video').style.display = "block"; +function isMobileLayout() { + if (window.matchMedia('only screen and (max-width: 1024px)').matches) + return true; + return false; } /** @@ -274,19 +266,16 @@ let mediadiv = document.getElementById('peers'); if(mediadiv.childElementCount > 0 && !force) return; - let video_container = document.getElementById('video-container'); - video_container.classList.add('no-video'); - let left = document.getElementById("left"); - if (left.style.display !== "none") { - // hide all video buttons used to switch video on mobile layout - closeVideoControls(); - } + setVisibility('video-container', false); } -function closeVideoControls() { - // hide all video buttons used to switch video on mobile layout - document.getElementById('switch-video').style.display = ""; - document.getElementById('collapse-video').style.display = ""; +function showVideo() { + let hasmedia = document.getElementById('peers').childElementCount > 0; + if(isMobileLayout()) { + setVisibility('show-video', false); + setVisibility('collapse-video', hasmedia); + } + setVisibility('video-container', hasmedia); } function fillLogin() { @@ -316,7 +305,6 @@ connectionbox.classList.remove('invisible'); displayError('Disconnected', 'error'); hideVideo(); - closeVideoControls(); } } @@ -379,6 +367,7 @@ document.documentElement.style.setProperty( '--vh', `${window.innerHeight/100}px`, ); + showVideo(); // Ajust video component size resizePeers(); } @@ -441,6 +430,8 @@ !!HTMLVideoElement.prototype.captureStream || /** @ts-ignore */ !!HTMLVideoElement.prototype.mozCaptureStream; + let mediacount = document.getElementById('peers').childElementCount; + let mobilelayout = isMobileLayout(); // don't allow multiple presentations setVisibility('presentbutton', canWebrtc && permissions.present && !local); @@ -458,6 +449,8 @@ setVisibility('mediaoptions', permissions.present); setVisibility('sendform', permissions.present); setVisibility('fileform', canFile && permissions.present); + + setVisibility('collapse-video', mediacount && mobilelayout); } /** @@ -2664,37 +2657,30 @@ document.getElementById('collapse-video').onclick = function(e) { e.preventDefault(); - if(!(this instanceof HTMLElement)) - throw new Error('Unexpected type for this'); - let width = window.innerWidth; - let left = document.getElementById("left"); - if (left.style.display === "" || left.style.display === "none") { - //left chat is hidden, we show the chat and hide collapse button - left.style.display = "block"; - this.style.display = ""; - } - if (width <= mobileViewportWidth) { - // fixed div for small screen - this.style.display = ""; - hideVideo(true); - document.getElementById('switch-video').style.display = "block"; - } + setVisibility('collapse-video', false); + setVisibility('show-video', true); + hideVideo(true); }; -document.getElementById('switch-video').onclick = function(e) { +document.getElementById('show-video').onclick = function(e) { e.preventDefault(); - if(!(this instanceof HTMLElement)) - throw new Error('Unexpected type for this'); - showVideo(); - this.style.display = ""; - document.getElementById('collapse-video').style.display = "block"; + setVisibility('video-container', true); + setVisibility('collapse-video', true); + setVisibility('show-video', false); }; document.getElementById('close-chat').onclick = function(e) { - e.preventDefault(); - let left = document.getElementById("left"); - left.style.display = "none"; - document.getElementById('collapse-video').style.display = "block"; + e.preventDefault(); + setVisibility('left', false); + setVisibility('show-chat', true); + resizePeers(); +}; + +document.getElementById('show-chat').onclick = function(e) { + e.preventDefault(); + setVisibility('left', true); + setVisibility('show-chat', false); + resizePeers(); }; async function serverConnect() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/index.html new/galene-0.3.4/static/index.html --- old/galene-0.3.3/static/index.html 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/index.html 2021-04-27 16:15:33.000000000 +0200 @@ -8,9 +8,6 @@ <link rel="stylesheet" href="/mainpage.css"> <link rel="stylesheet" type="text/css" href="/galene.css"/> <link rel="author" href="https://www.irif.fr/~jch/"/> - <!-- Font Awesome File --> - <link href="/css/fontawesome.min.css" rel="stylesheet" type="text/css"> - <link href="/css/solid.css" rel="stylesheet" type="text/css"> </head> <body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/mainpage.css new/galene-0.3.4/static/mainpage.css --- old/galene-0.3.3/static/mainpage.css 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/mainpage.css 2021-04-27 16:15:33.000000000 +0200 @@ -1,3 +1,9 @@ +body { + /* Used to move footer at bottom of the page */ + display: flex; + flex-direction: column; +} + .groups { } @@ -10,7 +16,7 @@ } .home { - height: calc(100vh - 50px); + margin-bottom: auto; padding: 1.875rem; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/galene-0.3.3/static/protocol.js new/galene-0.3.4/static/protocol.js --- old/galene-0.3.3/static/protocol.js 2021-04-16 22:31:25.000000000 +0200 +++ new/galene-0.3.4/static/protocol.js 2021-04-27 16:15:33.000000000 +0200 @@ -410,14 +410,15 @@ * @param {string} localId * @returns {Stream} */ - ServerConnection.prototype.findByLocalId = function(localId) { if(!localId) return null; - for(let id in serverConnection.up) { - let s = serverConnection.up[id]; - if(s.localId == localId) + let sc = this; + + for(let id in sc.up) { + let s = sc.up[id]; + if(s.localId === localId) return s; } return null; @@ -728,7 +729,7 @@ * @param {string} id * @function */ -ServerConnection.prototype.gotRenegotiate = async function(id) { +ServerConnection.prototype.gotRenegotiate = function(id) { let c = this.up[id]; if(!c) throw new Error('unknown up stream'); ++++++ vendor.tar.gz ++++++ ++++ 36558 lines of diff (skipped)
