コード例 #1
0
ファイル: network_listener.py プロジェクト: DiGuoZhiMeng/Xpra
    def handle_new_connection(self, socktype, listener, _handle):
        socket_info = self.socket_info.get(listener)
        assert socktype, "cannot find socket type for %s" % listener
        socket_options = self.socket_options.get(listener, {})
        assert socktype != "named-pipe"
        conn = accept_connection(socktype, listener, SOCKET_TIMEOUT,
                                 socket_options)
        if conn is None:
            return
        #limit number of concurrent network connections:
        if len(self._potential_protocols) >= MAX_CONCURRENT_CONNECTIONS:
            log.error("Error: too many connections (%i)",
                      len(self._potential_protocols))
            log.error(" ignoring new one: %s", conn.endpoint)
            conn.close()
            return
        sock = conn._socket
        socktype = conn.socktype
        peername = conn.endpoint
        sockname = sock.getsockname()
        target = peername or sockname
        log("handle_new_connection%s sockname=%s, target=%s",
            (conn, socket_info, socket_options), sockname, target)
        sock.settimeout(SOCKET_TIMEOUT)
        log_new_connection(conn, socket_info)

        socktype = socktype.lower()
        protocol = Protocol(self, conn, self.process_network_packet)
        #protocol.large_packets.append(b"info-response")
        protocol.socket_type = socktype
        self._potential_protocols.append(protocol)
        protocol.authenticators = ()
        protocol.start()
コード例 #2
0
 def make_protocol(self, socktype, conn, listener):
     socktype = socktype.lower()
     protocol = Protocol(self, conn, self.process_network_packet)
     #protocol.large_packets.append(b"info-response")
     protocol.socket_type = socktype
     self._potential_protocols.append(protocol)
     protocol.authenticators = ()
     protocol.start()