Index: twisted/internet/posixbase.py =================================================================== --- twisted/internet/posixbase.py (revisione 19570) +++ twisted/internet/posixbase.py (copia locale) @@ -388,6 +388,23 @@ p.startListening() return p + def listenUDPLite(self, port, protocol, interface='', maxPacketSize=8192): + """Connects a given L{DatagramProtocol} to the given numeric UDP port. + + @returns: object conforming to L{IListeningPort}. + """ + p = udp.Port(port, protocol, interface, maxPacketSize, self) + try: + p.socketProtocol = socket.getprotobyname("udplite") + except socket.error: + # System is not updated, use the assigned IANA value. + p.socketProtocol = 136 + p.startListening() + UDPLITE_SEND_CSCOV = 10 # Actual coverage length + # We checksum only UDP-lite header + p.getHandle().setsockopt(p.socketProtocol, UDPLITE_SEND_CSCOV, 8) + return p + def connectUDP(self, remotehost, remoteport, protocol, localport=0, interface='', maxPacketSize=8192): """DEPRECATED. Index: twisted/internet/base.py =================================================================== --- twisted/internet/base.py (revisione 19570) +++ twisted/internet/base.py (copia locale) @@ -719,9 +719,10 @@ addressFamily = None socketType = None + socketProtocol = 0 def createInternetSocket(self): - s = socket.socket(self.addressFamily, self.socketType) + s = socket.socket(self.addressFamily, self.socketType, self.socketProtocol) s.setblocking(0) if fcntl and hasattr(fcntl, 'FD_CLOEXEC'): old = fcntl.fcntl(s.fileno(), fcntl.F_GETFD)