bin/pvl.irker-syslog
changeset 115 9772d43669fb
parent 113 49e13576d77c
child 119 40b5375d4a27
--- a/bin/pvl.irker-syslog	Sun Jan 13 01:50:25 2013 +0200
+++ b/bin/pvl.irker-syslog	Sun Jan 13 01:52:00 2013 +0200
@@ -76,25 +76,7 @@
 
     # customized mainloop that supports irker.irk
     while True :
-        if irker.irk.recv :
-            reading = (irker.irk, )
-        else :
-            reading = ()
-
-        poll = syslog.poll(reading=reading) or () # timeout -> ()
-
-        if irker.irk in poll :
-            # irk
-            try :
-                for msg in irker.irk :
-                    log.info("irk: %s", msg)
-
-            except EOFError :
-                # exit
-                log.error("irk: EOF")
-                return 1
-
-        # syslogs, even on timeout
+        # syslogs
         for item in syslog :
             match, rulepath, apply = rules.apply(item)
             
@@ -115,7 +97,34 @@
                 irker[target]('[' + tag + '] ' + text)
             else :
                 print tag, text
-        
+
+        # only poll if we have something to poll
+        if syslog.poll :
+            # can we poll irk?
+            if irker.irk.recv :
+                reading = (irker.irk, )
+            else :
+                reading = ()
+            
+            poll = syslog.select(syslog.poll, reading=reading) or () # timeout -> ()
+
+            if irker.irk in poll :
+                # irk
+                try :
+                    for msg in irker.irk :
+                        log.info("irk: %s", msg)
+
+                except EOFError :
+                    # exit
+                    log.error("irk: EOF")
+                    return 1
+            
+            # keep going
+            continue
+
+        else :
+            break
+       
     # done
     log.info("Exiting...")
     return 0