Changeset 311 for pjproject/trunk


Ignore:
Timestamp:
Mar 8, 2006 10:05:19 AM (19 years ago)
Author:
bennylp
Message:

RTP server NAT support and removed rtp_port

Location:
pjproject/trunk/pjmedia
Files:
2 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/build/pjmedia.dsp

    r278 r311  
    146146# Begin Source File 
    147147 
    148 SOURCE=..\src\pjmedia\rtp_port.c 
    149 # End Source File 
    150 # Begin Source File 
    151  
    152148SOURCE=..\src\pjmedia\sdp.c 
    153149# End Source File 
     
    231227 
    232228SOURCE=..\include\pjmedia\rtp.h 
    233 # End Source File 
    234 # Begin Source File 
    235  
    236 SOURCE=..\include\pjmedia\rtp_port.h 
    237229# End Source File 
    238230# Begin Source File 
  • pjproject/trunk/pjmedia/src/pjmedia/stream.c

    r290 r311  
    4242#define PJMEDIA_MAX_MTU                 1500 
    4343#define PJMEDIA_DTMF_DURATION           1600    /* in timestamp */ 
     44#define PJMEDIA_RTP_NAT_PROBATION_CNT   10 
    4445 
    4546 
     
    9899    pj_sockaddr_in           rem_rtcp_addr; /**< Remote RTCP address.       */ 
    99100 
     101    pj_sockaddr_in           rem_src_rtp;   /**< addr of src pkt from remote*/ 
     102    unsigned                 rem_src_cnt;   /**< if different, # of pkt rcv */ 
     103 
    100104    pj_rtcp_session          rtcp;          /**< RTCP for incoming RTP.     */ 
    101105 
     
    451455        const void *payload; 
    452456        unsigned payloadlen; 
     457        int addrlen; 
    453458        int status; 
    454459 
     
    474479        /* Get packet from socket. */ 
    475480        len = channel->in_pkt_size; 
    476         status = pj_sock_recv(stream->skinfo.rtp_sock,  
    477                               channel->in_pkt, &len, 0); 
     481        addrlen = sizeof(stream->rem_src_rtp); 
     482        status = pj_sock_recvfrom(stream->skinfo.rtp_sock,  
     483                                  channel->in_pkt, &len, 0, 
     484                                  &stream->rem_src_rtp, &addrlen); 
    478485        if (len < 1 || status != PJ_SUCCESS) { 
    479486            if (pj_get_netos_error() == PJ_STATUS_FROM_OS(OSERR_ECONNRESET)) { 
     
    521528        stream->stat.dec.pkt++; 
    522529        stream->stat.dec.bytes += len; 
     530 
     531        /* See if source address of RTP packet is different than the  
     532         * configured address. 
     533         */ 
     534        if ((stream->rem_rtp_addr.sin_addr.s_addr !=  
     535             stream->rem_src_rtp.sin_addr.s_addr) || 
     536            (stream->rem_rtp_addr.sin_port != stream->rem_src_rtp.sin_port)) 
     537        { 
     538            stream->rem_src_cnt++; 
     539 
     540            if (stream->rem_src_cnt >= PJMEDIA_RTP_NAT_PROBATION_CNT) { 
     541             
     542                stream->rem_rtp_addr = stream->rem_src_rtp; 
     543                stream->rem_src_cnt = 0; 
     544 
     545                PJ_LOG(4,(THIS_FILE,"Remote RTP address switched to %s:%d", 
     546                          pj_inet_ntoa(stream->rem_src_rtp.sin_addr), 
     547                          pj_ntohs(stream->rem_src_rtp.sin_port))); 
     548            } 
     549        } 
    523550 
    524551        /* Put to jitter buffer. */ 
Note: See TracChangeset for help on using the changeset viewer.