summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjlib/include/pj/activesock.h12
-rw-r--r--pjlib/src/pj/activesock.c9
2 files changed, 20 insertions, 1 deletions
diff --git a/pjlib/include/pj/activesock.h b/pjlib/include/pj/activesock.h
index 1ebb5a2e..4d30ac97 100644
--- a/pjlib/include/pj/activesock.h
+++ b/pjlib/include/pj/activesock.h
@@ -316,6 +316,18 @@ PJ_DECL(pj_status_t) pj_activesock_close(pj_activesock_t *asock);
*/
PJ_DECL(void) pj_activesock_set_iphone_os_bg(pj_activesock_t *asock,
int val);
+
+/**
+ * Enable/disable support for iPhone OS background mode. This setting
+ * will apply globally and will affect any active sockets created
+ * afterwards, if you want to change the setting for a particular
+ * active socket, use #pj_activesock_set_iphone_os_bg() instead.
+ * By default, this setting is enabled.
+ *
+ * @param val The value of global background mode setting.
+ *
+ */
+PJ_DECL(void) pj_activesock_enable_iphone_os_bg(pj_bool_t val);
#endif
/**
diff --git a/pjlib/src/pj/activesock.c b/pjlib/src/pj/activesock.c
index 9de23156..b0332ce6 100644
--- a/pjlib/src/pj/activesock.c
+++ b/pjlib/src/pj/activesock.c
@@ -29,6 +29,8 @@
#if defined(PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT) && \
PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT!=0
# include <CFNetwork/CFNetwork.h>
+
+ static pj_bool_t ios_bg_support = PJ_TRUE;
#endif
#define PJ_ACTIVESOCK_MAX_LOOP 50
@@ -133,7 +135,7 @@ static void activesock_destroy_iphone_os_stream(pj_activesock_t *asock)
static void activesock_create_iphone_os_stream(pj_activesock_t *asock)
{
- if (asock->bg_setting && asock->stream_oriented) {
+ if (ios_bg_support && asock->bg_setting && asock->stream_oriented) {
activesock_destroy_iphone_os_stream(asock);
CFStreamCreatePairWithSocket(kCFAllocatorDefault, asock->sock,
@@ -164,6 +166,11 @@ PJ_DEF(void) pj_activesock_set_iphone_os_bg(pj_activesock_t *asock,
else
activesock_destroy_iphone_os_stream(asock);
}
+
+PJ_DEF(void) pj_activesock_enable_iphone_os_bg(pj_bool_t val)
+{
+ ios_bg_support = val;
+}
#endif
PJ_DEF(pj_status_t) pj_activesock_create( pj_pool_t *pool,