comparison rlgwebd.js @ 34:57f4b36ef06b

rlgwebd.js: handle HTTP HEAD properly. Prevent a message body from being sent in response to HTTP HEAD.
author John "Elwin" Edwards <elwin@sdf.org>
date Tue, 05 Jun 2012 20:13:47 -0700
parents c75fc4b1d13d
children a0387f112bcf
comparison
equal deleted inserted replaced
33:23a495e81725 34:57f4b36ef06b
516 res.writeHead(500, {}); 516 res.writeHead(500, {});
517 res.end(); 517 res.end();
518 } 518 }
519 else { 519 else {
520 res.writeHead(200, resheaders); 520 res.writeHead(200, resheaders);
521 res.write(data); 521 if (req.method != 'HEAD')
522 res.write(data);
522 res.end(); 523 res.end();
523 } 524 }
524 }); 525 });
525 } 526 }
526 else { 527 else {
527 res.writeHead(404, resheaders); 528 res.writeHead(404, resheaders);
528 res.write("<html><head><title>" + nname + "</title></head>\n<body><h1>" + nname + " Not Found</h1></body></html>\n"); 529 if (req.method != 'HEAD') {
530 res.write("<html><head><title>" + nname + "</title></head>\n<body><h1>"
531 + nname + " Not Found</h1></body></html>\n");
532 }
529 res.end(); 533 res.end();
530 } 534 }
531 }); 535 });
532 return; 536 return;
533 } 537 }
571 gamedesc["g"] = sessions[sessid].game.name; 575 gamedesc["g"] = sessions[sessid].game.name;
572 reply["g"].push(gamedesc); 576 reply["g"].push(gamedesc);
573 } 577 }
574 } 578 }
575 res.writeHead(200, { "Content-Type": "application/json" }); 579 res.writeHead(200, { "Content-Type": "application/json" });
576 res.write(JSON.stringify(reply)); 580 if (req.method != 'HEAD')
581 res.write(JSON.stringify(reply));
577 res.end(); 582 res.end();
578 } 583 }
579 584
580 var errorcodes = [ "Generic Error", "Not logged in", "Invalid data", 585 var errorcodes = [ "Generic Error", "Not logged in", "Invalid data",
581 "Login failed", "Already playing", "Game launch failed", 586 "Login failed", "Already playing", "Game launch failed",
607 } 612 }
608 req.on('data', moredata); 613 req.on('data', moredata);
609 614
610 /* This will send the response once the whole request is here. */ 615 /* This will send the response once the whole request is here. */
611 function respond() { 616 function respond() {
612 //formdata = getFormValues(reqbody);
613 formdata = getMsg(reqbody); 617 formdata = getMsg(reqbody);
614 var target = url.parse(req.url).pathname; 618 var target = url.parse(req.url).pathname;
615 var cterm = findTermSession(formdata); 619 var cterm = findTermSession(formdata);
616 /* First figure out if the client is POSTing to a command interface. */ 620 /* First figure out if the client is POSTing to a command interface. */
617 if (req.method == 'POST') { 621 if (req.method == 'POST') {
648 res.end(); 652 res.end();
649 } 653 }
650 } 654 }
651 else if (req.method == 'GET' || req.method == 'HEAD') { 655 else if (req.method == 'GET' || req.method == 'HEAD') {
652 if (target == '/feed') { 656 if (target == '/feed') {
657 if (req.method == 'HEAD') {
658 res.writeHead(200, {"Content-Type": "application/json"});
659 res.end();
660 return;
661 }
653 if (!cterm) { 662 if (!cterm) {
654 sendError(res, 1, null); 663 sendError(res, 1, null);
655 return; 664 return;
656 } 665 }
657 readFeed(res, cterm); 666 readFeed(res, cterm);