!7 cmodule CatEar > DynPrintLog { transient long timeout = 60000; transient int interval = 50; // TODO: use blocking wait int httpPort = 8082; LS outgoingLines = synchroList(); start-thread { serveHttpFromFunction(httpPort, func(S uri, SS params) { if (!webAuthed(params)) { sleep(timeout); ret ""; } ret serveLongPoll(timeout, interval, func { LS l = getAndClearList(outgoingLines); if (empty(l)) null; change(); ret lines_rtrim(l); }); }); } }