Revision 9748ab35 daemons/ganeti-confd

b/daemons/ganeti-confd
43 43
from ganeti import ssconf
44 44
from ganeti.asyncnotifier import AsyncNotifier
45 45
from ganeti.confd.server import ConfdProcessor
46
from ganeti.confd import PackMagic, UnpackMagic
46 47

  
47 48

  
48 49
class ConfdAsyncUDPServer(daemon.AsyncUDPSocket):
......
69 70

  
70 71
  # this method is overriding a daemon.AsyncUDPSocket method
71 72
  def handle_datagram(self, payload_in, ip, port):
72

  
73
    if len(payload_in) < len(constants.CONFD_MAGIC_FOURCC):
74
      logging.debug("Received a query which is too short to be true")
75
      return
76

  
77
    magic_number = payload_in[:4]
78
    query = payload_in[4:]
79

  
80
    if magic_number != constants.CONFD_MAGIC_FOURCC:
81
      logging.debug("Received a query with an unknown magic number")
73
    try:
74
      query = UnpackMagic(payload_in)
75
    except errors.ConfdMagicError, err:
76
      logging.debug(err)
82 77
      return
83 78

  
84 79
    answer =  self.processor.ExecQuery(query, ip, port)
85 80
    if answer is not None:
86
      payload_out = ''.join([constants.CONFD_MAGIC_FOURCC, answer])
87 81
      try:
88
        self.enqueue_send(ip, port, payload_out)
82
        self.enqueue_send(ip, port, PackMagic(answer))
89 83
      except errors.UdpDataSizeError:
90 84
        logging.error("Reply too big to fit in an udp packet.")
91 85

  

Also available in: Unified diff