Revision a3db74e4 lib/confd/client.py

b/lib/confd/client.py
65 65
  through asyncore or with your own handling.
66 66

  
67 67
  """
68
  def __init__(self, hmac_key, peers, callback, port=None):
68
  def __init__(self, hmac_key, peers, callback, port=None, logger=None):
69 69
    """Constructor for ConfdClient
70 70

  
71 71
    @type hmac_key: string
......
76 76
    @param callback: function to call when getting answers
77 77
    @type port: integer
78 78
    @keyword port: confd port (default: use GetDaemonPort)
79
    @type logger: L{logging.Logger}
80
    @keyword logger: optional logger for internal conditions
79 81

  
80 82
    """
81 83
    if not isinstance(peers, list):
......
88 90
    self._socket = ConfdAsyncUDPClient(self)
89 91
    self._callback = callback
90 92
    self._confd_port = port
93
    self._logger = logger
91 94
    self._requests = {}
92 95
    self._expire_requests = []
93 96

  
......
184 187
    try:
185 188
      try:
186 189
        answer, salt = self._UnpackReply(payload)
187
      except (errors.SignatureError, errors.ConfdMagicError):
190
      except (errors.SignatureError, errors.ConfdMagicError), err:
191
        if self._logger:
192
          self._logger.debug("Discarding broken package: %s" % err)
188 193
        return
189 194

  
190 195
      try:
191 196
        (request, args) = self._requests[salt]
192 197
      except KeyError:
193
        # If the salt is unkown the answer is probably a replay of an old
194
        # expired query. Ignoring it.
198
        if self._logger:
199
          self._logger.debug("Discarding unknown (expired?) reply: %s" % err)
195 200
        return
196 201

  
197 202
      client_reply = ConfdUpcallPayload(salt=salt,

Also available in: Unified diff