diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp
index 80059206..02995228 100644
--- a/lib/dtsc.cpp
+++ b/lib/dtsc.cpp
@@ -193,7 +193,7 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){
   livePos newPos;
   newPos.trackID = newPack["trackid"].asInt();
   newPos.seekTime = newPack["time"].asInt();
-  if (buffers.size() > 0){
+  if (buffercount > 1 && buffers.size() > 0){
     livePos lastPos = buffers.rbegin()->first;
     if (newPos < lastPos){
       if ((lastPos.seekTime > 1000) && newPos.seekTime < lastPos.seekTime - 1000){
@@ -314,11 +314,11 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){
   }
 
   while (buffers.size() > buffercount){
-    if (keyframes[buffers.begin()->first.trackID].count(buffers.begin()->first)){
+    if (buffercount > 1 && keyframes[buffers.begin()->first.trackID].count(buffers.begin()->first)){
       updateMeta = true;
       //if there are < 3 keyframes, throwing one away would mean less than 2 left.
       if (keyframes[buffers.begin()->first.trackID].size() < 3){
-        std::cout << "Warning - track " << buffers.begin()->first.trackID << " doesn't have enough keyframes to be reliably served." << std::endl;
+        std::cerr << "Warning - track " << buffers.begin()->first.trackID << " doesn't have enough keyframes to be reliably served." << std::endl;
       }
       std::string track = trackMapping[buffers.begin()->first.trackID];
       keyframes[buffers.begin()->first.trackID].erase(buffers.begin()->first);
diff --git a/lib/procs.cpp b/lib/procs.cpp
index 7afa1851..0fa99625 100644
--- a/lib/procs.cpp
+++ b/lib/procs.cpp
@@ -91,17 +91,9 @@ void Util::Procs::childsig_handler(int signum){
     return;
   }
   int status;
-  pid_t ret = waitpid( -1, &status, WNOHANG);
-  if (ret == 0){ //ignore, would block otherwise
-    return;
-  }else if (ret < 0){
-    if (errno == EINTR){
-      childsig_handler(signum);
-      return;
-    }
-#if DEBUG >= 3
-    std::cerr << "SIGCHLD received, but no child died";
-#endif
+  pid_t ret = waitpid( -1, &status, 0);
+  if (ret <= 0){
+    childsig_handler(signum);
     return;
   }
   int exitcode;