From 6920fcc891ad2579f38bfaa78385604ef1aac8b6 Mon Sep 17 00:00:00 2001 From: Simon Eisenmann Date: Thu, 11 Feb 2016 21:02:27 +0100 Subject: [PATCH] Fix wrong type for syscall.Setrlimit on FreeBSD (#244) Values are uint64 on Unix but FreeBSD uses int64 for legacy reasons. --- src/app/spreed-webrtc-server/main.go | 6 +++--- src/app/spreed-webrtc-server/types_freebsd.go | 11 +++++++++++ src/app/spreed-webrtc-server/types_unix.go | 8 ++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/app/spreed-webrtc-server/types_freebsd.go create mode 100644 src/app/spreed-webrtc-server/types_unix.go diff --git a/src/app/spreed-webrtc-server/main.go b/src/app/spreed-webrtc-server/main.go index ca785a64..ee97ef4b 100644 --- a/src/app/spreed-webrtc-server/main.go +++ b/src/app/spreed-webrtc-server/main.go @@ -367,13 +367,13 @@ func runner(runtime phoenix.Runtime) error { // Try to increase number of file open files. This only works as root. maxfd, err := runtime.GetInt("http", "maxfd") if err == nil { - rLimit.Max = uint64(maxfd) - rLimit.Cur = uint64(maxfd) + rLimit.Max = rlimitType(maxfd) + rLimit.Cur = rlimitType(maxfd) err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit) if err != nil { log.Println("Error setting max open files", err) } else { - log.Printf("Set max open files successfully to %d\n", uint64(maxfd)) + log.Printf("Set max open files successfully to %d\n", rlimitType(maxfd)) } } diff --git a/src/app/spreed-webrtc-server/types_freebsd.go b/src/app/spreed-webrtc-server/types_freebsd.go new file mode 100644 index 00000000..996476ad --- /dev/null +++ b/src/app/spreed-webrtc-server/types_freebsd.go @@ -0,0 +1,11 @@ +// +build freebsd + +package main + +// Rlimit values are int64 in FreeBSD. +// https://golang.org/src/syscall/ztypes_freebsd_amd64.go +// Intentionally signed, because of legacy code that uses -1 for +// RLIM_INFINITY. +func rlimitType(value int) int64 { + return int64(value) +} diff --git a/src/app/spreed-webrtc-server/types_unix.go b/src/app/spreed-webrtc-server/types_unix.go new file mode 100644 index 00000000..d4e6abf8 --- /dev/null +++ b/src/app/spreed-webrtc-server/types_unix.go @@ -0,0 +1,8 @@ +// +build !freebsd + +package main + +// On Unix, rLimit values are uint64. +func rlimitType(value int) uint64 { + return uint64(value) +}