diff --git a/makespec/BUILDVERSION b/makespec/BUILDVERSION index 4bb2362a..c97f65e2 100644 --- a/makespec/BUILDVERSION +++ b/makespec/BUILDVERSION @@ -1 +1 @@ -5487 +5488 diff --git a/src/components/latency/unix/ICMPPing.cpp b/src/components/latency/unix/ICMPPing.cpp index 33902560..7f899e37 100644 --- a/src/components/latency/unix/ICMPPing.cpp +++ b/src/components/latency/unix/ICMPPing.cpp @@ -100,38 +100,37 @@ namespace Qv2ray::components::latency::icmping return { 0, "EPING_SOCK:" + QObject::tr("Socket creation failed") }; // resolve hostname - hostent *hname = gethostbyname(address.toStdString().c_str()); - if (!hname) + hostent *resolvedAddress = gethostbyname(address.toStdString().c_str()); + if (!resolvedAddress) return { 0, "EPING_HOST: " + QObject::tr("Unresolvable hostname") }; // set IP address to ping - sockaddr_in addr_ping, *addr; - memset(&addr_ping, 0, sizeof(addr_ping)); - addr_ping.sin_family = hname->h_addrtype; - addr_ping.sin_port = 0; - memcpy(&addr_ping.sin_addr, hname->h_addr, hname->h_length); - addr = &addr_ping; + sockaddr_in targetAddress; + memset(&targetAddress, 0, sizeof(targetAddress)); + targetAddress.sin_family = resolvedAddress->h_addrtype; + targetAddress.sin_port = 0; + memcpy(&targetAddress.sin_addr, resolvedAddress->h_addr, resolvedAddress->h_length); // prepare echo request packet - icmp req; - memset(&req, 0, sizeof(req)); - req.icmp_type = ICMP_ECHO; - req.icmp_hun.ih_idseq.icd_id = 0; // SOCK_DGRAM & 0 => id will be set by kernel + icmp _icmp_request; + memset(&_icmp_request, 0, sizeof(_icmp_request)); + _icmp_request.icmp_type = ICMP_ECHO; + _icmp_request.icmp_hun.ih_idseq.icd_id = 0; // SOCK_DGRAM & 0 => id will be set by kernel unsigned short sent_seq; - req.icmp_hun.ih_idseq.icd_seq = sent_seq = seq++; - req.icmp_cksum = ping_checksum(reinterpret_cast(&req), sizeof(req)); + _icmp_request.icmp_hun.ih_idseq.icd_seq = sent_seq = seq++; + _icmp_request.icmp_cksum = ping_checksum(reinterpret_cast(&_icmp_request), sizeof(_icmp_request)); // send echo request gettimeofday(&start, NULL); - if (sendto(socketId, &req, sizeof(icmp), 0, (struct sockaddr *) addr, sizeof(*addr)) <= 0) + if (sendto(socketId, &_icmp_request, sizeof(icmp), 0, (struct sockaddr *) &targetAddress, sizeof(targetAddress)) <= 0) return { 0, "EPING_SEND: " + QObject::tr("Sending echo request failed") }; // receive response (if any) - sockaddr_in r_addr; - slen = sizeof(r_addr); + sockaddr_in remove_addr; + slen = sizeof(remove_addr); int rlen; icmp resp; - while ((rlen = recvfrom(socketId, &resp, sizeof(icmp), 0, (struct sockaddr *) &r_addr, &slen)) > 0) + while ((rlen = recvfrom(socketId, &resp, sizeof(icmp), 0, (struct sockaddr *) &remove_addr, &slen)) > 0) { gettimeofday(&end, NULL); diff --git a/src/ui/windows/w_PreferencesWindow.cpp b/src/ui/windows/w_PreferencesWindow.cpp index 18e1b229..c41835f1 100644 --- a/src/ui/windows/w_PreferencesWindow.cpp +++ b/src/ui/windows/w_PreferencesWindow.cpp @@ -1012,6 +1012,7 @@ void PreferencesWindow::on_qvProxyCustomProxy_clicked() SET_PROXY_UI_ENABLE(true); qvProxyNoProxy->setChecked(false); qvProxySystemProxy->setChecked(false); + qvProxyCustomProxy->setChecked(true); } void PreferencesWindow::on_qvProxySystemProxy_clicked() @@ -1020,6 +1021,7 @@ void PreferencesWindow::on_qvProxySystemProxy_clicked() SET_PROXY_UI_ENABLE(false); qvProxyNoProxy->setChecked(false); qvProxyCustomProxy->setChecked(false); + qvProxySystemProxy->setChecked(true); } void PreferencesWindow::on_qvProxyNoProxy_clicked() @@ -1028,6 +1030,7 @@ void PreferencesWindow::on_qvProxyNoProxy_clicked() SET_PROXY_UI_ENABLE(false); qvProxySystemProxy->setChecked(false); qvProxyCustomProxy->setChecked(false); + qvProxyNoProxy->setChecked(true); } void PreferencesWindow::on_DnsFreedomCb_stateChanged(int arg1) @@ -1117,11 +1120,20 @@ void PreferencesWindow::on_latencyTCPingRB_clicked() LOADINGCHECK CurrentConfig.networkConfig.latencyTestingMethod = TCPING; latencyICMPingRB->setChecked(false); + latencyTCPingRB->setChecked(true); } void PreferencesWindow::on_latencyICMPingRB_clicked() { LOADINGCHECK +#ifdef Q_OS_MAC + #warning No ICMPing support on macOS + CurrentConfig.networkConfig.latencyTestingMethod = TCPING; + latencyICMPingRB->setChecked(false); + latencyTCPingRB->setChecked(true); +#else CurrentConfig.networkConfig.latencyTestingMethod = ICMPING; + latencyICMPingRB->setChecked(true); latencyTCPingRB->setChecked(false); +#endif }