summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-10-10 16:09:14 -0400
committerCorey Farrell <git@cfware.com>2017-10-10 20:32:25 -0400
commitaadfc09edddfb4470ea562f9f7286f2a251a8cce (patch)
treeefb32fea459efa3df529ff10bcbc9a9fcb35f11e /include
parent09932a13efa6719b481aeab0402893de230c1947 (diff)
astobj2: Run weakproxy callbacks outside of lock.
Copy the list of weakproxy callbacks to temporary memory so they can be run without holding the weakproxy lock. Change-Id: Ib167622a8a0f873fd73938f7611b2a5914308047
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/astobj2.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/asterisk/astobj2.h b/include/asterisk/astobj2.h
index 33e022421..b118d2ec0 100644
--- a/include/asterisk/astobj2.h
+++ b/include/asterisk/astobj2.h
@@ -671,6 +671,10 @@ int ao2_weakproxy_subscribe(void *weakproxy, ao2_weakproxy_notification_cb cb, v
* of the cb / data pair. If it was subscribed multiple times it must be
* unsubscribed as many times. The OBJ_MULTIPLE flag can be used to remove
* matching subscriptions.
+ *
+ * \note When it's time to run callbacks they are copied to a temporary list so the
+ * weakproxy can be unlocked before running. That means it's possible for
+ * this function to find nothing before the callback is run in another thread.
*/
int ao2_weakproxy_unsubscribe(void *weakproxy, ao2_weakproxy_notification_cb cb, void *data, int flags);