]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
handle APR_EINTR response in queue push\trypop
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 22 Oct 2007 23:29:29 +0000 (23:29 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 22 Oct 2007 23:29:29 +0000 (23:29 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6021 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_apr.c

index c1b473ebc1412408ab6fa3b2750a3fe2b24f3fe9..5546fd97a6bd25920d0681d1966872bf3d2d1c45 100644 (file)
@@ -745,7 +745,13 @@ SWITCH_DECLARE(switch_status_t) switch_queue_pop(switch_queue_t * queue, void **
 
 SWITCH_DECLARE(switch_status_t) switch_queue_push(switch_queue_t * queue, void *data)
 {
-       return apr_queue_push(queue, data);
+       apr_status_t s;
+
+       do {
+               s = apr_queue_push(queue, data);
+       } while (s == APR_EINTR);
+       
+       return s;
 }
 
 SWITCH_DECLARE(switch_status_t) switch_queue_trypop(switch_queue_t * queue, void **data)
@@ -755,7 +761,13 @@ SWITCH_DECLARE(switch_status_t) switch_queue_trypop(switch_queue_t * queue, void
 
 SWITCH_DECLARE(switch_status_t) switch_queue_trypush(switch_queue_t * queue, void *data)
 {
-       return apr_queue_trypush(queue, data);
+       apr_status_t s;
+
+       do {
+               s = apr_queue_trypush(queue, data);
+       } while (s == APR_EINTR);
+
+       return s;
 }
 
 SWITCH_DECLARE(int) switch_vasprintf(char **ret, const char *fmt, va_list ap)