apr_status_t rv;
char *fname = NULL;
- if (ap_scoreboard_fname) {
- fname = ap_server_root_relative(p, ap_scoreboard_fname);
- }
rv = apr_shm_create(&scoreboard_shm, scoreboard_size, fname, p);
- if (rv != APR_SUCCESS) {
+ if ((rv != APR_SUCCESS) && (rv != APR_ENOTIMPL)) {
ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL,
- "Fatal error: could not open(create) scoreboard");
+ "Fatal error: could not create scoreboard "
+ "(using anonymous shared memory)");
return rv;
}
+ if (rv == APR_ENOTIMPL) {
+ if (ap_scoreboard_fname) {
+ fname = ap_server_root_relative(p, ap_scoreboard_fname);
+ }
+ rv = apr_shm_create(&scoreboard_shm, scoreboard_size, fname, p);
+ if (rv != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL,
+ "Fatal error: could not open(create) scoreboard");
+ return rv;
+ }
+ }
/* everything will be cleared shortly */
#endif
return APR_SUCCESS;