Fixed null signal preservation
authorTj Holowaychuk <tj@vision-media.ca>
Tue, 15 Feb 2011 17:40:41 +0000 (09:40 -0800)
committerRyan Dahl <ry@tinyclouds.org>
Wed, 16 Feb 2011 00:35:50 +0000 (16:35 -0800)
Closes GH-674.

src/node.js
test/simple/test-process-kill-null.js [new file with mode: 0644]

index d7ba4e83fc258d0cb17d85a94afc90515dec3f72..789cb9b0e1d679b49a1dc8f9579aea8204305563 100644 (file)
     };
 
     process.kill = function(pid, sig) {
-      sig = sig || 'SIGTERM';
-
-      if (!startup.lazyConstants()[sig]) {
-        throw new Error('Unknown signal: ' + sig);
+      // preserve null signal
+      if (0 === sig) {
+        process._kill(pid, 0);
+      } else {
+        sig = sig || 'SIGTERM';
+        if (startup.lazyConstants()[sig]) {
+          process._kill(pid, startup.lazyConstants()[sig]);
+        } else {
+          throw new Error('Unknown signal: ' + sig);
+        }
       }
-
-      process._kill(pid, startup.lazyConstants()[sig]);
     };
   };
 
diff --git a/test/simple/test-process-kill-null.js b/test/simple/test-process-kill-null.js
new file mode 100644 (file)
index 0000000..d45ea9f
--- /dev/null
@@ -0,0 +1,20 @@
+
+var assert = require('assert');
+var spawn = require('child_process').spawn;
+
+var cat = spawn('cat');
+var called;
+
+process.kill(cat.pid, 0);
+
+cat.stdout.on('data', function(){
+  called = true;
+  process.kill(cat.pid, 'SIGKILL');
+});
+
+// EPIPE when null sig fails
+cat.stdin.write('test');
+
+process.on('exit', function(){
+  assert.ok(called);
+});
\ No newline at end of file