Closed #1144: New presence callback to report subscription state (thanks Johan Lantz for the suggestion):
 - added on_buddy_evsub_state() callback
 - added sample implementation in pjsua_app.c


git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3339 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index 651dad1..a4909b0 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -1557,7 +1557,11 @@
 	    buddy->term_reason.slen = 0;
 	}
 
-	/* Call callback */
+	/* Call callbacks */
+	if (pjsua_var.ua_cfg.cb.on_buddy_evsub_state)
+	    (*pjsua_var.ua_cfg.cb.on_buddy_evsub_state)(buddy->index, sub,
+							event);
+
 	if (pjsua_var.ua_cfg.cb.on_buddy_state)
 	    (*pjsua_var.ua_cfg.cb.on_buddy_state)(buddy->index);
 
@@ -1656,30 +1660,10 @@
 }
 
 
-/* Event subscription callback. */
-static pjsip_evsub_user pres_callback = 
-{
-    &pjsua_evsub_on_state,  
-    &pjsua_evsub_on_tsx_state,
-
-    NULL,   /* on_rx_refresh: don't care about SUBSCRIBE refresh, unless 
-	     * we want to authenticate 
-	     */
-
-    &pjsua_evsub_on_rx_notify,
-
-    NULL,   /* on_client_refresh: Use default behaviour, which is to 
-	     * refresh client subscription. */
-
-    NULL,   /* on_server_timeout: Use default behaviour, which is to send 
-	     * NOTIFY to terminate. 
-	     */
-};
-
-
 /* It does what it says.. */
 static void subscribe_buddy_presence(pjsua_buddy_id buddy_id)
 {
+    pjsip_evsub_user pres_callback;
     pj_pool_t *tmp_pool = NULL;
     pjsua_buddy *buddy;
     int acc_id;
@@ -1688,6 +1672,12 @@
     pjsip_tx_data *tdata;
     pj_status_t status;
 
+    /* Event subscription callback. */
+    pj_bzero(&pres_callback, sizeof(pres_callback));
+    pres_callback.on_evsub_state = &pjsua_evsub_on_state;
+    pres_callback.on_tsx_state = &pjsua_evsub_on_tsx_state;
+    pres_callback.on_rx_notify = &pjsua_evsub_on_rx_notify;
+
     buddy = &pjsua_var.buddy[buddy_id];
     acc_id = pjsua_acc_find_for_outgoing(&buddy->uri);