Changeset 1157


Ignore:
Timestamp:
Apr 5, 2007 11:18:14 PM (18 years ago)
Author:
bennylp
Message:

Handle scenario where ICE check list completes early in the answerer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/src/pjnath/ice_session.c

    r1154 r1157  
    11271127 
    11281128    if (i == ice->clist.count) { 
    1129         /* All checks have completed */ 
     1129        /* All checks have completed, but we don't have nominated pair. 
     1130         * If agent's role is controlled, check if all components have 
     1131         * valid pair. If it does, this means the controlled agent has 
     1132         * finished the check list early and it's waiting for controlling 
     1133         * agent to send a check with USE-CANDIDATE flag set. 
     1134         */ 
     1135        if (ice->role == PJ_ICE_SESS_ROLE_CONTROLLED) { 
     1136            unsigned comp_id; 
     1137            for (comp_id=1; comp_id <= ice->comp_cnt; ++comp_id) { 
     1138                unsigned j; 
     1139                for (j=0; j<ice->valid_list.count; ++j) { 
     1140                    pj_ice_sess_check *vc = &ice->valid_list.checks[j]; 
     1141                    if (vc->lcand->comp_id == comp_id) 
     1142                        break; 
     1143                } 
     1144                if (j == ice->valid_list.count) 
     1145                    break; 
     1146            } 
     1147 
     1148            if (comp_id <= ice->comp_cnt) { 
     1149                /* This component ID doesn't have valid pair. 
     1150                 * Mark ICE as failed.  
     1151                 */ 
     1152                on_ice_complete(ice, PJNATH_EICEFAILED); 
     1153                return PJ_TRUE; 
     1154            } else { 
     1155                /* All components have a valid pair. 
     1156                 * We should wait until we receive nominated checks. 
     1157                 */ 
     1158                return PJ_FALSE; 
     1159            } 
     1160        } 
     1161 
    11301162        on_ice_complete(ice, PJNATH_EICEFAILED); 
    11311163        return PJ_TRUE; 
Note: See TracChangeset for help on using the changeset viewer.