Hi,
It seems reconfig is not working well. There are two problems:
- The master doesn't issue shutdown(2) at clean up sockets. So,
re-bind to same address fails with `Address already in use' at
least under FreeBSD.
- Since the master is running without root privilege, re-bind to
privileged port is fail. Setting become_cyrus_early to 0 seems to
solve this problem. However, it may need further security
consideration.
Here is a patch.
Index: master/master.c
diff -u master/master.c.orig master/master.c
--- master/master.c.orig Sun Jul 8 07:56:48 2001
+++ master/master.c Mon Jul 9 21:28:30 2001
@@ -94,7 +94,7 @@
#define SERVICE_PATH (CYRUS_PATH "/bin")
enum {
- become_cyrus_early = 1,
+ become_cyrus_early = 0,
child_table_size = 10000,
child_table_inc = 100
};
@@ -954,7 +954,10 @@
Services[i].nactive = 0;
/* close all listeners */
- if (Services[i].socket > 0) close(Services[i].socket);
+ if (Services[i].socket > 0) {
+ shutdown(Services[i].socket, SHUT_RDWR);
+ close(Services[i].socket);
+ }
Services[i].socket = 0;
Services[i].saddr = NULL;
--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
[EMAIL PROTECTED] [EMAIL PROTECTED] ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/