@@ -1256,10 +1256,20 @@
1256 1256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ %h(blob_str(&versionInfo))
1257 1257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </pre>
1258 1258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
1259 1259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1260 1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WEBPAGE: noop
1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Send back an empty HTTP reply. Deliver no content.
1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void noop_page(void){
1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(style_csp(1));
1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content_type("text/plain");
1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1261 1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1262 1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1263 1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Set the g.zBaseURL value to the full URL for the toplevel of
1264 1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the fossil tree. Set g.zTop to g.zBaseURL without the
1265 1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** leading "http://" and the host and port.
@@ -2361,10 +2371,11 @@
2361 2371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --files GLOB comma-separate glob patterns for static file to serve
2362 2372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --host NAME specify hostname of the server
2363 2373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --https signal a request coming in via https
2364 2374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --in FILE Take input from FILE instead of standard input
2365 2375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --ipaddr ADDR Assume the request comes from the given IP address
2376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --keep-alive Include "keepalive.js" in HTML pages
2366 2377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --localauth enable automatic login for local connections
2367 2378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --nocompress do not compress HTTP replies
2368 2379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --nodelay omit backoffice processing if it would delay process exit
2369 2380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --nojail drop root privilege but do not enter the chroot jail
2370 2381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --nossl signal that no SSL connections are available
@@ -2440,10 +2451,11 @@
2440 2451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zIpAddr = fossil_getenv("REMOTE_HOST"); /* From stunnel */
2441 2452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_replace_parameter("HTTPS","on");
2442 2453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2443 2454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHost = find_option("host", 0, 1);
2444 2455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zHost ) cgi_replace_parameter("HTTP_HOST",zHost);
2456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("keep-alive",0,0) ) style_load_js("keepalive.js");
2445 2457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2446 2458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_WIN32) && USE_SEE
2447 2459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPidKey = find_option("usepidkey", 0, 1);
2448 2460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zPidKey ){
2449 2461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
DWORD processId = 0;
@@ -2624,10 +2636,11 @@
2624 2636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
2625 2637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --baseurl URL Use URL as the base (useful for reverse proxies)
2626 2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --create Create a new REPOSITORY if it does not already exist
2627 2639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --extroot DIR Document root for the /ext extension mechanism
2628 2640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --files GLOBLIST Comma-separated list of glob patterns for static files
2641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --idle-timeout N Exit if no HTTP requests received for N seconds
2629 2642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --localauth enable automatic login for requests from localhost
2630 2643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --localhost listen on 127.0.0.1 only (always true for "ui")
2631 2644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --https Indicates that the input is coming through a reverse
2632 2645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** proxy that has already translated HTTPS into HTTP.
2633 2646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --max-latency N Do not let any single HTTP request run for more than N
@@ -2663,10 +2676,12 @@
2663 2676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int allowRepoList; /* List repositories on URL "/" */
2664 2677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zAltBase; /* Argument to the --baseurl option */
2665 2678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFileGlob; /* Static content must match this */
2666 2679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zIpAddr = 0; /* Bind to this IP address */
2667 2680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fCreate = 0; /* The --create flag */
2681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zIdleTimeout; /* Value of the --idle-timeout flag */
2682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int iIdle = 0; /* Idle timeout value */
2668 2683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zInitPage = 0; /* Start on this page. --page option */
2669 2684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if defined(_WIN32) && USE_SEE
2670 2685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPidKey;
2671 2686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
2672 2687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -2696,11 +2711,17 @@
2696 2711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Th_InitTraceLog();
2697 2712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPort = find_option("port", "P", 1);
2698 2713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
isUiCmd = g.argv[1][0]=='u';
2699 2714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isUiCmd ){
2700 2715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zInitPage = find_option("page", 0, 1);
2716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iIdle = 60;
2717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zIdleTimeout = find_option("idle-timeout",0,1);
2719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zIdleTimeout ){
2720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ iIdle = atoi(zIdleTimeout);
2701 2721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2702 2723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNotFound = find_option("notfound", 0, 1);
2703 2724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
allowRepoList = find_option("repolist",0,0)!=0;
2704 2725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("nocompress",0,0)!=0 ) g.fNoHttpCompress = 1;
2705 2726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zAltBase = find_option("baseurl", 0, 1);
2706 2727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fCreate = find_option("create",0,0)!=0;
@@ -2794,11 +2815,11 @@
2794 2815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2795 2816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2796 2817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.repositoryOpen ) flags |= HTTP_SERVER_HAD_REPOSITORY;
2797 2818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.localOpen ) flags |= HTTP_SERVER_HAD_CHECKOUT;
2798 2819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_close(1);
2799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( cgi_http_server(iPort, mxPort, zBrowserCmd, zIpAddr, flags) ){
2820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cgi_http_server(iPort, mxPort, zBrowserCmd, zIpAddr, iIdle, flags) ){
2800 2821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("unable to listen on TCP socket %d", iPort);
2801 2822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2802 2823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For the parent process, the cgi_http_server() command above never
2803 2824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** returns (except in the case of an error). Instead, for each incoming
2804 2825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** client connection, a child process is created, file descriptors 0
@@ -2834,10 +2855,11 @@
2834 2855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( flags & HTTP_SERVER_SCGI ){
2835 2856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_handle_scgi_request();
2836 2857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
2837 2858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_handle_http_request(0);
2838 2859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( iIdle>0 ) style_load_js("keepalive.js");
2839 2861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
process_one_web_page(zNotFound, glob_create(zFileGlob), allowRepoList);
2840 2862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.fAnyTrace ){
2841 2863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(stderr, "/***** Webpage finished in subprocess %d *****/\n",
2842 2864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
getpid());
2843 2865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -2862,11 +2884,11 @@
2862 2884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( allowRepoList ){
2863 2885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
flags |= HTTP_SERVER_REPOLIST;
2864 2886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2865 2887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( win32_http_service(iPort, zAltBase, zNotFound, zFileGlob, flags) ){
2866 2888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile,
2867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zAltBase, zNotFound, zFileGlob, zIpAddr, flags);
2889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zAltBase, zNotFound, zFileGlob, zIpAddr, iIdle, flags);
2868 2890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2869 2891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
2870 2892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2871 2893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2872 2894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
2873 2895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!