In Trace.fromRequest in the file lib/trace.js, a variable called 'host' is unprotected when function call 'request.socket.address()' returns null, resulting in an error later when host.address is dereferenced during the construction of a new Endpoint. This is because, within the request.socket.address function, a native code function called 'getsockname' is undefined on the internally used 'request.socket._handle' object when associated with a Unix Socket. In contrast, getsockname is properly defined (by node.js) and can be found when the request is associated with a TCP/IP socket. A sample fix for Trace.fromRequest could be to protect the 'host' variable with a slight modification to the current code similar to the following:
var hostAddress = null;
if (request.socket && request.socket.address) {
hostAddress = request.socket.address();
}
// Note hostAddress can be set to null when using a Unix instead of a TCP/IP Socket
var host = hostAddress ? hostAddress : {address: '127.0.0.1', port: 80};
[ Please note I'm using node v0.10.26 in an Ubuntu 15.04 environment. Thank's in advance for looking at this issue. ]