Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nodejs/node-v0.x-archive
base: bf16141eeb03
Choose a base ref
...
head repository: nodejs/node-v0.x-archive
compare: 8a3d0c8b9103
Choose a head ref
  • 1 commit
  • 1 file changed
  • 1 contributor

Commits on Jun 6, 2013

  1. child_process: fix handle delivery

    node.js and libuv depend on the fact that none of the supported systems
    ever emit more than one SCM_RIGHTS message from a recvmsg() syscall.
    
    SCM_RIGHTS messages are never coalesced. SCM_RIGHTS and normal messages
    however _are_ coalesced. That is, recvmsg() might return this:
    
      recvmsg();  // { "message-with-fd", "message", "message" }
    
    The operating system implicitly breaks pending messages along
    SCM_RIGHTS boundaries. Most Unices break before such messages but Linux
    also breaks _after_ them.  When the sender looks like this:
    
      sendmsg("message");
      sendmsg("message-with-fd");
      sendmsg("message");
    
    Then on most Unices the receiver sees messages arriving like this:
    
      recvmsg();  // { "message" }
      recvmsg();  // { "message-with-fd", "message" }
    
    The bug fix in commit 9352c19 assumes this behavior. On Linux however,
    those messages can also come in like this:
    
      recvmsg();  // { "message", "message-with-fd" }
      recvmsg();  // { "message" }
    
    In other words, it's incorrect to assume that the file descriptor is
    always attached to the first message. This commit makes node wise up.
    
    This is a back-port of commit 21bd456 from the v0.10 branch. The test
    has been dropped as it's not compatible with the v0.8 process model.
    
    Fixes #5330.
    
    Conflicts:
    	lib/child_process.js
    bnoordhuis committed Jun 6, 2013
    Copy the full SHA
    8a3d0c8 View commit details
    Browse the repository at this point in the history