Last night, I got express-spdy working out of the box on Ubuntu 12.04 in 5 easy steps. It worked so well that I wonder if something in node.js is making this so easy or if it really was Ubuntu 12.04.
So, on an old Ubuntu 10.04 box, I:
- install node.js v0.6.15
- Install the generator:
$ npm install -g express-spdy - Generate a test server:
$ express-spdy expess-spdy-test - Install the modules necessary for the test server:
$ cd expess-spdy-test && npm install - Fire up the server:
$ node app
Watching the conversation in Wireshark, I note that there is, indeed, no NPN (next protocol negotiation) taking place in the server hello portion of the SSL handshake:
Contrast this, for instance, with the SSL handshake from the 12.04 server:
I am hard pressed to decide if this is proper behavior for express-spdy. It makes no sense to use express-spdy without a version of openssl capable of NPN (per the openssl changelog, that means openssl version 1.0.1 or higher).
The only thing that actually compiles C code in the entire express-spdy dependency tree is the zlib compesssion code, which is not a place to be checking for the proper SSL versions. What if I use the node extension toolset, but only to check prerequisites? In that case, the
package.json might add a script section like:{
"author": "Chris Strom (http://eeecomputes.com)",
"name": "express-spdy",
"description": "SPDY-ize express.js sites.",
"version": "0.2.0",
"homepage": "https://github.com/eee-c/express-spdy",
"scripts": {
"preinstall" : "node-waf configure"
},
// ...
} I then need a corresponding wscript file:def set_options(opt):
opt.tool_options('compiler_cxx')
def configure(conf):
conf.check_cfg(package='openssl', atleast_version='1.0.1', mandatory=True)
When I try to install on my old machine, I get an error, but compilation proceeds anyway:└── express@2.5.9 (qs@0.4.2, mime@1.2.4, connect@1.8.6) cstrom@londo:~/repos/dummy$ npm install ../express-spdy/ > express-spdy@0.1.3 preinstall /home/cstrom/repos/dummy/node_modules/express-spdy > node-waf configure Setting srcdir to : /home/cstrom/repos/dummy/node_modules/express-spdy Setting blddir to : /home/cstrom/repos/dummy/node_modules/express-spdy/build Checking for openssl >= 1.0.1 : no 'configure' finished successfully (0.009s)I do not know enough about WAF or node-waf to understand why this would not fail outright. It seems like it ought to halt. Somewhat frustrated, I call it a night here. I will bone up on my WAF tomorrow and hopefully come up with a way of getting this to fail.
Day #357


No comments:
Post a Comment