Package: jacktrip Version: 1.1~repack-6 Severity: important Tags: patch Dear Maintainer,
Other clients hang at "Waiting for Peer..." when attempting to connect to jacktrip running as a server. This is because of a change to the way that QHostAddress works in Qt5, resulting in the return of an IPv4-mapped address instead of an IPv4 address. I've written and attached a patch that fixes this (restoring the behaviour shown by Qt4). Cheers, Aaron -- System Information: Debian Release: bullseye/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.2.0-2-amd64 (SMP w/4 CPU cores) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_AU:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages jacktrip depends on: ii libc6 2.28-10 ii libgcc1 1:9.2.1-6 ii libjack-jackd2-0 [libjack-0.125] 1.9.12~dfsg-2+b1 ii libqt5core5a 5.11.3+dfsg1-4 ii libqt5network5 5.11.3+dfsg1-4 ii librtaudio6 5.0.0~ds-3 ii libstdc++6 9.2.1-6 jacktrip recommends no packages. jacktrip suggests no packages. -- no debconf information
--- jacktrip-1.1~repack/src/JackTrip.cpp 2019-09-01 22:29:24.000000000 +1000 +++ JackTrip.cpp 2019-09-01 22:24:03.033620369 +1000 @@ -451,6 +451,15 @@ UdpSockTemp.close(); // close the socket mPeerAddress = peerHostAddress.toString(); + + // Convert any IPv4-mapped address to an actual IPv4 address + // (Due to a change in the way that QHostAddress works in Qt5) + bool couldConvert; + QHostAddress ipv4Address(peerHostAddress.toIPv4Address(&couldConvert)); + if (couldConvert) { + mPeerAddress = ipv4Address.toString(); + } + cout << "Client Connection Received from IP : " << qPrintable(mPeerAddress) << endl; cout << gPrintSeparator << endl;
--- jacktrip-1.1~repack/src/JackTrip.cpp 2019-09-01 22:29:24.000000000 +1000 +++ JackTrip.cpp 2019-09-01 22:24:03.033620369 +1000 @@ -451,6 +451,15 @@ UdpSockTemp.close(); // close the socket mPeerAddress = peerHostAddress.toString(); + + // Convert any IPv4-mapped address to an actual IPv4 address + // (Due to a change in the way that QHostAddress works in Qt5) + bool couldConvert; + QHostAddress ipv4Address(peerHostAddress.toIPv4Address(&couldConvert)); + if (couldConvert) { + mPeerAddress = ipv4Address.toString(); + } + cout << "Client Connection Received from IP : " << qPrintable(mPeerAddress) << endl; cout << gPrintSeparator << endl;