Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Change the backoffice-nodelay setting back to default off. Work around a bug in althttpd by making sure CGI runs with no file descriptors open other than 0, 1, and 2. (Edit:) These changes proved insufficient to clear the problem. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | failed-fix |
| Files: | files | file ages | folders |
| SHA3-256: |
1073593e901e179137d9c332ac577dbf |
| User & Date: | drh 2018-08-01 06:43:41.672 |
| Original Comment: | Change the backoffice-nodelay setting back to default off. Work around a bug in althttpd by making sure CGI runs with no file descriptors open other than 0, 1, and 2. |
Context
|
2018-08-01
| ||
| 06:49 | Extra efforts to close higher-numbered file descriptors prior to starting CGI. ... (check-in: d6053249ec user: drh tags: failed-fix) | |
| 06:43 | Change the backoffice-nodelay setting back to default off. Work around a bug in althttpd by making sure CGI runs with no file descriptors open other than 0, 1, and 2. (Edit:) These changes proved insufficient to clear the problem. ... (check-in: 1073593e90 user: drh tags: failed-fix) | |
|
2018-07-31
| ||
| 23:38 | Make backoffice-nodelay consistently default on. ... (check-in: 71260ba25e user: drh tags: forum-v2) | |
Changes
Changes to src/backoffice.c.
| ︙ | ︙ | |||
260 261 262 263 264 265 266 |
if( g.fAnyTrace ){
fprintf(stderr, "/***** Begin Backoffice Processing %d *****/\n",
getpid());
}
backoffice_work();
break;
}
| | | 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 |
if( g.fAnyTrace ){
fprintf(stderr, "/***** Begin Backoffice Processing %d *****/\n",
getpid());
}
backoffice_work();
break;
}
if( backofficeNoDelay || db_get_boolean("backoffice-nodelay",0) ){
/* If the no-delay flag is set, exit immediately rather than queuing
** up. Assume that some future request will come along and handle any
** necessary backoffice work. */
db_end_transaction(0);
break;
}
/* This process needs to queue up and wait for the current lease
|
| ︙ | ︙ |
Changes to src/cgi.c.
| ︙ | ︙ | |||
1927 1928 1929 1930 1931 1932 1933 |
int nErr = 0, fd;
close(0);
fd = dup(connection);
if( fd!=0 ) nErr++;
close(1);
fd = dup(connection);
if( fd!=1 ) nErr++;
| < < < < < > | 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 |
int nErr = 0, fd;
close(0);
fd = dup(connection);
if( fd!=0 ) nErr++;
close(1);
fd = dup(connection);
if( fd!=1 ) nErr++;
close(connection);
for(fd=3; close(fd)==0; fd++){}
g.nPendingRequest = nchildren+1;
g.nRequest = nRequest+1;
return nErr;
}
}
}
/* Bury dead children */
|
| ︙ | ︙ |
Changes to src/db.c.
| ︙ | ︙ | |||
3025 3026 3027 3028 3029 3030 3031 | /* ** SETTING: autosync-tries width=16 default=1 ** If autosync is enabled setting this to a value greater ** than zero will cause autosync to try no more than this ** number of attempts if there is a sync failure. */ /* | | | 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 | /* ** SETTING: autosync-tries width=16 default=1 ** If autosync is enabled setting this to a value greater ** than zero will cause autosync to try no more than this ** number of attempts if there is a sync failure. */ /* ** SETTING: backoffice-nodelay boolean default=off ** If backoffice-nodelay is true, then the backoffice processing ** will never invoke sleep(). If it has nothing useful to do, ** it simply exits. */ /* ** SETTING: binary-glob width=40 versionable block-text ** The VALUE of this setting is a comma or newline-separated list of |
| ︙ | ︙ |
Changes to src/main.c.
| ︙ | ︙ | |||
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 |
}else{
zFile = g.argv[1];
}
g.httpOut = stdout;
g.httpIn = stdin;
fossil_binary_mode(g.httpOut);
fossil_binary_mode(g.httpIn);
g.cgiOutput = 1;
blob_read_from_file(&config, zFile, ExtFILE);
while( blob_line(&config, &line) ){
if( !blob_token(&line, &key) ) continue;
if( blob_buffer(&key)[0]=='#' ) continue;
if( blob_eq(&key, "repository:") && blob_tail(&line, &value) ){
/* repository: FILENAME
| > > > > > | 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 |
}else{
zFile = g.argv[1];
}
g.httpOut = stdout;
g.httpIn = stdin;
fossil_binary_mode(g.httpOut);
fossil_binary_mode(g.httpIn);
#if !defined(_WIN32)
/* Work around a bug in older versions of althttpd by making sure no
** file descriptors other than 0, 1, and 2 are open. */
{ int i; for(i=3; close(i)==0; i++){} }
#endif
g.cgiOutput = 1;
blob_read_from_file(&config, zFile, ExtFILE);
while( blob_line(&config, &line) ){
if( !blob_token(&line, &key) ) continue;
if( blob_buffer(&key)[0]=='#' ) continue;
if( blob_eq(&key, "repository:") && blob_tail(&line, &value) ){
/* repository: FILENAME
|
| ︙ | ︙ |