Ejemplo n.º 1
0
 def reconnect(self, address, bind_address=None):
     self.address = address
     if bind_address != self.uopts.laddress:
         self.uopts.laddress = bind_address
         self.worker.shutdown()
         self.worker = Udp_server(self.global_config, self.uopts)
         self.delay_flt = recfilter(0.95, 0.25)
Ejemplo n.º 2
0
 def __init__(self, global_config, handleIncoming):
     self.global_config = global_config
     self.cache_r2l = {}
     self.cache_r2l_old = {}
     self.cache_l2s = {}
     self.handleIncoming = handleIncoming
     try:
         # Python can be compiled with IPv6 support, but if kernel
         # has not we would get exception creating the socket.
         # Workaround that by trying create socket and checking if
         # we get an exception.
         socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
     except:
         socket.has_ipv6 = False
     if 'my' in dir(global_config['_sip_address']):
         if socket.has_ipv6:
             laddresses = (('0.0.0.0', global_config['_sip_port']),
                           ('[::]', global_config['_sip_port']))
         else:
             laddresses = (('0.0.0.0', global_config['_sip_port']), )
     else:
         laddresses = ((global_config['_sip_address'],
                        global_config['_sip_port']), )
         self.fixed = True
     for laddress in laddresses:
         server = Udp_server(laddress, handleIncoming)
         self.cache_l2s[laddress] = server
Ejemplo n.º 3
0
 def reconnect(self, address, bind_address=None):
     self.address = address
     if bind_address != self.bind_address:
         self.worker.shutdown()
         self.worker = Udp_server(self.global_config, bind_address, \
           self.process_reply, flags = 0)
         self.bind_address = bind_address
Ejemplo n.º 4
0
 def __init__(self, global_config, address, bind_address=None):
     self.address = address
     self.is_local = False
     self.worker = Udp_server(global_config, bind_address, \
       self.process_reply, flags = 0)
     self.pending_requests = {}
     self.bind_address = bind_address
     self.global_config = global_config
Ejemplo n.º 5
0
 def __init__(self,
              global_config,
              address,
              bind_address=None,
              family=None,
              nworkers=None):
     self.address = address
     self.is_local = False
     self.uopts = Udp_server_opts(bind_address, self.process_reply, family)
     self.uopts.flags = 0
     if nworkers != None:
         self.uopts.nworkers = nworkers
     self.worker = Udp_server(global_config, self.uopts)
     self.pending_requests = {}
     self.global_config = global_config
     self.delay_flt = recfilter(0.95, 0.25)
Ejemplo n.º 6
0
 def __init__(self,
              global_config,
              address,
              bind_address=None,
              family=AF_INET,
              nworkers=None):
     # print('Rtp_proxy_client_udp(family=%s)' % family)
     self.address = self.getdestbyaddr(address, family)
     self.is_local = False
     self.uopts = Udp_server_opts(bind_address, self.process_reply, family)
     self.uopts.flags = 0
     self.uopts.ploss_out_rate = self.ploss_out_rate
     self.uopts.pdelay_out_max = self.pdelay_out_max
     if nworkers != None:
         self.uopts.nworkers = nworkers
     self.worker = Udp_server(global_config, self.uopts)
     self.pending_requests = {}
     self.global_config = global_config
     self.delay_flt = recfilter(0.95, 0.25)
Ejemplo n.º 7
0
 def getServer(self, address, is_local=False):
     if self.fixed:
         return self.cache_l2s.items()[0][1]
     if not is_local:
         laddress = self.cache_r2l.get(address[0], None)
         if laddress == None:
             laddress = self.cache_r2l_old.get(address[0], None)
             if laddress != None:
                 self.cache_r2l[address[0]] = laddress
         if laddress != None:
             #print 'local4remot-1: local address for %s is %s' % (address[0], laddress[0])
             return self.cache_l2s[laddress]
         if address[0].startswith('['):
             family = socket.AF_INET6
             lookup_address = address[0][1:-1]
         else:
             family = socket.AF_INET
             lookup_address = address[0]
         self.skt = socket.socket(family, socket.SOCK_DGRAM)
         ai = socket.getaddrinfo(lookup_address, None, family)
         if family == socket.AF_INET:
             _address = (ai[0][4][0], address[1])
         else:
             _address = (ai[0][4][0], address[1], ai[0][4][2], ai[0][4][3])
         self.skt.connect(_address)
         if family == socket.AF_INET:
             laddress = (self.skt.getsockname()[0],
                         self.global_config['_sip_port'])
         else:
             laddress = ('[%s]' % self.skt.getsockname()[0],
                         self.global_config['_sip_port'])
         self.cache_r2l[address[0]] = laddress
     else:
         laddress = address
     server = self.cache_l2s.get(laddress, None)
     if server == None:
         server = Udp_server(laddress, self.handleIncoming)
         self.cache_l2s[laddress] = server
     #print 'local4remot-2: local address for %s is %s' % (address[0], laddress[0])
     return server
Ejemplo n.º 8
0
 def __init__(self, global_config, address):
     self.address = address
     self.is_local = False
     self.udp_server = Udp_server(None, self.process_reply)
     self.pending_requests = {}
     self.proxy_address = address[0]