Ignore:
Timestamp:
Jun 25, 2009 10:48:08 AM (15 years ago)
Author:
bennylp
Message:

Ticket #796: Handle the case when CANCEL is responded with 200/OK but 487 is not sent

  • merged changes from ticket #503
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/1.0/pjsip/src/pjsip/sip_transaction.c

    r2534 r2798  
    15041504 
    15051505/* 
     1506 * Start a timer to terminate transaction after the specified time 
     1507 * has elapsed.  
     1508 */ 
     1509PJ_DEF(pj_status_t) pjsip_tsx_set_timeout( pjsip_transaction *tsx, 
     1510                                           unsigned millisec) 
     1511{ 
     1512    struct tsx_lock_data lck; 
     1513    pj_time_val timeout; 
     1514 
     1515    PJ_ASSERT_RETURN(tsx != NULL, PJ_EINVAL); 
     1516    PJ_ASSERT_RETURN(tsx->role == PJSIP_ROLE_UAC && 
     1517                     tsx->method.id == PJSIP_INVITE_METHOD, 
     1518                     PJ_EINVALIDOP); 
     1519 
     1520    lock_tsx(tsx, &lck); 
     1521 
     1522    /* Transaction must not have got final response */ 
     1523    PJ_ASSERT_ON_FAIL(tsx->status_code < 200, 
     1524                    { unlock_tsx(tsx, &lck); return PJ_EINVALIDOP; }); 
     1525 
     1526    if (tsx->timeout_timer.id != 0) { 
     1527        pjsip_endpt_cancel_timer(tsx->endpt, &tsx->timeout_timer); 
     1528        tsx->timeout_timer.id = 0; 
     1529    } 
     1530 
     1531    timeout.sec = 0; 
     1532    timeout.msec = millisec; 
     1533    pj_time_val_normalize(&timeout); 
     1534 
     1535    tsx->timeout_timer.id = TIMER_ACTIVE; 
     1536    pjsip_endpt_schedule_timer(tsx->endpt, &tsx->timeout_timer, 
     1537                               &timeout); 
     1538 
     1539 
     1540    unlock_tsx(tsx, &lck); 
     1541 
     1542    return PJ_SUCCESS; 
     1543} 
     1544 
     1545 
     1546/* 
    15061547 * This function is called by TU to send a message. 
    15071548 */ 
Note: See TracChangeset for help on using the changeset viewer.