diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
-@@ -969,6 +969,13 @@ int daemon_main(void)
+@@ -1062,6 +1062,13 @@ int daemon_main(void)
* address too. In fact, why not just do inet_ntop on the
* local address??? */
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
-@@ -632,6 +632,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
+@@ -639,6 +639,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
AC_DEFINE(CAN_HARDLINK_SPECIAL, 1, [Define to 1 if link() can hard-link special files.])
fi
} global;
static global Globals;
-@@ -298,6 +301,9 @@ static struct parm_struct parm_table[] =
+@@ -302,6 +305,9 @@ static struct parm_struct parm_table[] =
{"motd file", P_STRING, P_GLOBAL,&Globals.motd_file, NULL,0},
{"pid file", P_STRING, P_GLOBAL,&Globals.pid_file, NULL,0},
{"port", P_INTEGER,P_GLOBAL,&Globals.rsync_port, NULL,0},
{"socket options", P_STRING, P_GLOBAL,&Globals.socket_options, NULL,0},
{"auth users", P_STRING, P_LOCAL, &sDefault.auth_users, NULL,0},
-@@ -390,6 +396,9 @@ FN_GLOBAL_STRING(lp_pid_file, &Globals.pid_file)
+@@ -396,6 +402,9 @@ FN_GLOBAL_STRING(lp_pid_file, &Globals.pid_file)
FN_GLOBAL_STRING(lp_socket_options, &Globals.socket_options)
FN_GLOBAL_INTEGER(lp_rsync_port, &Globals.rsync_port)
+#endif
FN_LOCAL_STRING(lp_auth_users, auth_users)
- FN_LOCAL_STRING(lp_comment, comment)
+ FN_LOCAL_STRING(lp_charset, charset)
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -1144,6 +1144,18 @@ static int start_client(int argc, char *argv[])
+@@ -1120,6 +1120,18 @@ static int start_client(int argc, char *argv[])
if (!read_batch) { /* for read_batch, NO source is specified */
char *path = check_for_hostspec(argv[0], &shell_machine, &rsync_port);
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -223,6 +223,7 @@ static void print_rsync_version(enum logcode f)
+@@ -225,6 +225,7 @@ static void print_rsync_version(enum logcode f)
char const *links = "no ";
char const *iconv = "no ";
char const *ipv6 = "no ";
STRUCT_STAT *dumstat;
#if SUBPROTOCOL_VERSION != 0
-@@ -252,6 +253,9 @@ static void print_rsync_version(enum logcode f)
- #ifdef ICONV_OPTION
- iconv = "";
+@@ -257,6 +258,9 @@ static void print_rsync_version(enum logcode f)
+ #if defined HAVE_LUTIMES && defined HAVE_UTIMES
+ symtimes = "";
#endif
+#if HAVE_LIBSLP
+ slp = "";
rprintf(f, "%s version %s protocol version %d%s\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -265,8 +269,8 @@ static void print_rsync_version(enum logcode f)
+@@ -270,8 +274,8 @@ static void print_rsync_version(enum logcode f)
(int)(sizeof (int64) * 8));
rprintf(f, " %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
got_socketpair, hardlinks, links, ipv6, have_inplace);
-- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv\n",
-- have_inplace, acls, xattrs, iconv);
-+ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %sSLP\n",
-+ have_inplace, acls, xattrs, iconv, slp);
+- rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes\n",
+- have_inplace, acls, xattrs, iconv, symtimes);
++ rprintf(f, " %sappend, %sACLs, %sxattrs, %siconv, %ssymtimes, %sSLP\n",
++ have_inplace, acls, xattrs, iconv, symtimes, slp);
#ifdef MAINTAINER_MODE
rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
diff --git a/rsync.h b/rsync.h
--- a/rsync.h
+++ b/rsync.h
-@@ -186,6 +186,10 @@
+@@ -191,6 +191,10 @@
#define SIGNIFICANT_ITEM_FLAGS (~(\
ITEM_BASIS_TYPE_FOLLOWS | ITEM_XNAME_FOLLOWS | ITEM_LOCAL_CHANGE))
+/* definately don't set to less than about 30 seconds */
+#define SLP_MIN_TIMEOUT 120
+
- #define CFN_KEEP_LEADING_DOT_DIR (1<<0)
+ #define CFN_KEEP_DOT_DIRS (1<<0)
#define CFN_KEEP_TRAILING_SLASH (1<<1)
#define CFN_DROP_TRAILING_DOT_DIR (1<<2)
diff --git a/rsync.yo b/rsync.yo
special socket options are set. These settings are superseded by the
bf(--sockopts) command-line option.
-+dit(bf(slp refresh)) This option is used to determine how long service
++dit(bf(slp refresh)) This parameter is used to determine how long service
+advertisements are valid (measured in seconds), and is only applicable if
-+you have Service Location Protocol support compiled in. If this option is
++you have Service Location Protocol support compiled in. If this is
+not set or is set to zero, then service advertisements never time out. If
+this is set to less than 120 seconds, then 120 seconds is used. If it is
+set to more than 65535, then 65535 is used (which is a limitation of SLP).
enddit()
-@@ -603,6 +612,7 @@ use chroot = no
+@@ -652,6 +661,7 @@ use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
+slp refresh = 3600
[ftp]
- path = /var/ftp/pub
+ path = /var/ftp/./pub
diff --git a/socket.c b/socket.c
--- a/socket.c
+++ b/socket.c
-@@ -524,6 +524,16 @@ void start_accept_loop(int port, int (*fn)(int, int))
+@@ -530,6 +530,16 @@ void start_accept_loop(int port, int (*fn)(int, int))
{
fd_set deffds;
int *sp, maxfd, i;
#ifdef HAVE_SIGACTION
sigact.sa_flags = SA_NOCLDSTOP;
-@@ -552,14 +562,25 @@ void start_accept_loop(int port, int (*fn)(int, int))
+@@ -558,14 +568,25 @@ void start_accept_loop(int port, int (*fn)(int, int))
maxfd = sp[i];
}
/* close log file before the potentially very long select so
* file can be trimmed by another process instead of growing
-@@ -571,8 +592,18 @@ void start_accept_loop(int port, int (*fn)(int, int))
+@@ -577,8 +598,18 @@ void start_accept_loop(int port, int (*fn)(int, int))
#else
fds = deffds;
#endif