feat(eventserver): send UDP ping ack reply to Yatse client
This commit is contained in:
@@ -47,17 +47,25 @@ class KodiEventServerProtocol(asyncio.DatagramProtocol):
|
|||||||
return
|
return
|
||||||
|
|
||||||
payload = data[HEADER_SIZE : HEADER_SIZE + paylen]
|
payload = data[HEADER_SIZE : HEADER_SIZE + paylen]
|
||||||
self._handle_packet(pkttype, payload, addr)
|
self._handle_packet(pkttype, payload, addr, client_token)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug("Error parsing EventServer packet: %s", e)
|
logger.debug("Error parsing EventServer packet: %s", e)
|
||||||
|
|
||||||
def _handle_packet(self, pkttype: int, payload: bytes, addr: tuple[str, int]) -> None:
|
def _handle_packet(self, pkttype: int, payload: bytes, addr: tuple[str, int], client_token: int) -> None:
|
||||||
if pkttype == PT_HELO:
|
if pkttype == PT_HELO:
|
||||||
# Client registration
|
# Client registration
|
||||||
devname = payload.split(b"\x00")[0].decode("utf-8", errors="ignore")
|
devname = payload.split(b"\x00")[0].decode("utf-8", errors="ignore")
|
||||||
logger.info("Yatse EventServer connected from %s (Device: %s)", addr, devname)
|
logger.info("Yatse EventServer connected from %s (Device: %s)", addr, devname)
|
||||||
|
# Echo ping ack back to client
|
||||||
|
if self.transport:
|
||||||
|
ack = struct.pack(HEADER_FORMAT, b"XBMC", 2, 0, PT_PING, 1, 1, 0, client_token, b"\x00" * 10)
|
||||||
|
self.transport.sendto(ack, addr)
|
||||||
elif pkttype == PT_PING:
|
elif pkttype == PT_PING:
|
||||||
logger.debug("Yatse EventServer PING from %s", addr)
|
logger.debug("Yatse EventServer PING from %s", addr)
|
||||||
|
if self.transport:
|
||||||
|
ack = struct.pack(HEADER_FORMAT, b"XBMC", 2, 0, PT_PING, 1, 1, 0, client_token, b"\x00" * 10)
|
||||||
|
self.transport.sendto(ack, addr)
|
||||||
|
|
||||||
elif pkttype == PT_BUTTON:
|
elif pkttype == PT_BUTTON:
|
||||||
self._handle_button(payload)
|
self._handle_button(payload)
|
||||||
elif pkttype == PT_ACTION:
|
elif pkttype == PT_ACTION:
|
||||||
|
|||||||
Reference in New Issue
Block a user