X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-proxy-main.cpp;h=a4897b0f4bb3ec6cf8cb79febbad35f3645dd3d5;hb=b7f5f9763615bc85f161b314399102a6804a5e1a;hp=8a37ada713ae6b7f74d76fde16a4e62f56bb47fd;hpb=1cf760aa1600199b8a9acb4ccaded655f6903d62;p=yazpp-moved-to-github.git diff --git a/src/yaz-proxy-main.cpp b/src/yaz-proxy-main.cpp index 8a37ada..a4897b0 100644 --- a/src/yaz-proxy-main.cpp +++ b/src/yaz-proxy-main.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2003, Index Data. * See the file LICENSE for details. * - * $Id: yaz-proxy-main.cpp,v 1.22 2003-10-23 11:45:08 adam Exp $ + * $Id: yaz-proxy-main.cpp,v 1.24 2003-10-23 13:00:35 adam Exp $ */ #include @@ -26,6 +26,7 @@ void usage(char *prog) static char *pid_fname = 0; static char *uid = 0; +static char *log_file = 0; int args(Yaz_Proxy *proxy, int argc, char **argv) { @@ -77,6 +78,7 @@ int args(Yaz_Proxy *proxy, int argc, char **argv) break; case 'l': yaz_log_init_file (arg); + log_file = xstrdup(arg); break; case 'm': proxy->set_max_clients(atoi(arg)); @@ -119,6 +121,7 @@ int args(Yaz_Proxy *proxy, int argc, char **argv) static Yaz_Proxy *static_yaz_proxy = 0; static void sighup_handler(int num) { + signal(SIGHUP, sighup_handler); if (static_yaz_proxy) static_yaz_proxy->reconfig(); } @@ -150,12 +153,18 @@ int main(int argc, char **argv) if (uid) { struct passwd *pw; - + if (!(pw = getpwnam(uid))) { yaz_log(LOG_FATAL, "%s: Unknown user", uid); exit(3); } + if (log_file) + { + chown(log_file, pw->pw_uid, pw->pw_gid); + xfree(log_file); + } + if (setuid(pw->pw_uid) < 0) { yaz_log(LOG_FATAL|LOG_ERRNO, "setuid");