--- 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