openwrt-packages/net/pdns/patches/200-dnsproxy-endian.patch

25 lines
1.1 KiB
Diff

commit c6b1e59f3b413493551910a7d0a3e9206d488599
Author: Chris Hofstaedtler <chris.hofstaedtler@deduktiva.com>
Date: Sat Apr 6 23:51:35 2024 +0200
auth dnsproxy: fix build on s390x
--- a/pdns/dnsproxy.cc
+++ b/pdns/dnsproxy.cc
@@ -240,10 +240,11 @@ void DNSProxy::mainloop()
memcpy(&dHead, &buffer[0], sizeof(dHead));
{
auto conntrack = d_conntrack.lock();
-#if BYTE_ORDER == BIG_ENDIAN
- // this is needed because spoof ID down below does not respect the native byteorder
- d.id = (256 * (uint16_t)buffer[1]) + (uint16_t)buffer[0];
-#endif
+ if (BYTE_ORDER == BIG_ENDIAN) {
+ // this is needed because spoof ID down below does not respect the native byteorder
+ dHead.id = (256 * (uint16_t)buffer[1]) + (uint16_t)buffer[0];
+ }
+
auto iter = conntrack->find(dHead.id ^ d_xor);
if (iter == conntrack->end()) {
g_log << Logger::Error << "Discarding untracked packet from recursor backend with id " << (dHead.id ^ d_xor) << ". Conntrack table size=" << conntrack->size() << endl;