OLD | NEW |
1 /* -*- Mode: JavaScript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
-*- */ | 1 /* -*- Mode: JavaScript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
-*- */ |
2 /* vim:set ts=2 sw=2 sts=2 et: */ | 2 /* vim:set ts=2 sw=2 sts=2 et: */ |
3 /* This Source Code Form is subject to the terms of the Mozilla Public | 3 /* This Source Code Form is subject to the terms of the Mozilla Public |
4 * License, v. 2.0. If a copy of the MPL was not distributed with this | 4 * License, v. 2.0. If a copy of the MPL was not distributed with this |
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | 6 |
7 /* | 7 /* |
8 * An implementation of an HTTP server both as a loadable script and as an XPCOM | 8 * An implementation of an HTTP server both as a loadable script and as an XPCOM |
9 * component. See the accompanying README file for user documentation on | 9 * component. See the accompanying README file for user documentation on |
10 * httpd.js. | 10 * httpd.js. |
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 }, | 698 }, |
699 | 699 |
700 | 700 |
701 // NSISUPPORTS | 701 // NSISUPPORTS |
702 | 702 |
703 // | 703 // |
704 // see nsISupports.QueryInterface | 704 // see nsISupports.QueryInterface |
705 // | 705 // |
706 QueryInterface: function(iid) | 706 QueryInterface: function(iid) |
707 { | 707 { |
708 if (iid.equals(Ci.nsIHttpServer) || | 708 if (iid.equals(Ci.nsIServerSocketListener) || iid.equals(Ci.nsISupports)) |
709 iid.equals(Ci.nsIServerSocketListener) || | |
710 iid.equals(Ci.nsISupports)) | |
711 return this; | 709 return this; |
712 | 710 |
713 throw Cr.NS_ERROR_NO_INTERFACE; | 711 throw Cr.NS_ERROR_NO_INTERFACE; |
714 }, | 712 }, |
715 | 713 |
716 | 714 |
717 // NON-XPCOM PUBLIC API | 715 // NON-XPCOM PUBLIC API |
718 | 716 |
719 /** | 717 /** |
720 * Returns true iff this server is not running (and is not in the process of | 718 * Returns true iff this server is not running (and is not in the process of |
(...skipping 1410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2131 if (name.charAt(name.length - 1) == HIDDEN_CHAR) | 2129 if (name.charAt(name.length - 1) == HIDDEN_CHAR) |
2132 name = name.substring(0, name.length - 1); | 2130 name = name.substring(0, name.length - 1); |
2133 | 2131 |
2134 var headerFile = file.parent; | 2132 var headerFile = file.parent; |
2135 headerFile.append(name + HEADERS_SUFFIX); | 2133 headerFile.append(name + HEADERS_SUFFIX); |
2136 | 2134 |
2137 if (!headerFile.exists()) | 2135 if (!headerFile.exists()) |
2138 return; | 2136 return; |
2139 | 2137 |
2140 const PR_RDONLY = 0x01; | 2138 const PR_RDONLY = 0x01; |
2141 var fis = new FileInputStream(headerFile, PR_RDONLY, 0444, | 2139 var fis = new FileInputStream(headerFile, PR_RDONLY, 0o444, |
2142 Ci.nsIFileInputStream.CLOSE_ON_EOF); | 2140 Ci.nsIFileInputStream.CLOSE_ON_EOF); |
2143 | 2141 |
2144 try | 2142 try |
2145 { | 2143 { |
2146 var lis = new ConverterInputStream(fis, "UTF-8", 1024, 0x0); | 2144 var lis = new ConverterInputStream(fis, "UTF-8", 1024, 0x0); |
2147 lis.QueryInterface(Ci.nsIUnicharLineInputStream); | 2145 lis.QueryInterface(Ci.nsIUnicharLineInputStream); |
2148 | 2146 |
2149 var line = {value: ""}; | 2147 var line = {value: ""}; |
2150 var more = lis.readLine(line); | 2148 var more = lis.readLine(line); |
2151 | 2149 |
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2666 * @param count: uint | 2664 * @param count: uint |
2667 * the number of bytes to write | 2665 * the number of bytes to write |
2668 */ | 2666 */ |
2669 _writeFileResponse: function(metadata, file, response, offset, count) | 2667 _writeFileResponse: function(metadata, file, response, offset, count) |
2670 { | 2668 { |
2671 const PR_RDONLY = 0x01; | 2669 const PR_RDONLY = 0x01; |
2672 | 2670 |
2673 var type = this._getTypeFromFile(file); | 2671 var type = this._getTypeFromFile(file); |
2674 if (type === SJS_TYPE) | 2672 if (type === SJS_TYPE) |
2675 { | 2673 { |
2676 var fis = new FileInputStream(file, PR_RDONLY, 0444, | 2674 var fis = new FileInputStream(file, PR_RDONLY, 0o444, |
2677 Ci.nsIFileInputStream.CLOSE_ON_EOF); | 2675 Ci.nsIFileInputStream.CLOSE_ON_EOF); |
2678 | 2676 |
2679 try | 2677 try |
2680 { | 2678 { |
2681 var sis = new ScriptableInputStream(fis); | 2679 var sis = new ScriptableInputStream(fis); |
2682 var s = Cu.Sandbox(gGlobalObject); | 2680 var s = Cu.Sandbox(gGlobalObject); |
2683 s.importFunction(dump, "dump"); | 2681 s.importFunction(dump, "dump"); |
2684 | 2682 |
2685 // Define a basic key-value state-preservation API across requests, wi
th | 2683 // Define a basic key-value state-preservation API across requests, wi
th |
2686 // keys initially corresponding to the empty string. | 2684 // keys initially corresponding to the empty string. |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2760 response.setHeader("Last-Modified", | 2758 response.setHeader("Last-Modified", |
2761 toDateString(file.lastModifiedTime), | 2759 toDateString(file.lastModifiedTime), |
2762 false); | 2760 false); |
2763 } | 2761 } |
2764 catch (e) { /* lastModifiedTime threw, ignore */ } | 2762 catch (e) { /* lastModifiedTime threw, ignore */ } |
2765 | 2763 |
2766 response.setHeader("Content-Type", type, false); | 2764 response.setHeader("Content-Type", type, false); |
2767 maybeAddHeaders(file, metadata, response); | 2765 maybeAddHeaders(file, metadata, response); |
2768 response.setHeader("Content-Length", "" + count, false); | 2766 response.setHeader("Content-Length", "" + count, false); |
2769 | 2767 |
2770 var fis = new FileInputStream(file, PR_RDONLY, 0444, | 2768 var fis = new FileInputStream(file, PR_RDONLY, 0o444, |
2771 Ci.nsIFileInputStream.CLOSE_ON_EOF); | 2769 Ci.nsIFileInputStream.CLOSE_ON_EOF); |
2772 | 2770 |
2773 offset = offset || 0; | 2771 offset = offset || 0; |
2774 count = count || file.fileSize; | 2772 count = count || file.fileSize; |
2775 NS_ASSERT(offset === 0 || offset < file.fileSize, "bad offset"); | 2773 NS_ASSERT(offset === 0 || offset < file.fileSize, "bad offset"); |
2776 NS_ASSERT(count >= 0, "bad count"); | 2774 NS_ASSERT(count >= 0, "bad count"); |
2777 NS_ASSERT(offset + count <= file.fileSize, "bad total data size"); | 2775 NS_ASSERT(offset + count <= file.fileSize, "bad total data size"); |
2778 | 2776 |
2779 try | 2777 try |
2780 { | 2778 { |
(...skipping 2508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5289 | 5287 |
5290 // get rid of any pending requests | 5288 // get rid of any pending requests |
5291 while (thread.hasPendingEvents()) | 5289 while (thread.hasPendingEvents()) |
5292 thread.processNextEvent(true); | 5290 thread.processNextEvent(true); |
5293 | 5291 |
5294 DEBUG = false; | 5292 DEBUG = false; |
5295 } | 5293 } |
5296 | 5294 |
5297 window.nsHttpServer = nsHttpServer; | 5295 window.nsHttpServer = nsHttpServer; |
5298 })(); | 5296 })(); |
OLD | NEW |