[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] mldonkey config/config.h.in config/configure.in...
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] mldonkey config/config.h.in config/configure.in... |
Date: |
Sat, 04 Feb 2006 22:26:36 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Branch:
Changes by: spiralvoice <address@hidden> 06/02/04 22:26:36
Modified files:
config : config.h.in configure.in
distrib : Authors.txt ChangeLog
src/daemon/common: commonOptions.ml
src/daemon/driver: driverCommands.ml
src/utils/cdk : unix2.ml
src/utils/lib : stubs_c.c
Log message:
patch #4867
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/config/config.h.in.diff?tr1=1.23&tr2=1.24&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/config/configure.in.diff?tr1=1.249&tr2=1.250&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/distrib/Authors.txt.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/distrib/ChangeLog.diff?tr1=1.709&tr2=1.710&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/commonOptions.ml.diff?tr1=1.124&tr2=1.125&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/driver/driverCommands.ml.diff?tr1=1.120&tr2=1.121&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/cdk/unix2.ml.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/lib/stubs_c.c.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
Patches:
Index: mldonkey/config/config.h.in
diff -u mldonkey/config/config.h.in:1.23 mldonkey/config/config.h.in:1.24
--- mldonkey/config/config.h.in:1.23 Thu Jan 26 00:25:24 2006
+++ mldonkey/config/config.h.in Sat Feb 4 22:26:35 2006
@@ -162,3 +162,15 @@
/* Define to 1 if you want to use CryptoPP */
#undef HAVE_CRYPTOPP
+
+/* Define to 1 if you have <sys/time.h> */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have <sys/resource.h> */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have getrlimit() */
+#undef HAVE_GETRLIMIT
+
+/* Define to 1 if you have setrlimit() */
+#undef HAVE_SETRLIMIT
Index: mldonkey/config/configure.in
diff -u mldonkey/config/configure.in:1.249 mldonkey/config/configure.in:1.250
--- mldonkey/config/configure.in:1.249 Fri Feb 3 00:32:22 2006
+++ mldonkey/config/configure.in Sat Feb 4 22:26:35 2006
@@ -512,14 +512,18 @@
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(float)
AC_CHECK_SIZEOF(double)
+AC_CHECK_FUNCS(setrlimit getrlimit)
# various header files
AC_CHECK_HEADERS([sys/utsname.h])
AC_CHECK_HEADERS(arpa/inet.h,,)
-AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
+AC_CHECK_HEADERS([sys/types.h sys/time.h sys/resource.h netinet/in_systm.h
netinet/in.h netinet/ip.h],,,
[#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
#ifdef HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
Index: mldonkey/distrib/Authors.txt
diff -u mldonkey/distrib/Authors.txt:1.4 mldonkey/distrib/Authors.txt:1.5
--- mldonkey/distrib/Authors.txt:1.4 Thu Jan 12 11:44:34 2006
+++ mldonkey/distrib/Authors.txt Sat Feb 4 22:26:36 2006
@@ -37,6 +37,10 @@
su_blanc
bogeyman
+rlimit code taken from Ocaml-annexlib:
+Shawn Wagner <address@hidden>
+http://raevnos.pennmush.org/code/extlib/
+
Fasttrack plugin from giFT-fasttrack:
Markus Kern
Index: mldonkey/distrib/ChangeLog
diff -u mldonkey/distrib/ChangeLog:1.709 mldonkey/distrib/ChangeLog:1.710
--- mldonkey/distrib/ChangeLog:1.709 Fri Feb 3 21:01:56 2006
+++ mldonkey/distrib/ChangeLog Sat Feb 4 22:26:36 2006
@@ -14,6 +14,9 @@
ChangeLog
=========
+2006/02/04
+4867: Use setrlimit to raise allowed ulimit open files
+
2006/02/03
4863: GUI/Multiuser: Prevent kill by users other than admin
4862: EDK: Fix broken import of eMule temp Files (import_temp) (schlumpf)
Index: mldonkey/src/daemon/common/commonOptions.ml
diff -u mldonkey/src/daemon/common/commonOptions.ml:1.124
mldonkey/src/daemon/common/commonOptions.ml:1.125
--- mldonkey/src/daemon/common/commonOptions.ml:1.124 Fri Feb 3 03:12:14 2006
+++ mldonkey/src/daemon/common/commonOptions.ml Sat Feb 4 22:26:36 2006
@@ -108,15 +108,22 @@
let _ =
lprintf_nl "Starting MLDonkey %s ... " Autoconf.current_version;
+ let ulof_old = Unix2.c_getdtablesize () in
lprintf_nl "Language %s, locale %s, ulimit for open files %d"
- Charset.default_language Charset.locstr (Unix2.c_getdtablesize ());
- lprintf_nl "MLDonkey is working in %s" file_basedir;
+ Charset.default_language Charset.locstr ulof_old;
+ let nofile = Unix2.ml_getrlimit Unix2.RLIMIT_NOFILE in
+ if nofile.Unix2.rlim_max > 0 && nofile.Unix2.rlim_max >
nofile.Unix2.rlim_cur then
+ Unix2.ml_setrlimit Unix2.RLIMIT_NOFILE nofile.Unix2.rlim_max;
let ulof = Unix2.c_getdtablesize () in
+ if ulof_old <> ulof then
+ lprintf_nl "raised ulimit for open files from %d to %d" ulof_old ulof;
if ulof < 150 then begin
lprintf_nl "ulimit for open files is set to %d, at least 150 is required,
exiting..." ulof;
exit 2
end;
+
+ lprintf_nl "MLDonkey is working in %s" file_basedir;
if not (Sys.file_exists file_basedir) then begin
lprint_newline ();
lprintf_nl "creating new MLDonkey base directory in %s\n" file_basedir;
Index: mldonkey/src/daemon/driver/driverCommands.ml
diff -u mldonkey/src/daemon/driver/driverCommands.ml:1.120
mldonkey/src/daemon/driver/driverCommands.ml:1.121
--- mldonkey/src/daemon/driver/driverCommands.ml:1.120 Fri Feb 3 01:10:45 2006
+++ mldonkey/src/daemon/driver/driverCommands.ml Sat Feb 4 22:26:36 2006
@@ -1973,6 +1973,31 @@
_s ""
), "debug command (example: disk .)";
+ "rlimit", Arg_none (fun o ->
+ let buf = o.conn_buf in
+ let cpu = Unix2.ml_getrlimit Unix2.RLIMIT_CPU in
+ let fsize = Unix2.ml_getrlimit Unix2.RLIMIT_FSIZE in
+ let data = Unix2.ml_getrlimit Unix2.RLIMIT_DATA in
+ let stack = Unix2.ml_getrlimit Unix2.RLIMIT_STACK in
+ let core = Unix2.ml_getrlimit Unix2.RLIMIT_CORE in
+ let rss = Unix2.ml_getrlimit Unix2.RLIMIT_RSS in
+ let nprof = Unix2.ml_getrlimit Unix2.RLIMIT_NPROF in
+ let nofile = Unix2.ml_getrlimit Unix2.RLIMIT_NOFILE in
+ let memlock = Unix2.ml_getrlimit Unix2.RLIMIT_MEMLOCK in
+ let rlimit_as = Unix2.ml_getrlimit Unix2.RLIMIT_AS in
+ Printf.bprintf buf "cpu %d %d\n" cpu.Unix2.rlim_cur
cpu.Unix2.rlim_max;
+ Printf.bprintf buf "fsize %d %d\n" fsize.Unix2.rlim_cur
fsize.Unix2.rlim_max;
+ Printf.bprintf buf "data %d %d\n" data.Unix2.rlim_cur
data.Unix2.rlim_max;
+ Printf.bprintf buf "stack %d %d\n" stack.Unix2.rlim_cur
stack.Unix2.rlim_max;
+ Printf.bprintf buf "core %d %d\n" core.Unix2.rlim_cur
core.Unix2.rlim_max;
+ Printf.bprintf buf "rss %d %d\n" rss.Unix2.rlim_cur
rss.Unix2.rlim_max;
+ Printf.bprintf buf "nprof %d %d\n" nprof.Unix2.rlim_cur
nprof.Unix2.rlim_max;
+ Printf.bprintf buf "nofile %d %d\n" nofile.Unix2.rlim_cur
nofile.Unix2.rlim_max;
+ Printf.bprintf buf "memlock %d %d\n" memlock.Unix2.rlim_cur
memlock.Unix2.rlim_max;
+ Printf.bprintf buf "as %d %d\n" rlimit_as.Unix2.rlim_cur
rlimit_as.Unix2.rlim_max;
+ _s ""
+ ), "debug command";
+
"shares", Arg_none (fun o ->
let buf = o.conn_buf in
Index: mldonkey/src/utils/cdk/unix2.ml
diff -u mldonkey/src/utils/cdk/unix2.ml:1.22
mldonkey/src/utils/cdk/unix2.ml:1.23
--- mldonkey/src/utils/cdk/unix2.ml:1.22 Sun Jan 29 18:42:02 2006
+++ mldonkey/src/utils/cdk/unix2.ml Sat Feb 4 22:26:36 2006
@@ -173,3 +173,42 @@
lprintf_nl "%s does not exist and can not be created, exiting..."
dirname; exit 73)
| Sys_error s -> lprintf_nl "%s for directory %s" s dirname; exit 73
| e -> lprintf_nl "%s for directory %s" (Printexc2.to_string e) dirname;
exit 73
+
+(** The resource type to query or set with [getrlimit] or [setrlimit] *)
+type rlimit_resource = RLIMIT_CPU (** CPU time in seconds *)
+ | RLIMIT_FSIZE (** Maximum file size *)
+ | RLIMIT_DATA (** Max data size *)
+ | RLIMIT_STACK (** Max stack size *)
+ | RLIMIT_CORE (** Max core file size *)
+ | RLIMIT_RSS (** Max resident set size *)
+ | RLIMIT_NPROF (** Max number of processes *)
+ | RLIMIT_NOFILE (** Max number of open files *)
+ | RLIMIT_MEMLOCK (** Max locked-in-memory address space
*)
+ | RLIMIT_AS (** Address space limit *)
+
+type rlimit = {
+ rlim_cur: int;
+ rlim_max: int
+}
+
+let dummy_rlimit = {
+ rlim_cur = -1;
+ rlim_max = -1
+}
+
+external getrlimit: rlimit_resource -> rlimit = "ml_getrlimit"
+external setrlimit: rlimit_resource -> rlimit -> unit = "ml_setrlimit"
+
+let ml_getrlimit resource =
+ try
+ getrlimit resource
+ with _ -> dummy_rlimit
+
+let ml_setrlimit resource n =
+ let new_rlimit = {
+ rlim_cur = n;
+ rlim_max = n
+ } in
+ try
+ setrlimit resource new_rlimit
+ with _ -> ()
Index: mldonkey/src/utils/lib/stubs_c.c
diff -u mldonkey/src/utils/lib/stubs_c.c:1.33
mldonkey/src/utils/lib/stubs_c.c:1.34
--- mldonkey/src/utils/lib/stubs_c.c:1.33 Thu Feb 2 00:33:28 2006
+++ mldonkey/src/utils/lib/stubs_c.c Sat Feb 4 22:26:36 2006
@@ -28,6 +28,14 @@
#include <inttypes.h>
#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
+
#define lseek XXXXXXXXX
#define read XXXXXXXXX
#define ftruncate XXXXXXXXX
@@ -1225,3 +1233,199 @@
#endif
CAMLreturn (v);
}
+
+value ml_getrlimit(value resource) {
+#ifdef HAVE_GETRLIMIT
+ CAMLparam1(resource);
+ CAMLlocal1(retval);
+ int r;
+ struct rlimit lim;
+
+ switch (Int_val(resource)) {
+ case 0:
+#ifdef RLIMIT_CPU
+ r = RLIMIT_CPU;
+#else
+ r = -1;
+#endif
+ break;
+ case 1:
+#ifdef RLIMIT_FSIZE
+ r = RLIMIT_FSIZE;
+#else
+ r = -1;
+#endif
+ break;
+ case 2:
+#ifdef RLIMIT_DATA
+ r = RLIMIT_DATA;
+#else
+ r = -1;
+#endif
+ break;
+ case 3:
+#ifdef RLIMIT_STACK
+ r = RLIMIT_STACK;
+#else
+ r = -1;
+#endif
+ break;
+ case 4:
+#ifdef RLIMIT_CORE
+ r = RLIMIT_CORE;
+#else
+ r = -1;
+#endif
+ break;
+ case 5:
+#ifdef RLIMIT_RSS
+ r = RLIMIT_RSS;
+#else
+ r = -1;
+#endif
+ break;
+ case 6:
+#ifdef RLIMIT_NPROC
+ r = RLIMIT_NPROC;
+#else
+ r = -1;
+#endif
+ break;
+ case 7:
+#ifdef RLIMIT_NOFILE
+ r = RLIMIT_NOFILE;
+#elif RLIMIT_OFILE
+ r = RLIMIT_OFILE:
+#else
+ r = -1;
+#endif
+ break;
+ case 8:
+#ifdef RLIMIT_MEMLOCK
+ r = RLIMIT_MEMLOCK;
+#else
+ r = -1;
+#endif
+ break;
+ case 9:
+#ifdef RLIMIT_AS
+ r = RLIMIT_AS;
+#else
+ r = -1;
+#endif
+ break;
+ default:
+ errno = EINVAL;
+ uerror("getrlimit", Nothing);
+ }
+
+ if (getrlimit(r, &lim) < 0)
+ uerror("getrlimit", Nothing);
+
+
+ retval = alloc_tuple(2);
+ Field(retval, 0) = Val_int(lim.rlim_cur);
+ Field(retval, 1) = Val_int(lim.rlim_max);
+
+ CAMLreturn(retval);
+
+#else
+ failwith("getrlimit unimplemented");
+#endif
+}
+
+value ml_setrlimit(value resource, value rlimit) {
+#ifdef HAVE_SETRLIMIT
+ int r;
+ struct rlimit lim;
+
+ switch (Int_val(resource)) {
+ case 0:
+#ifdef RLIMIT_CPU
+ r = RLIMIT_CPU;
+#else
+ r = -1;
+#endif
+ break;
+ case 1:
+#ifdef RLIMIT_FSIZE
+ r = RLIMIT_FSIZE;
+#else
+ r = -1;
+#endif
+ break;
+ case 2:
+#ifdef RLIMIT_DATA
+ r = RLIMIT_DATA;
+#else
+ r = -1;
+#endif
+ break;
+ case 3:
+#ifdef RLIMIT_STACK
+ r = RLIMIT_STACK;
+#else
+ r = -1;
+#endif
+ break;
+ case 4:
+#ifdef RLIMIT_CORE
+ r = RLIMIT_CORE;
+#else
+ r = -1;
+#endif
+ break;
+ case 5:
+#ifdef RLIMIT_RSS
+ r = RLIMIT_RSS;
+#else
+ r = -1;
+#endif
+ break;
+ case 6:
+#ifdef RLIMIT_NPROC
+ r = RLIMIT_NPROC;
+#else
+ r = -1;
+#endif
+ break;
+ case 7:
+#ifdef RLIMIT_NOFILE
+ r = RLIMIT_NOFILE;
+#elif RLIMIT_OFILE
+ r = RLIMIT_OFILE:
+#else
+ r = -1;
+#endif
+ break;
+ case 8:
+#ifdef RLIMIT_MEMLOCK
+ r = RLIMIT_MEMLOCK;
+#else
+ r = -1;
+#endif
+ break;
+ case 9:
+#ifdef RLIMIT_AS
+ r = RLIMIT_AS;
+#else
+ r = -1;
+#endif
+ break;
+ default:
+ errno = EINVAL;
+ uerror("getrlimit", Nothing);
+ }
+
+ lim.rlim_cur = Int_val(Field(rlimit, 0));
+ lim.rlim_max = Int_val(Field(rlimit, 1));
+
+ if (setrlimit(r, &lim) < 0)
+ uerror("setrlimit", Nothing);
+
+ return Val_unit;
+
+#else
+ failwith("getrlimit unimplemented");
+#endif
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Mldonkey-commits] mldonkey config/config.h.in config/configure.in...,
mldonkey-commits <=