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