diff --git a/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckDaemon.java b/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckDaemon.java
index 56deadd..f3166b1 100644
--- a/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckDaemon.java
+++ b/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckDaemon.java
@@ -175,7 +175,11 @@
             try {
                 try {
                     socket.setSoTimeout(1_000); //reads should time out after 1 second
-                    BuckTaskContext context = new BuckTaskContext(socket.getInputStream());
+                    BuckTaskContext context = BuckTaskContext.createBuckTaskContext(socket.getInputStream());
+                    if (context == null) {
+                        socket.close();
+                        return;
+                    }
 
                     String taskName = context.taskName();
                     BuckTask task = tasks.get(taskName);
diff --git a/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckTaskContext.java b/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckTaskContext.java
index b8d189c..2cfb35d 100644
--- a/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckTaskContext.java
+++ b/tools/build/conf/src/main/java/org/onosproject/buckdaemon/BuckTaskContext.java
@@ -36,10 +36,16 @@
     private final ImmutableList<String> input;
     private final List<String> output;
 
-    BuckTaskContext(InputStream inputStream) throws IOException {
+    public static BuckTaskContext createBuckTaskContext(InputStream inputStream) throws IOException {
         ImmutableList<String> lines = slurpInput(inputStream);
-        checkArgument(lines.size() >= 1 && !lines.get(0).isEmpty(),
-                "Request must contain at least task type");
+        if (lines.size() == 0) {
+            return null;
+        } else {
+            return new BuckTaskContext(lines);
+        }
+    }
+
+    BuckTaskContext(ImmutableList<String> lines) {
         this.taskName = lines.get(0);
         this.input = lines.subList(1, lines.size());
         this.output = Lists.newArrayList();
@@ -55,7 +61,7 @@
     private static ImmutableList<String> slurpInput(InputStream stream) throws IOException {
         ImmutableList.Builder<String> lines = ImmutableList.builder();
         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
-        while(true) {
+        while (true) {
             String line = bufferedReader.readLine();
             if (line == null || line.trim().length() == 0) {
                 // Empty line or EOF
