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:
parent
41a05f59ba
commit
41c10c5a96
3 changed files with 38 additions and 0 deletions
29
src/tincd.c
29
src/tincd.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue