File tree Expand file tree Collapse file tree 5 files changed +62
-1
lines changed Expand file tree Collapse file tree 5 files changed +62
-1
lines changed Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import (
1515 "github.com/jech/galene/diskwriter"
1616 "github.com/jech/galene/group"
1717 "github.com/jech/galene/ice"
18+ "github.com/jech/galene/limit"
1819 "github.com/jech/galene/turnserver"
1920 "github.com/jech/galene/webserver"
2021)
@@ -104,6 +105,13 @@ func main() {
104105 }()
105106 }
106107
108+ n , err := limit .Nofile (0xFFFF )
109+ if err != nil {
110+ log .Printf ("Couldn't set file descriptor limit: %v" , err )
111+ } else if n < 0xFFFF {
112+ log .Printf ("File descriptor limit is %v, please increase it!" , n )
113+ }
114+
107115 ice .ICEFilename = filepath .Join (dataDir , "ice-servers.json" )
108116
109117 go group .ReadPublicGroups ()
Original file line number Diff line number Diff line change @@ -13,4 +13,5 @@ require (
1313 github.com/pion/turn/v2 v2.0.5
1414 github.com/pion/webrtc/v3 v3.0.31
1515 golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97
16+ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c
1617)
Original file line number Diff line number Diff line change @@ -122,8 +122,9 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
122122golang.org/x/sys v0.0.0-20210112080510-489259a85091 /go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs =
123123golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44 /go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs =
124124golang.org/x/sys v0.0.0-20210423082822-04245dca01da /go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs =
125- golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4 =
126125golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 /go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg =
126+ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I =
127+ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c /go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg =
127128golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 /go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo =
128129golang.org/x/text v0.3.0 /go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ =
129130golang.org/x/text v0.3.3 /go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ =
Original file line number Diff line number Diff line change 1+ // +build windows plan9
2+
3+ package limit
4+
5+ func Nofile (desired uint64 ) (uint64 , error ) {
6+ return desired , nil
7+ }
Original file line number Diff line number Diff line change 1+ // +build !windows
2+ // +build !plan9
3+
4+ package limit
5+
6+ import (
7+ "golang.org/x/sys/unix"
8+ )
9+
10+ func Nofile (desired uint64 ) (uint64 , error ) {
11+ var old unix.Rlimit
12+
13+ err := unix .Getrlimit (unix .RLIMIT_NOFILE , & old )
14+ if err != nil {
15+ return 0 , err
16+ }
17+
18+ if old .Cur >= desired {
19+ return old .Cur , nil
20+ }
21+
22+ if old .Max < desired {
23+ limit := unix.Rlimit {
24+ Cur : desired ,
25+ Max : desired ,
26+ }
27+ err := unix .Setrlimit (unix .RLIMIT_NOFILE , & limit )
28+ if err == nil {
29+ return limit .Cur , nil
30+ }
31+
32+ desired = old .Max
33+ }
34+
35+ limit := unix.Rlimit {
36+ Cur : desired ,
37+ Max : old .Max ,
38+ }
39+ err = unix .Setrlimit (unix .RLIMIT_NOFILE , & limit )
40+ if err != nil {
41+ return old .Cur , err
42+ }
43+ return limit .Cur , nil
44+ }
You can’t perform that action at this time.
0 commit comments