From 2c21c942da8181f664051d9d94754c97938361fa Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 23 Jul 2015 00:17:16 -0700 Subject: [PATCH] script: Increase our file descriptor limit on Linux. We've had problems with this before, and I think it's starting to cause problems again. --- components/script/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/components/script/lib.rs b/components/script/lib.rs index 2712aaca88e..16f73c85afd 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -94,9 +94,31 @@ mod devtools; mod horribly_inefficient_timers; mod webdriver_handlers; +#[cfg(any(target_os="linux", target_os="android"))] +#[allow(unsafe_code)] +fn perform_platform_specific_initialization() { + use std::mem; + const RLIMIT_NOFILE: libc::c_int = 7; + + // Bump up our number of file descriptors to save us from impending doom caused by an onslaught + // of iframes. + unsafe { + let mut rlim = mem::uninitialized(); + assert!(libc::getrlimit(RLIMIT_NOFILE, &mut rlim) == 0); + rlim.rlim_cur = rlim.rlim_max; + assert!(libc::setrlimit(RLIMIT_NOFILE, &mut rlim) == 0); + } +} + +#[cfg(not(any(target_os="linux", target_os="android")))] +fn perform_platform_specific_initialization() {} + #[allow(unsafe_code)] pub fn init() { unsafe { assert_eq!(js::jsapi::JS_Init(), 1); } + + perform_platform_specific_initialization(); } +