Would it be worth filing a bug report for this issue? It doesn't seem like the core HTTP client should ever mangle requests like this.
On Monday, December 23, 2013 2:00:11 PM UTC-5, Matt Sergeant wrote: > > Mikeal's request library wraps the sending of data around a > process.nextTick(). Try that. > > On Mon, Dec 23, 2013 at 12:02 PM, Jacob Beard > <[email protected]<javascript:> > > wrote: > >> Hi, >> >> I've noticed a strange behavior in node's http.request module. >> >> I'm using node's built-in http module to make an HTTP request inside an >> express handler. I believe I'm using http.request fairly conventionally. >> Here is a code snippet: >> >> app.post('/api/:userId/attachments/:examName/:attachmentName/render',function(req,res){ >> >> var htmlToSend = ''; >> >> req.on('data',function(s){ >> htmlToSend += s; >> }); >> >> req.on('end',function(){ >> >> var pdfGeneratorRequest = >> http.request({ >> host : PDF_GEN_HOST, >> path : '/cgi-bin/render.cgi', >> method : 'POST', >> headers : { >> 'content-length' : htmlToSend.length, >> 'content-type' : 'text/html' >> } >> }, function(pdfGeneratorResponse) { >> //handle the response >> }) >> >> pdfGeneratorRequest.on('error',function(e){ >> var m = 'Error making request to PDF generator server'; >> console.log(m,e); >> res.send(500,{error : m, message : e.message}); >> }); >> >> pdfGeneratorRequest.end(htmlToSend); >> }); >> >> >> What I am finding, however, is that when the express server receives *six >> or more* of these requests concurrently, nodejs mangles *one* of the >> HTTP requests. >> >> Here is an example of what shows up in the Apache log of the server >> receiving the request: >> >> 10.181.194.183 - - [23/Dec/2013:16:14:03 +0000] "POST /cgi-bin/render.cgi >> HTTP/1.1" 200 99865 "-" "-" 10.181.194.183 - - [23/Dec/2013:16:14:16 >> +0000] "POST /cgi-bin/render.cgi HTTP/1.1" 200 19742 "-" "-" >> 10.181.194.183 - - [23/Dec/2013:16:14:16 +0000] "POST /cgi-bin/render.cgi >> HTTP/1.1" 200 19741 "-" "-" >> 10.181.194.183 - - [23/Dec/2013:16:14:15 +0000] "POST /cgi-bin/render.cgi >> HTTP/1.1" 200 99865 "-" "-" >> 10.181.194.183 - - [23/Dec/2013:16:14:15 +0000] "POST /cgi-bin/render.cgi >> HTTP/1.1" 200 99867 "-" "-" >> 10.181.194.183 - - [23/Dec/2013:16:14:17 +0000] >> "*ML>POST*/cgi-bin/render.cgi HTTP/1.1" 400 25 "-" "-" >> 10.181.194.183 - - [23/Dec/2013:16:14:16 +0000] "POST /cgi-bin/render.cgi >> HTTP/1.1" 200 99867 "-" "-" >> >> Wireshark seems to confirm that the request HTTP method is getting >> mangled: >> >> >> <https://lh4.googleusercontent.com/-Caoj66_ZfIw/UrhqKE0XvCI/AAAAAAAAAC4/WnQHUvn-GkY/s1600/Screen+Shot+2013-12-23+at+11.50.49+AM.png> >> >> This occurs on node 0.10.24 on OS X 10.8.5 >> >> I'd appreciate any guidance anyone can offer as to why this might be >> occurring and how to resolve it. >> >> Thanks, >> >> Jake >> >> -- >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to [email protected]<javascript:> >> To unsubscribe from this group, send email to >> [email protected] <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
