diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py
index 1636616660..544b00f2cd 100644
--- a/bitbake/lib/bb/server/process.py
+++ b/bitbake/lib/bb/server/process.py
@@ -20,6 +20,7 @@ import os
 import sys
 import time
 import select
+import signal
 import socket
 import subprocess
 import errno
@@ -728,6 +729,10 @@ class ConnectionReader(object):
     def close(self):
         return self.reader.close()
 
+terminated = False
+def catch_sigterm(signum, frame):
+    global terminated
+    terminated = True
 
 class ConnectionWriter(object):
 
@@ -739,8 +744,12 @@ class ConnectionWriter(object):
 
     def send(self, obj):
         obj = multiprocessing.reduction.ForkingPickler.dumps(obj)
+        oldsig = signal.signal(signal.SIGTERM, catch_sigterm)
         with self.wlock:
             self.writer.send_bytes(obj)
+        signal.signal(signal.SIGTERM, oldsig)
+        if terminated:
+            os.kill(os.getpid(), signal.SIGTERM)
 
     def fileno(self):
         return self.writer.fileno()
