Ignore:
Timestamp:
May 29, 2009 1:04:03 PM (15 years ago)
Author:
bennylp
Message:

Integration of Sipit24 branch, many tickets involved:

  • #793: AMR encoder should regard 'mode-set' param specified by remote decoder.
  • #831: Automatically switch to TCP transport when sending large request
  • #832: Support for outbound proxy setting without using Route header
  • #849: Modify conference audio switch behavior in connecting ports.
  • #850: Remove 'Require=replaces' param in 'Refer-To' header (in call transfer with replaces).
  • #851: Support for regular nomination in ICE
  • #852: --ip-addr support for IPv6 for media transport in pjsua
  • #854: Adding SOFTWARE attribute in all outgoing requests may cause compatibility problem with older STUN server (thanks Alexei Kuznetsov for the report)
  • #855: Bug in digit map frequencies for DTMF digits (thanks FCCH for the report)
  • #856: Put back the ICE candidate priority values according to the default values in the draft-mmusic-ice
  • #857: Support for ICE keep-alive with Binding indication
  • #858: Do not authenticate STUN 438 response
  • #859: AMR-WB format param in the SDP is not negotiated correctly.
  • #867: Return error instead of asserting when PJSUA-LIB fails to open log file
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/conf_switch.c

    r2581 r2724  
    554554    } 
    555555     
    556     /* Check if sink is listening to other ports */ 
     556    /* If sink is currently listening to other ports, it needs to be released 
     557     * first before the new connection made. 
     558     */  
    557559    if (dst_port->transmitter_cnt > 0) { 
    558         pj_mutex_unlock(conf->mutex); 
    559         return PJ_ETOOMANYCONN; 
     560        unsigned j; 
     561        pj_bool_t transmitter_found = PJ_FALSE; 
     562 
     563        pj_assert(dst_port->transmitter_cnt == 1); 
     564        for (j=0; j<conf->max_ports && !transmitter_found; ++j) { 
     565            if (conf->ports[j]) { 
     566                unsigned k; 
     567 
     568                for (k=0; k < conf->ports[j]->listener_cnt; ++k) { 
     569                    if (conf->ports[j]->listener_slots[k] == sink_slot) { 
     570                        PJ_LOG(4,(THIS_FILE, "Connection [%d->%d] is " 
     571                                  "disconnected forcedly for the new " 
     572                                  "connection [%d->%d]", 
     573                                  j, sink_slot, src_slot, sink_slot)); 
     574                        pjmedia_conf_disconnect_port(conf, j, sink_slot); 
     575                        transmitter_found = PJ_TRUE; 
     576                        break; 
     577                    } 
     578                } 
     579            } 
     580        } 
     581        pj_assert(dst_port->transmitter_cnt == 0); 
    560582    } 
    561583 
Note: See TracChangeset for help on using the changeset viewer.