kopia lustrzana https://github.com/ryukoposting/Signal-Android
Improve network reliability.
rodzic
28531bb415
commit
54ffb4ad7b
|
@ -73,7 +73,8 @@ class InstrumentationApplicationDependencyProvider(application: Application, def
|
||||||
emptyList(),
|
emptyList(),
|
||||||
Optional.of(SignalServiceNetworkAccess.DNS),
|
Optional.of(SignalServiceNetworkAccess.DNS),
|
||||||
Optional.empty(),
|
Optional.empty(),
|
||||||
Base64.decode(BuildConfig.ZKGROUP_SERVER_PUBLIC_PARAMS)
|
Base64.decode(BuildConfig.ZKGROUP_SERVER_PUBLIC_PARAMS),
|
||||||
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
serviceNetworkAccessMock = mock {
|
serviceNetworkAccessMock = mock {
|
||||||
|
|
|
@ -132,7 +132,8 @@ public class BackgroundMessageRetriever {
|
||||||
* care of it.
|
* care of it.
|
||||||
*/
|
*/
|
||||||
public static boolean shouldIgnoreFetch() {
|
public static boolean shouldIgnoreFetch() {
|
||||||
return ApplicationDependencies.getAppForegroundObserver().isForegrounded();
|
return ApplicationDependencies.getAppForegroundObserver().isForegrounded() &&
|
||||||
|
ApplicationDependencies.getSignalServiceNetworkAccess().supportsWebsockets();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String logSuffix(long startTime) {
|
private static String logSuffix(long startTime) {
|
||||||
|
|
|
@ -132,7 +132,7 @@ public class IncomingMessageObserver {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDecryptionDrained() {
|
public boolean isDecryptionDrained() {
|
||||||
return decryptionDrained;
|
return decryptionDrained || !networkAccess.supportsWebsockets();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void notifyDecryptionsDrained() {
|
public void notifyDecryptionsDrained() {
|
||||||
|
@ -174,12 +174,13 @@ public class IncomingMessageObserver {
|
||||||
Log.d(TAG, "Removed old keep web socket open requests.");
|
Log.d(TAG, "Removed old keep web socket open requests.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG, String.format("Network: %s, Foreground: %s, FCM: %s, Stay open requests: [%s], Censored: %s, Registered: %s, Proxy: %s, Force websocket: %s",
|
Log.d(TAG, String.format("Network: %s, Foreground: %s, FCM: %s, Stay open requests: [%s], Censored: %s, Supports websockets: %s, Registered: %s, Proxy: %s, Force websocket: %s",
|
||||||
hasNetwork, appVisible, fcmEnabled, Util.join(keepAliveTokens.entrySet(), ","), networkAccess.isCensored(), registered, hasProxy, forceWebsocket));
|
hasNetwork, appVisible, fcmEnabled, Util.join(keepAliveTokens.entrySet(), ","), networkAccess.isCensored(), networkAccess.supportsWebsockets(), registered, hasProxy, forceWebsocket));
|
||||||
|
|
||||||
return registered &&
|
return registered &&
|
||||||
(appVisible || !fcmEnabled || forceWebsocket || Util.hasItems(keepAliveTokens)) &&
|
(appVisible || !fcmEnabled || forceWebsocket || Util.hasItems(keepAliveTokens)) &&
|
||||||
hasNetwork;
|
hasNetwork &&
|
||||||
|
networkAccess.supportsWebsockets();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void waitForConnectionNecessary() {
|
private synchronized void waitForConnectionNecessary() {
|
||||||
|
|
|
@ -173,7 +173,8 @@ open class SignalServiceNetworkAccess(context: Context) {
|
||||||
interceptors,
|
interceptors,
|
||||||
Optional.of(DNS),
|
Optional.of(DNS),
|
||||||
Optional.empty(),
|
Optional.empty(),
|
||||||
zkGroupServerPublicParams
|
zkGroupServerPublicParams,
|
||||||
|
false
|
||||||
)
|
)
|
||||||
|
|
||||||
private val censorshipConfiguration: Map<Int, SignalServiceConfiguration> = mapOf(
|
private val censorshipConfiguration: Map<Int, SignalServiceConfiguration> = mapOf(
|
||||||
|
@ -224,7 +225,8 @@ open class SignalServiceNetworkAccess(context: Context) {
|
||||||
interceptors,
|
interceptors,
|
||||||
Optional.of(DNS),
|
Optional.of(DNS),
|
||||||
if (SignalStore.proxy().isProxyEnabled) Optional.ofNullable(SignalStore.proxy().proxy) else Optional.empty(),
|
if (SignalStore.proxy().isProxyEnabled) Optional.ofNullable(SignalStore.proxy().proxy) else Optional.empty(),
|
||||||
zkGroupServerPublicParams
|
zkGroupServerPublicParams,
|
||||||
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
open fun getConfiguration(): SignalServiceConfiguration {
|
open fun getConfiguration(): SignalServiceConfiguration {
|
||||||
|
@ -267,6 +269,10 @@ open class SignalServiceNetworkAccess(context: Context) {
|
||||||
return defaultCensoredCountryCodes.contains(countryCode)
|
return defaultCensoredCountryCodes.contains(countryCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun supportsWebsockets(): Boolean {
|
||||||
|
return !isCensored() || getConfiguration().supportsWebSockets()
|
||||||
|
}
|
||||||
|
|
||||||
private fun buildGConfiguration(
|
private fun buildGConfiguration(
|
||||||
hostConfigs: List<HostConfig>
|
hostConfigs: List<HostConfig>
|
||||||
): SignalServiceConfiguration {
|
): SignalServiceConfiguration {
|
||||||
|
@ -291,7 +297,8 @@ open class SignalServiceNetworkAccess(context: Context) {
|
||||||
interceptors,
|
interceptors,
|
||||||
Optional.of(DNS),
|
Optional.of(DNS),
|
||||||
Optional.empty(),
|
Optional.empty(),
|
||||||
zkGroupServerPublicParams
|
zkGroupServerPublicParams,
|
||||||
|
true
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ public final class SignalServiceConfiguration {
|
||||||
private final Optional<Dns> dns;
|
private final Optional<Dns> dns;
|
||||||
private final Optional<SignalProxy> proxy;
|
private final Optional<SignalProxy> proxy;
|
||||||
private final byte[] zkGroupServerPublicParams;
|
private final byte[] zkGroupServerPublicParams;
|
||||||
|
private final boolean supportsWebSocket;
|
||||||
|
|
||||||
public SignalServiceConfiguration(SignalServiceUrl[] signalServiceUrls,
|
public SignalServiceConfiguration(SignalServiceUrl[] signalServiceUrls,
|
||||||
Map<Integer, SignalCdnUrl[]> signalCdnUrlMap,
|
Map<Integer, SignalCdnUrl[]> signalCdnUrlMap,
|
||||||
|
@ -31,7 +32,8 @@ public final class SignalServiceConfiguration {
|
||||||
List<Interceptor> networkInterceptors,
|
List<Interceptor> networkInterceptors,
|
||||||
Optional<Dns> dns,
|
Optional<Dns> dns,
|
||||||
Optional<SignalProxy> proxy,
|
Optional<SignalProxy> proxy,
|
||||||
byte[] zkGroupServerPublicParams)
|
byte[] zkGroupServerPublicParams,
|
||||||
|
boolean supportsWebSocket)
|
||||||
{
|
{
|
||||||
this.signalServiceUrls = signalServiceUrls;
|
this.signalServiceUrls = signalServiceUrls;
|
||||||
this.signalCdnUrlMap = signalCdnUrlMap;
|
this.signalCdnUrlMap = signalCdnUrlMap;
|
||||||
|
@ -43,6 +45,7 @@ public final class SignalServiceConfiguration {
|
||||||
this.dns = dns;
|
this.dns = dns;
|
||||||
this.proxy = proxy;
|
this.proxy = proxy;
|
||||||
this.zkGroupServerPublicParams = zkGroupServerPublicParams;
|
this.zkGroupServerPublicParams = zkGroupServerPublicParams;
|
||||||
|
this.supportsWebSocket = supportsWebSocket;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SignalServiceUrl[] getSignalServiceUrls() {
|
public SignalServiceUrl[] getSignalServiceUrls() {
|
||||||
|
@ -84,4 +87,8 @@ public final class SignalServiceConfiguration {
|
||||||
public Optional<SignalProxy> getSignalProxy() {
|
public Optional<SignalProxy> getSignalProxy() {
|
||||||
return proxy;
|
return proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean supportsWebSockets() {
|
||||||
|
return supportsWebSocket;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue