Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Moved the SIGTERM handler up before the "fossil server" HTTP hit handler. We had it clustered with the other signal() calls, but those are to handle signals intended to occur only during CGI processing. This one will normally occur while we're blocked, waiting for the HTTP hit to occur, so it had no useful effect where it was. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
d3c55fe02466006331fb82aacfafb7cc |
| User & Date: | wyoung 2022-08-14 18:48:50.734 |
Context
|
2022-08-14
| ||
| 19:33 | Resolved timeline segfault reported in [forum:0bbb66eee4ba35db|forum post 0bbb66eee4ba35db], triggered by entries with NULL checkin messages. ... (check-in: 20eab78592 user: stephan tags: trunk) | |
| 18:48 | Moved the SIGTERM handler up before the "fossil server" HTTP hit handler. We had it clustered with the other signal() calls, but those are to handle signals intended to occur only during CGI processing. This one will normally occur while we're blocked, waiting for the HTTP hit to occur, so it had no useful effect where it was. ... (check-in: d3c55fe024 user: wyoung tags: trunk) | |
| 18:01 | Changed previous to call fossil_exit() instead of exit(3) so we close our databases before dying. ... (check-in: 7c857d2233 user: wyoung tags: trunk) | |
Changes
Changes to src/main.c.
| ︙ | ︙ | |||
3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 |
pclose(sshIn);
fossil_free(zBrowserCmd);
return;
}
if( g.repositoryOpen ) flags |= HTTP_SERVER_HAD_REPOSITORY;
if( g.localOpen ) flags |= HTTP_SERVER_HAD_CHECKOUT;
db_close(1);
/* Start up an HTTP server
*/
fossil_setenv("SERVER_SOFTWARE", "fossil version " RELEASE_VERSION
" " MANIFEST_VERSION " " MANIFEST_DATE);
#if !defined(_WIN32)
/* Unix implementation */
| > > > > > > > > > > > > > | 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 |
pclose(sshIn);
fossil_free(zBrowserCmd);
return;
}
if( g.repositoryOpen ) flags |= HTTP_SERVER_HAD_REPOSITORY;
if( g.localOpen ) flags |= HTTP_SERVER_HAD_CHECKOUT;
db_close(1);
if( getpid()==1 ){
/* Modern kernels suppress SIGTERM to PID 1 to prevent root from
** rebooting the system by nuking the init system. The only way
** Fossil becomes that PID 1 is when it's running solo in a Linux
** container or similar, so we do want to exit immediately, to
** allow the container to shut down quickly.
**
** This has to happen ahead of the other signal() calls below.
** They apply after the HTTP hit is handled, but this one needs
** to be registered while we're waiting for that to occur.
**/
signal(SIGTERM, fossil_exit);
}
/* Start up an HTTP server
*/
fossil_setenv("SERVER_SOFTWARE", "fossil version " RELEASE_VERSION
" " MANIFEST_VERSION " " MANIFEST_DATE);
#if !defined(_WIN32)
/* Unix implementation */
|
| ︙ | ︙ | |||
3321 3322 3323 3324 3325 3326 3327 |
}else{
fossil_set_timeout(FOSSIL_DEFAULT_TIMEOUT);
}
g.httpIn = stdin;
g.httpOut = stdout;
signal(SIGSEGV, sigsegv_handler);
signal(SIGPIPE, sigpipe_handler);
| < < < < < < < < < | 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 |
}else{
fossil_set_timeout(FOSSIL_DEFAULT_TIMEOUT);
}
g.httpIn = stdin;
g.httpOut = stdout;
signal(SIGSEGV, sigsegv_handler);
signal(SIGPIPE, sigpipe_handler);
if( g.fAnyTrace ){
fprintf(stderr, "/***** Subprocess %d *****/\n", getpid());
}
g.cgiOutput = 1;
find_server_repository(2, 0);
if( fossil_strcmp(g.zRepositoryName,"/")==0 ){
allowRepoList = 1;
|
| ︙ | ︙ |