X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ae4d58285fffc667653197d17734d5018acef9d4..a34ef895210161a8820e96829ac87806566e7858:/lib/base/filepush.cpp diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index 2a894cf5..e99e956c 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -109,7 +109,7 @@ void eFilePushThread::thread() // eDebug("wrote %d bytes", w); if (w <= 0) { - if (errno == EINTR) + if (errno == EINTR || errno == EAGAIN || errno == EBUSY) continue; eDebug("eFilePushThread WRITE ERROR"); sendEvent(evtWriteError); @@ -165,7 +165,7 @@ void eFilePushThread::thread() if (m_buf_end < 0) { m_buf_end = 0; - if (errno == EINTR) + if (errno == EINTR || errno == EBUSY || errno == EAGAIN) continue; if (errno == EOVERFLOW) { @@ -260,12 +260,9 @@ void eFilePushThread::stop() // fixmee.. here we need a better solution to ensure // that the thread context take notice of the signal // even when no syscall is in progress - while(!sendSignal(SIGUSR1)) - { - eDebug("send SIGUSR1 to thread context"); - usleep(5000); // wait msek - } - kill(); + eDebug("if enigma hangs here, the filepush thread is non-responsive. FIX THAT DAMN THREAD."); + sendSignal(SIGUSR1); + kill(0); } void eFilePushThread::pause()