Ignore:
Timestamp:
May 29, 2007 12:33:09 AM (17 years ago)
Author:
bennylp
Message:

Fixed ticket #91: timer to re-subscribe buddy's presence when subscription failed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_pres.c

    r1281 r1311  
    2323#define THIS_FILE   "pjsua_pres.c" 
    2424 
     25#ifndef PJSUA_PRES_TIMER 
     26#   define PJSUA_PRES_TIMER     120 
     27#endif 
     28 
    2529 
    2630/* 
     
    11341138} 
    11351139 
     1140/* Timer callback to re-create client subscription */ 
     1141static void pres_timer_cb(pj_timer_heap_t *th, 
     1142                          pj_timer_entry *entry) 
     1143{ 
     1144    pj_time_val delay = { PJSUA_PRES_TIMER, 0 }; 
     1145 
     1146    PJ_UNUSED_ARG(th); 
     1147 
     1148    PJSUA_LOCK(); 
     1149 
     1150    entry->id = PJ_FALSE; 
     1151    refresh_client_subscriptions(); 
     1152 
     1153    pjsip_endpt_schedule_timer(pjsua_var.endpt, entry, &delay); 
     1154    entry->id = PJ_TRUE; 
     1155 
     1156    PJSUA_UNLOCK(); 
     1157} 
     1158 
    11361159 
    11371160/* 
     
    11621185pj_status_t pjsua_pres_start(void) 
    11631186{ 
    1164     /* Nothing to do (is it?) */ 
     1187    /* Start presence timer to re-subscribe to buddy's presence when 
     1188     * subscription has failed. 
     1189     */ 
     1190    if (pjsua_var.pres_timer.id == PJ_FALSE) { 
     1191        pj_time_val pres_interval = {PJSUA_PRES_TIMER, 0}; 
     1192 
     1193        pjsua_var.pres_timer.cb = &pres_timer_cb; 
     1194        pjsip_endpt_schedule_timer(pjsua_var.endpt, &pjsua_var.pres_timer, 
     1195                                   &pres_interval); 
     1196    } 
     1197 
    11651198    return PJ_SUCCESS; 
    11661199} 
     
    11891222{ 
    11901223    unsigned i; 
     1224 
     1225    if (pjsua_var.pres_timer.id != 0) { 
     1226        pjsip_endpt_cancel_timer(pjsua_var.endpt, &pjsua_var.pres_timer); 
     1227        pjsua_var.pres_timer.id = PJ_FALSE; 
     1228    } 
    11911229 
    11921230    for (i=0; i<PJ_ARRAY_SIZE(pjsua_var.acc); ++i) { 
Note: See TracChangeset for help on using the changeset viewer.