From: JINMEI Tatuya Date: Wed, 30 May 2012 19:26:41 +0000 (-0700) Subject: [2013] just drop TCP requests for now. X-Git-Tag: trac2351_base~226^2~60^2^2~2^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa2c987ffe91e103a839c4a51ed2a26a1ea23691;p=thirdparty%2Fkea.git [2013] just drop TCP requests for now. --- diff --git a/src/bin/ddns/ddns.py.in b/src/bin/ddns/ddns.py.in index ac7c51ba5c..8e9d81ef1b 100755 --- a/src/bin/ddns/ddns.py.in +++ b/src/bin/ddns/ddns.py.in @@ -334,6 +334,8 @@ class DDNSServer: # or dropped by the sender, so if such error is detected we treat it # as an internal error and don't bother to respond. try: + if sock.proto == socket.IPPROTO_TCP: + raise SessionError('TCP requests are not yet supported') self.__request_msg.clear(Message.PARSE) self.__request_msg.from_wire(req_data) if self.__request_msg.get_opcode() != Opcode.UPDATE(): diff --git a/src/bin/ddns/tests/ddns_test.py b/src/bin/ddns/tests/ddns_test.py index 9961706860..f1a8733ed5 100755 --- a/src/bin/ddns/tests/ddns_test.py +++ b/src/bin/ddns/tests/ddns_test.py @@ -58,6 +58,7 @@ class FakeSocket: A fake socket. It only provides a file number, peer name and accept method. """ def __init__(self, fileno): + self.proto = socket.IPPROTO_UDP self.__fileno = fileno self._sent_data = None self._sent_addr = None @@ -675,6 +676,15 @@ class TestDDNSession(unittest.TestCase): # this check ensures sendto() was really attempted. self.check_update_response(self.__sock._sent_data, Rcode.NOERROR()) + def test_tcp_request(self): + # Right now TCP request is not supported. + s = self.__sock + s.proto = socket.IPPROTO_TCP + self.assertFalse(self.server.handle_request((s, TEST_SERVER6, + TEST_SERVER4, + create_msg()))) + self.assertEqual((None, None), (s._sent_data, s._sent_addr)) + def test_session_with_config(self): '''Check a session with more relistic config setups