+ rprintf(F,"\n");
+@@ -1065,6 +1098,13 @@ static struct poptOption long_daemon_options[] = {
+ {"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 },
+ {"server", 0, POPT_ARG_NONE, &am_server, 0, 0, 0 },
+ {"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
++#ifdef HAVE_OPENSSL
++ {"ssl", 0, POPT_ARG_NONE, 0, OPT_USE_SSL, 0, 0},
++ {"ssl-cert", 0, POPT_ARG_STRING, &ssl_cert_path, OPT_USE_SSL, 0, 0},
++ {"ssl-key", 0, POPT_ARG_STRING, &ssl_key_path, OPT_USE_SSL, 0, 0},
++ {"ssl-key-passwd", 0, POPT_ARG_STRING, &ssl_key_passwd, OPT_USE_SSL, 0, 0},
++ {"ssl-ca-certs", 0, POPT_ARG_STRING, &ssl_ca_path, OPT_USE_SSL, 0, 0},
++#endif
+ {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
+ {"no-verbose", 0, POPT_ARG_VAL, &verbose, 0, 0, 0 },
+ {"no-v", 0, POPT_ARG_VAL, &verbose, 0, 0, 0 },
+@@ -1360,6 +1400,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+ verbose++;
+ break;
+
++#ifdef HAVE_OPENSSL
++ case OPT_USE_SSL:
++ use_ssl = 1;
++ break;
++#endif
++
+ default:
+ rprintf(FERROR,
+ "rsync: %s: %s (in daemon mode)\n",
+@@ -1386,6 +1432,17 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+ exit_cleanup(RERR_SYNTAX);
+ }
+
++#ifdef HAVE_OPENSSL
++ if (use_ssl) {
++ if (init_tls()) {
++ snprintf(err_buf, sizeof(err_buf),
++ "Openssl error: %s\n",
++ get_ssl_error());
++ return 0;
++ }
++ }
++#endif
++
+ *argv_p = argv = poptGetArgs(pc);
+ *argc_p = argc = count_args(argv);
+ am_starting_up = 0;
+@@ -1764,6 +1821,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+ return 0;
+ #endif
+
++#ifdef HAVE_OPENSSL