Fix protocol detection
authorJamie Cameron <jcameron@webmin.com>
Mon, 14 Jul 2008 07:49:16 +0000 (07:49 +0000)
committerJamie Cameron <jcameron@webmin.com>
Mon, 14 Jul 2008 07:49:16 +0000 (07:49 +0000)
xinetd/config
xinetd/index.cgi

index 518db97..7aa1829 100644 (file)
@@ -2,3 +2,4 @@ xinetd_conf=/etc/xinetd.conf
 protocols_file=/etc/protocols
 pid_file=/var/run/xinetd.pid
 start_cmd=/usr/local/sbin/xinetd -pid 2>/var/run/xinetd.pid
+lookup_servs=1
index 3036b52..9b8f077 100755 (executable)
@@ -57,9 +57,20 @@ foreach $x (@conf) {
                        }
                }
        else {
-               # Only service specified, check all protocols
+               # Only service specified, check protocols based on socket type,
+               # or failing that all protocols
                if ($config{'lookup_servs'}) {
-                       foreach $p (&list_protocols()) {
+                       local @protos;
+                       if ($q->{'socket_type'}->[0] eq 'stream') {
+                               @protos = ( 'tcp' );
+                               }
+                       elsif ($q->{'socket_type'}->[0] eq 'dgram') {
+                               @protos = ( 'udp' );
+                               }
+                       else {
+                               @protos = &list_protocols();
+                               }
+                       foreach $p (@protos) {
                                @s = getservbyname($x->{'value'}, $p);
                                last if (@s);
                                }