Fossil

Check-in [d6053249]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Extra efforts to close higher-numbered file descriptors prior to starting CGI.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | failed-fix
Files: files | file ages | folders
SHA3-256: d6053249ecf38e4946324956742650ce9a25ed590054cf34eef9455b89a878ed
User & Date: drh 2018-08-01 06:49:20.720
Context
2018-08-06
12:51
Merge enhancements from trunk. ... (check-in: ce3d5718 user: drh tags: failed-fix)
2018-08-01
06:49
Extra efforts to close higher-numbered file descriptors prior to starting CGI. ... (check-in: d6053249 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: 1073593e user: drh tags: failed-fix)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/main.c.
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
  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) ){







|







2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
  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<6; 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) ){