Add ProcessPriority option.

This option can be set to low, normal or high. On UNIX flavours, this changes
the nice value of the process by +10, 0 and -10 respectively. On Windows, it
sets the priority to BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS and
HIGH_PRIORITY_CLASS respectively.

A high priority might help to reduce latency and packet loss on the VPN.
This commit is contained in:
Guus Sliepen 2009-05-28 22:51:30 +02:00
parent 41a05f59ba
commit 41c10c5a96
3 changed files with 38 additions and 0 deletions

View file

@ -580,6 +580,35 @@ int main2(int argc, char **argv)
if(!setup_network())
goto end;
/* Change process priority */
char *priority = 0;
if(get_config_string(lookup_config(config_tree, "ProcessPriority"), &priority)) {
if(!strcasecmp(priority, "Normal")) {
#ifdef HAVE_MINGW
SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
#else
nice(0);
#endif
} else if(!strcasecmp(priority, "Low")) {
#ifdef HAVE_MINGW
SetPriorityClass(GetCurrentProcess(), BELOW_NORMAL_PRIORITY_CLASS);
#else
nice(10);
#endif
} else if(!strcasecmp(priority, "High")) {
#ifdef HAVE_MINGW
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
#else
nice(-10);
#endif
} else {
logger(LOG_ERR, _("Invalid priority `%s`!"), priority);
goto end;
}
}
/* drop privileges */
if (!drop_privs())
goto end;