From aae8b555c902a217d68dc96ccd50ae6144e8e686 Mon Sep 17 00:00:00 2001
From: Peter Palfrader <peter@palfrader.org>
Date: Mon, 24 Jun 2013 21:23:09 +0200
Subject: [PATCH] Try to handle xinetd flags sanely

---
 modules/rsync/manifests/site.pp      | 2 ++
 modules/xinetd/manifests/service.pp  | 2 +-
 modules/xinetd/templates/service.erb | 4 ++++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/modules/rsync/manifests/site.pp b/modules/rsync/manifests/site.pp
index bb2ee144..6a4284a3 100644
--- a/modules/rsync/manifests/site.pp
+++ b/modules/rsync/manifests/site.pp
@@ -1,5 +1,6 @@
 define rsync::site (
 	$bind='',
+	$bind6='',
 	$source='',
 	$content='',
 	$fname='',
@@ -39,6 +40,7 @@ define rsync::site (
 
 	xinetd::service { "rsync-${name}":
 		bind        => $bind,
+		bind6       => $bind6,
 		id          => "${name}-rsync",
 		server      => '/usr/bin/rsync',
 		port        => 'rsync',
diff --git a/modules/xinetd/manifests/service.pp b/modules/xinetd/manifests/service.pp
index 522af17c..5c8f954a 100644
--- a/modules/xinetd/manifests/service.pp
+++ b/modules/xinetd/manifests/service.pp
@@ -6,7 +6,7 @@ define xinetd::service (
 	$type='',
 	$socket_type=stream,
 	$protocol=tcp,
-	$flags=IPv6,
+	$flags='',
 	$wait=no,
 	$user=root,
 	$group='',
diff --git a/modules/xinetd/templates/service.erb b/modules/xinetd/templates/service.erb
index 33a9de7a..9478c1d1 100644
--- a/modules/xinetd/templates/service.erb
+++ b/modules/xinetd/templates/service.erb
@@ -10,7 +10,11 @@ service <%= scope.lookupvar('port') %>
 
 	socket_type	= <%= scope.lookupvar('socket_type') %>
 	protocol	= <%= scope.lookupvar('protocol') %>
+<%- if scope.lookupvar('flags') != '' -%>
 	flags		= <%= scope.lookupvar('flags') %>
+<%- elsif scope.lookupvar('bind') =~  ':' -%>
+	flags		= IPv6
+<%- end -%>
 	wait		= <%= scope.lookupvar('wait') %>
 	user		= <%= scope.lookupvar('user') %>
 <%- if scope.lookupvar('group') != '' -%>
-- 
2.39.5