On Fri, Apr 26, 2002 at 06:56:33PM -0700, Justin Erenkrantz wrote: > > + rv = ap_queue_info_wait_for_idler(worker_queue_info); > > + if (APR_STATUS_IS_EOF(rv)) { > > + break; /* we've been signaled to die now */ > > + } > > + else if (rv != APR_SUCCESS) { > > + ap_log_error(APLOG_MARK, APLOG_EMERG, rv, ap_server_conf, > > + "apr_queue_info_wait failed. Attempting to shutdown " > > + "process gracefully."); > > + signal_threads(ST_GRACEFUL); > > + break; > > + } > > I'm slightly confused here. When we see EOF does that mean > that someone else has already called signal_threads for > ungraceful shutdowns?
Yes. > > + qi = apr_palloc(pool, sizeof(*qi)); > > + memset(qi, 0, sizeof(*qi)); > > Why not apr_pcalloc? I've made a habit of not using calloc. palloc+memset is faster. In this case, when it will only be used once, it doesn't make much of a difference. > > + AP_DEBUG_ASSERT(queue_info->idlers >= 0); > > + while ((queue_info->idlers == 0) && (!queue_info->terminated)) { > > + rv = apr_thread_cond_wait(queue_info->wait_for_idler, > > + queue_info->idlers_mutex); > > + if (rv != APR_SUCCESS) { > > + rv = apr_thread_mutex_unlock(queue_info->idlers_mutex); > > + if (rv != APR_SUCCESS) { > > + return rv; > > + } > > + return rv; > > + } > > How about just return rv in this case? =) Greg is always > pointing these out, so I'll learn from his reviews. Actually, I did this incorrectly, so thanks for pointing this out. I'm being really over-aggressive in catching errors, but better to be safe than sorry. What I should have done is used a different identifier for the nested apr_status_t. -aaron