SWITCH_DECLARE(switch_status_t) switch_queue_pop(switch_queue_t *queue, void **data)
{
- return apr_queue_pop(queue, data);
+ apr_status_t s;
+
+ do {
+ s = apr_queue_pop(queue, data);
+ } while (s == APR_EINTR);
+
+ return s;
}
SWITCH_DECLARE(switch_status_t) switch_queue_pop_timeout(switch_queue_t *queue, void **data, switch_interval_time_t timeout)
SWITCH_DECLARE(switch_status_t) switch_queue_trypop(switch_queue_t *queue, void **data)
{
- return apr_queue_trypop(queue, data);
+ apr_status_t s;
+
+ do {
+ s = apr_queue_trypop(queue, data);
+ } while (s == APR_EINTR);
+
+ return s;
+
}
SWITCH_DECLARE(switch_status_t) switch_queue_interrupt_all(switch_queue_t *queue)