diff --git a/SOURCES/rsync-3.1.0-sigterm-handle.patch b/SOURCES/rsync-3.1.0-sigterm-handle.patch
new file mode 100644
index 0000000..2e665d5
--- /dev/null
+++ b/SOURCES/rsync-3.1.0-sigterm-handle.patch
@@ -0,0 +1,33 @@
+diff --git a/rsync.c b/rsync.c
+index 104b274..b50146c 100644
+--- a/rsync.c
++++ b/rsync.c
+@@ -37,6 +37,7 @@ extern int preserve_times;
+ extern int copy_devices;
+ extern int am_root;
+ extern int am_server;
++extern int am_daemon;
+ extern int am_sender;
+ extern int am_receiver;
+ extern int am_generator;
+@@ -537,7 +538,7 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
+ 	return updated;
+ }
+ 
+-RETSIGTYPE sig_int(UNUSED(int val))
++RETSIGTYPE sig_int(int sig_num)
+ {
+ 	/* KLUGE: if the user hits Ctrl-C while ssh is prompting
+ 	 * for a password, then our cleanup's sending of a SIGUSR1
+@@ -548,6 +549,11 @@ RETSIGTYPE sig_int(UNUSED(int val))
+ 	 * not ssh waiting for a password, then this tiny delay
+ 	 * shouldn't hurt anything. */
+ 	msleep(400);
++
++	/* If we're an rsync daemon listener (not a daemon server),
++	 * we'll exit with status 0 if we received SIGTERM. */
++	if (am_daemon && !am_server && sig_num == SIGTERM)
++		exit_cleanup(0);
+ 	exit_cleanup(RERR_SIGNAL);
+ }
+ 
diff --git a/SPECS/rsync.spec b/SPECS/rsync.spec
index cc5dda1..85b01f2 100644
--- a/SPECS/rsync.spec
+++ b/SPECS/rsync.spec
@@ -8,7 +8,7 @@
 Summary: A program for synchronizing files over a network
 Name: rsync
 Version: 3.0.9
-Release: 17%{?prerelease}%{?dist}
+Release: 18%{?prerelease}%{?dist}
 Group: Applications/Internet
 URL: http://rsync.samba.org/
 
@@ -31,6 +31,7 @@ Patch1: rsync-man.patch
 Patch2: rsync-3.1.0-protect_args.patch
 Patch3: rsync-3.0.6-iconv-logging.patch
 Patch4: rsync-3.0.9-ineffective-owner.patch
+Patch5: rsync-3.1.0-sigterm-handle.patch
 
 %description
 Rsync uses a reliable algorithm to bring remote and host files into
@@ -66,6 +67,7 @@ patch -p1 -i patches/copy-devices.diff
 %patch2 -p1 -b .protect_args
 %patch3 -p1 -b .iconv-logging
 %patch4 -p1 -b .ineffective-owner
+%patch5 -p1 -b .sigterm-handle
 
 %build
 rm -fr autom4te.cache
@@ -113,6 +115,9 @@ rm -rf $RPM_BUILD_ROOT
 %systemd_postun_with_restart rsyncd.service
 
 %changelog
+* Tue Jan 24 2017 Michal Ruprich - 3.0.9-18
+- Resolves: #1324754 -  rsyncd unit enters failed state on exit
+
 * Tue Jun 23 2015 Luboš Uhliarik <luhliari@redhat.com> - 3.0.9-17
 - Resolves: #1082496 - socket activation for rsync doesn't work (added missing
   rsyncd@.service file)