Sha256: 708b43f86c4ed6d2ea3b3c85d1a946f0b6b45d5e29d6624acdbd28a655c55b93

Contents?: true

Size: 1.96 KB

Versions: 11

Compression:

Stored size: 1.96 KB

Contents

module OverSIP::Modules

  module OutboundMangling

    extend ::OverSIP::Logger

    @log_id = "OutboundMangling module"

    def self.add_outbound_to_contact request
      if request.contact and request.connection_outbound_flow_token
        log_system_debug "performing Contact mangling (adding ;ov-ob Outbound param) for #{request.log_id}"  if $oversip_debug

        # Add the ;ov-ob param to the Contact URI.
        request.contact.set_param "ov-ob", request.connection_outbound_flow_token
        return true
      else
        return false
      end
    end

    def self.extract_outbound_from_ruri request
      # Do nothing if the request already contains a Route header with the Outbound flow token (so
      # the registrar *does* support Path).
      unless request.incoming_outbound_requested?
        if (ov_ob = request.ruri.del_param("ov-ob"))
          log_system_debug "incoming Outbound flow token extracted from ;ov-ob param in RURI for #{request.log_id}"  if $oversip_debug
          request.route_outbound_flow_token = ov_ob
          request.incoming_outbound_requested = true
          return true
        else
          return false
        end

      else
        # If the request already contains a proper Outbound Route header, then at least try to remove
        # the ;ov-ob param from the RURI.
        request.ruri.del_param("ov-ob")
        return false
      end
    end

    def self.remove_outbound_from_contact message
      unless message.is_a? ::OverSIP::SIP::Message
        raise ::OverSIP::RuntimeError, "message must be a OverSIP::SIP::Request or OverSIP::SIP::Response"
      end

      if (contacts = message.headers["Contact"])
        log_system_debug "reverting original Contact value (removing ;ov-ob Outbound param) for response"  if $oversip_debug
        contacts.each do |contact|
          contact.gsub! /;ov-ob=[_\-0-9A-Za-z]+/, ""
        end
        return true
      else
        return false
      end
    end

  end  # module OutboundMangling

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
oversip-1.3.8 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.7 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.6 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.5 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.3 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.2 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.1 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.0 lib/oversip/modules/outbound_mangling.rb
oversip-1.3.0.dev1 lib/oversip/modules/outbound_mangling.rb
oversip-1.2.1 lib/oversip/modules/outbound_mangling.rb
oversip-1.2.0 lib/oversip/modules/outbound_mangling.rb