on main help sign in
Forkgram 12.10.7 snapshot

Source: https://github.com/forkgram/TelegramAndroid/commit/5b9b863696c0598ec0249b0d9293287304d2dbf8 Forkgram-Commit: 5b9b863696c0598ec0249b0d9293287304d2dbf8 Forkgram-Version: 12.10.7 Telegram-Base: dc780e81ed1261c369c27870e8e0999a1eb0b600 (update to 12.10.5) Tree is Forkgram's dev branch at that commit with the .github folder removed.

commita26309186fbee91195eccf576ac10b4b4c1d2820 authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> dateTue 6 Oct 2026, 18:28 (1 week ago) parentd4407dd
3 files changed+22−17
TMessagesProj/jni/voip/org_telegram_messenger_voip_Instance.cpp+20−13 TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java+1−1 TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java+1−3
TMessagesProj/jni/voip/org_telegram_messenger_voip_Instance.cpp+20−13
@@ -940,29 +940,36 @@ JNIEXPORT jlong JNICALL Java_org_telegram_messenger_voip_NativeInstance_makeNati
940940 for (int i = 0, size = env->GetArrayLength(endpoints); i < size; i++) {
941941 JavaObject endpointObject(env, env->GetObjectArrayElement(endpoints, i));
942942 bool isRtc = endpointObject.getBooleanField("isRtc");
943− if (isRtc) {
943+ const auto ipv4 = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4"));
944+ const auto ipv6 = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv6"));
945+ // Push each server for both address families (same id), like tdesktop does,
946+ // so relays stay reachable on IPv6-only networks where IPv4 sockets fail.
947+ const auto pushServer = [&](const std::string &host, bool isTurn, bool isTcp) {
948+ if (host.empty()) {
949+ return;
950+ }
944951 RtcServer rtcServer;
945952 rtcServer.id = static_cast<uint8_t>(endpointObject.getIntField("reflectorId"));
946− rtcServer.host = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4"));
953+ rtcServer.host = host;
947954 rtcServer.port = static_cast<uint16_t>(endpointObject.getIntField("port"));
948955 rtcServer.login = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("username"));
949956 rtcServer.password = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("password"));
950− rtcServer.isTurn = endpointObject.getBooleanField("turn");
957+ rtcServer.isTurn = isTurn;
958+ rtcServer.isTcp = isTcp;
951959 descriptor.rtcServers.push_back(std::move(rtcServer));
960+ };
961+ if (isRtc) {
962+ const auto isTurn = endpointObject.getBooleanField("turn");
963+ pushServer(ipv4, isTurn, false);
964+ pushServer(ipv6, isTurn, false);
952965 } else {
953− RtcServer rtcServer;
954− rtcServer.id = static_cast<uint8_t>(endpointObject.getIntField("reflectorId"));
955− rtcServer.host = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4"));
956− rtcServer.port = static_cast<uint16_t>(endpointObject.getIntField("port"));
957− rtcServer.login = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("username"));
958− rtcServer.password = tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("password"));
959− rtcServer.isTurn = true;
960− rtcServer.isTcp = endpointObject.getBooleanField("tcp");
961− descriptor.rtcServers.push_back(std::move(rtcServer));
966+ const auto isTcp = endpointObject.getBooleanField("tcp");
967+ pushServer(ipv4, true, isTcp);
968+ pushServer(ipv6, true, isTcp);
962969
963970 Endpoint endpoint;
964971 endpoint.endpointId = endpointObject.getLongField("id");
965− endpoint.host = EndpointHost{tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv4")), tgvoip::jni::JavaStringToStdString(env, endpointObject.getStringField("ipv6"))};
972+ endpoint.host = EndpointHost{ipv4, ipv6};
966973 endpoint.port = static_cast<uint16_t>(endpointObject.getIntField("port"));
967974 endpoint.type = parseEndpointType(env, endpointObject.getIntField("type"));
968975 jbyteArray peerTag = endpointObject.getByteArrayField("peerTag");
TMessagesProj/src/main/java/org/telegram/ui/ActionBar/Theme.java+1−1
@@ -4279,7 +4279,7 @@ public class Theme {
42794279 oldEditorNew.commit();
42804280 }
42814281
4282− selectedAutoNightType = preferences.getInt("selectedAutoNightType", Build.VERSION.SDK_INT >= 29 ? AUTO_NIGHT_TYPE_SYSTEM : AUTO_NIGHT_TYPE_NONE);
4282+ selectedAutoNightType = preferences.getInt("selectedAutoNightType", AUTO_NIGHT_TYPE_SYSTEM);
42834283 autoNightScheduleByLocation = preferences.getBoolean("autoNightScheduleByLocation", false);
42844284 autoNightBrighnessThreshold = preferences.getFloat("autoNightBrighnessThreshold", 0.25f);
42854285 autoNightDayStartTime = preferences.getInt("autoNightDayStartTime", 22 * 60);
TMessagesProj/src/main/java/org/telegram/ui/ThemeActivity.java+1−3
@@ -709,9 +709,7 @@ public class ThemeActivity extends BaseFragment implements NotificationCenter.No
709709 nightDisabledRow = rowCount++; // TYPE_THEME_TYPE
710710 nightScheduledRow = rowCount++; // TYPE_THEME_TYPE
711711 nightAutomaticRow = rowCount++;
712− if (Build.VERSION.SDK_INT >= 29) {
713− nightSystemDefaultRow = rowCount++;
714− }
712+ nightSystemDefaultRow = rowCount++;
715713 nightTypeInfoRow = rowCount++;
716714 if (Theme.selectedAutoNightType == Theme.AUTO_NIGHT_TYPE_SCHEDULED) {
717715 scheduleHeaderRow = rowCount++;