Ignore:
Timestamp:
May 22, 2007 9:11:10 PM (17 years ago)
Author:
bennylp
Message:

Fixed ticket #285: ICE transport stops receiving packet upon getting ICMP unreach on Windows

File:
1 edited

Legend:

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

    r1248 r1288  
    441441    pj_ice_strans *ice_st = comp->ice_st; 
    442442    pj_ssize_t pkt_size; 
     443    enum { RETRY = 4 }; 
     444    unsigned retry; 
    443445    pj_status_t status; 
    444446 
     
    512514 
    513515    /* Read next packet */ 
    514     pkt_size = sizeof(comp->pkt); 
    515     comp->src_addr_len = sizeof(comp->src_addr); 
    516     status = pj_ioqueue_recvfrom(key, op_key, comp->pkt, &pkt_size,  
    517                                  PJ_IOQUEUE_ALWAYS_ASYNC, 
    518                                  &comp->src_addr, &comp->src_addr_len); 
    519     if (status != PJ_SUCCESS && status != PJ_EPENDING) { 
    520         ice_st_perror(comp->ice_st, "ioqueue recvfrom() error", status); 
     516    for (retry=0; retry<RETRY; ++retry) { 
     517        pkt_size = sizeof(comp->pkt); 
     518        comp->src_addr_len = sizeof(comp->src_addr); 
     519        status = pj_ioqueue_recvfrom(key, op_key, comp->pkt, &pkt_size,  
     520                                     PJ_IOQUEUE_ALWAYS_ASYNC, 
     521                                     &comp->src_addr, &comp->src_addr_len); 
     522        if (status != PJ_SUCCESS && status != PJ_EPENDING) { 
     523            ice_st_perror(comp->ice_st, "ioqueue recvfrom() error", status); 
     524        } else { 
     525            break; 
     526        } 
    521527    } 
    522528} 
Note: See TracChangeset for help on using the changeset viewer.