Skip to content
Snippets Groups Projects
  1. Feb 27, 2020
  2. Feb 25, 2020
  3. Feb 24, 2020
    • Kevin Harwell's avatar
      format_cap: make function parameters 'const' · 1e1651b4
      Kevin Harwell authored
      There were a couple places where the format cap function parameter was not
      'const' when it should have been. This patch makes them 'const'.
      
      Change-Id: Ife753fb16a962d842a6b44f45363a61a66bfdb2e
      1e1651b4
    • Walter Doekes's avatar
      say: Remove unused "plural" option from main/say · 0b5c6fdd
      Walter Doekes authored
      There are exceptions for plural objects, but they are detected using the
      supplied NUMBER, not using an extra option.
      
      Change-Id: I95d1d1b2796b1aba92048a2dbae8a3856ed8a113
      0b5c6fdd
    • Jaco Kroon's avatar
      addons/res_config_mysql: silense warnings about printf format errors. · 5cd7230f
      Jaco Kroon authored
      Warnings without this:
      
      res_config_mysql.c: In function 'update2_mysql':
      res_config_mysql.c:741:15: warning: format '%llu' expects argument of type
          'long long unsigned int', but argument 6 has type 'my_ulonglong'
          {aka 'long unsigned int'} [-Wformat=]
      ast_debug(1, "MySQL RealTime: Updated %llu rows on table: %s\n",
          numrows, tablename);
      
      (reformatted for readability within line-wrap)
      
      Change-Id: I2af4d419a37c1a7eeee750cf9ae4a9a2b3a37fd3
      5cd7230f
  4. Feb 21, 2020
  5. Feb 20, 2020
  6. Feb 19, 2020
  7. Feb 18, 2020
    • George Joseph's avatar
      res_pjsip_outbound_registration: Fix SRV failover on timeout · 78b01f41
      George Joseph authored
      In order to retry outbound registrations for some situations, we
      need access to the tdata from the original request.  For instance,
      for 401/407 responses we need it to properly construct the
      subsequent request with the authentication.  We also need it if
      we're iterating over a DNS SRV response record set so we can skip
      entries we've already tried.
      
      We've been getting the tdata from the server response rdata and
      transaction but that only works for the failures where there was
      actually a response (4XX, 5XX, etc).  For timeouts there's no
      response and therefore no rdata or transaction from which to get
      the tdata.  When processing a single A/AAAA record for a server,
      this wasn't an issue as we just retried that same server after the
      retry timer expired.  If we got an SRV record set for the server
      though, without the state from the tdata, we just kept trying the
      first entry in the set repeatedly instead of skipping to the next
      one in the list.
      
      * Added a "last_tdata" member to the client state structure to keep
        track of the sent tdata.
      
      * Updated registration_client_send() to save the tdata it used into
        the client_state.
      
      * Updated sip_outbound_registration_response_cb() to use the tdata
        saved in client_state when we don't get a response from the
        server. We still use the tdata from the transaction when we DO
        get a response from the server so we can properly handle 4XX
        responses where our new request depends on it.
      
      General note on timeouts:
      
      Although res_pjsip_outbound_registration skips to the next record
      immediately when a timeout occurs during SRV set traversal, it's
      pjproject that determines how long to wait before a timeout is
      declared.  As with other SIP message types, pjproject will continue
      trying the same server at an interval specified by "timer_t1" until
      "timer_b" expires.  Both of those timers are set in the pjsip.conf
      "system" section.
      
      ASTERISK-28746
      
      Change-Id: I199b8274392d17661dd3ce3b4d69a3968368fa06
      78b01f41
    • Joshua C. Colp's avatar
      bridging: Add better support for adding/removing streams. · 5a5be92b
      Joshua C. Colp authored
      This change adds support to bridge_softmix to allow the addition
      and removal of additional video source streams. When such a change
      occurs each participant is renegotiated as needed to reflect the
      update. If another video source is added then each participant
      gets another source. If a video source is removed then it is
      removed from each participant. This functionality allows you to
      have both your webcam and screenshare providing video if you
      desire, or even more streams. Mapping has been changed to use
      the topology index on the source channel as a unique identifier
      for outgoing participant streams, this will never change and
      provides an easy way to establish the mapping.
      
      The bridge_simple and bridge_native_rtp modules have also been
      updated to renegotiate when the stream topology of a party changes
      allowing the same behavior to occur as added to bridge_softmix.
      If a screen share is added then the opposite party is renegotiated.
      If that screen share is removed then the opposite party is
      renegotiated again.
      
      Some additional fixes are also included in here. Stream state is
      now conveyed in SDP so sendonly/recvonly/inactive streams can
      be requested. Removed streams now also remove previous state
      from themselves so consumers don't get confused.
      
      ASTERISK-28733
      
      Change-Id: I93f41fb41b85646bef71408111c17ccea30cb0c5
      5a5be92b
    • George Joseph's avatar
    • Ben Ford's avatar
      RTP/ICE: Send on first valid pair. · 168637cc
      Ben Ford authored
      When handling ICE negotiations, it's possible that there can be a delay
      between STUN binding requests which in turn will cause a delay in ICE
      completion, preventing media from flowing. It should be possible to send
      media when there is at least one valid pair, preventing this scenario
      from occurring.
      
      A change was added to PJPROJECT that adds an optional callback
      (on_valid_pair) that will be called when the first valid pair is found
      during ICE negotiation. Asterisk uses this to start the DTLS handshake,
      allowing media to flow. It will only be called once, either on the first
      valid pair, or when ICE negotiation is complete.
      
      ASTERISK-28716
      
      Change-Id: Ia7b68c34f06d2a1d91c5ed51627b66fd0363d867
      168637cc
    • Sean Bright's avatar
      app_mixmonitor: Turn on synchronization by default · 8dcdce42
      Sean Bright authored
      The optional synchronization behavior created in
      64906c4c is now the default for
      MixMonitor.
      
      * Add a new flag 'n' that allows for this behavior to be turned off
      
      * Add a notice when the 'S' option is used indicating that it is no
        longer necessary
      
      Change-Id: I158987c475cda4e1ff1256dd0daccdd99df568b4
      8dcdce42
  8. Feb 17, 2020
  9. Feb 15, 2020
  10. Feb 14, 2020
    • Kevin Harwell's avatar
      res_rtp_asterisk: bad audio (static) due to incomplete dtls/srtp setup · 3865b3fd
      Kevin Harwell authored
      There was a race condition between client initiated DTLS setup, and handling
      of server side ice completion that caused the underlying SSL object to get
      cleared during DTLS initialization. If this happened Asterisk would be left
      in a partial DTLS setup state. RTP packets were sent and received, but were
      not being encrypted and decrypted. This resulted in no audio, or static.
      
      Specifically, this occurred when '__rtp_recvfrom' was processing the handshake
      sequence from the client to the server, and then 'ast_rtp_on_ice_complete'
      gets called from another thread and clears the SSL object when calling the
      'dtls_perform_setup' function. The timing had to be just right in the sense
      that from the external SSL library perspective SSL initialization completed
      (rtp recv), Asterisk clears/resets the SSL object (ice done), and then checks
      to see if SSL is intialized (rtp recv). Since it was cleared, Asterisk thinks
      it is not finished, thus not completing 'dtls_srtp_setup'.
      
      This patch removes calls to 'dtls_perform_setup', which clears the SSL object,
      in 'ast_rtp_on_ice_complete'. When ice completes, there is no reason to clear
      the underlying SSL object. If an ice candidate changes a full protocol level
      renegotiation occurs. Also, in the case of bundled ICE candidates are reused
      when a stream is added. So no real reason to have to clear, and reset in this
      instance.
      
      Also, this patch adds a bit of extra logging to aid in diagnosis of any future
      problems.
      
      ASTERISK-28742 #close
      
      Change-Id: I34c9e6bad5a39b087164646e2836e3e48fe6892f
      3865b3fd
    • Joshua Colp's avatar
    • Joshua Colp's avatar
  11. Feb 13, 2020
  12. Feb 11, 2020
  13. Feb 10, 2020
    • Sean Bright's avatar
      func_odbc: Prevent snprintf() truncation warning · 1e037ebb
      Sean Bright authored
      For reasons that are not clear to me - this only appears for me when
      _not_ building in dev-mode.
      
      Change-Id: Ib45c54daaea8e0d571cb470cab1daaae2edba968
      1e037ebb
    • Joshua C. Colp's avatar
      res_pjsip_session: Fix off-nominal session refreshes. · ac155dec
      Joshua C. Colp authored
      Given a scenario where session refreshes occur close to
      each other while another is finishing it was possible for
      the session refreshes to occur out of order. It was
      also possible for session refreshes to be delayed for
      quite some time if a session refresh did not result in
      a topology change.
      
      For the out of order session refreshes the first session
      refresh would be queued due to a transaction in progress.
      This transaction would then finish. When finished a
      separate task to process the delayed requests queue
      would be queued for handling. A second refresh would
      be requested internally before this delayed request
      queued task was processed. As no transaction was in
      progress this session refresh would be immediately
      handled before the queued session refresh.
      
      The code will now check if any delayed requests exist
      before allowing a session refresh to immediately occur.
      If any exist then the session refresh is queued.
      
      For the delayed session refreshes if a session refresh
      did not result in a topology change the attempt would
      be immediately stopped and no other delayed requests would
      be processed.
      
      The code will now go through the entire delayed requests
      queue until a delayed request results in a request
      actually being sent.
      
      ASTERISK-28730
      
      Change-Id: Ied640280133871f77d3f332be62265e754605088
      ac155dec
  14. Feb 07, 2020
  15. Feb 06, 2020
Loading