Revision c8eded0b
b/lib/constants.py | ||
---|---|---|
681 | 681 |
# polling every RATELIMIT seconds, rather than relying on inotify, to be able |
682 | 682 |
# to serve more requests. |
683 | 683 |
CONFD_CONFIG_RELOAD_RATELIMIT = 2 |
684 |
|
|
685 |
# Maximum UDP datagram size. |
|
686 |
# On IPv4: 64K - 20 (ip header size) - 8 (udp header size) = 65507 |
|
687 |
# On IPv6: 64K - 40 (ip6 header size) - 8 (udp header size) = 65487 |
|
688 |
# (assuming we can't use jumbo frames) |
|
689 |
# We just set this to 60K, which should be enough |
|
690 |
MAX_UDP_DATA_SIZE = 61440 |
b/lib/daemon.py | ||
---|---|---|
95 | 95 |
def handle_read(self): |
96 | 96 |
try: |
97 | 97 |
try: |
98 |
payload, address = self.recvfrom(4096)
|
|
98 |
payload, address = self.recvfrom(constants.MAX_UDP_DATA_SIZE)
|
|
99 | 99 |
except socket.error, err: |
100 | 100 |
if err.errno == errno.EINTR: |
101 | 101 |
# we got a signal while trying to read. no need to do anything, |
... | ... | |
148 | 148 |
"""Enqueue a datagram to be sent when possible |
149 | 149 |
|
150 | 150 |
""" |
151 |
if len(payload) > constants.MAX_UDP_DATA_SIZE: |
|
152 |
raise errors.UdpDataSizeError('Packet too big: %s > %s' % (len(payload), |
|
153 |
constants.MAX_UDP_DATA_SIZE)) |
|
151 | 154 |
self._out_queue.append((ip, port, payload)) |
152 | 155 |
|
153 | 156 |
|
b/lib/errors.py | ||
---|---|---|
297 | 297 |
""" |
298 | 298 |
|
299 | 299 |
|
300 |
class UdpDataSizeError(GenericError): |
|
301 |
"""UDP payload too big. |
|
302 |
|
|
303 |
""" |
|
304 |
|
|
305 |
|
|
300 | 306 |
# errors should be added above |
301 | 307 |
|
302 | 308 |
|
Also available in: Unified diff