diff --git a/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/AbstractTorWrapper.java b/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/AbstractTorWrapper.java index fa2aae4b466332416c62abfbe2e958b0978718dc..fb7722287148d28e00e3a48731584be42f0faedf 100644 --- a/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/AbstractTorWrapper.java +++ b/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/AbstractTorWrapper.java @@ -466,8 +466,11 @@ abstract class AbstractTorWrapper implements EventHandler, TorWrapper { } } else if (msg.startsWith("CLOCK_SKEW")) { Long skew = parseLongArgument(msg, "SKEW"); - if (skew != null && LOG.isLoggable(WARNING)) { - LOG.warning("Clock is skewed by " + skew + " seconds"); + if (skew != null) { + if (LOG.isLoggable(WARNING)) { + LOG.warning("Clock is skewed by " + skew + " seconds"); + } + state.onClockSkewDetected(skew); } } } @@ -596,8 +599,7 @@ abstract class AbstractTorWrapper implements EventHandler, TorWrapper { bootstrapPercentage = percentage; if (observer != null) { // Notify the observer on the event executor - eventExecutor.execute(() -> - observer.onBootstrapPercentage(percentage)); + eventExecutor.execute(() -> observer.onBootstrapPercentage(percentage)); } updateState(); } @@ -699,8 +701,14 @@ abstract class AbstractTorWrapper implements EventHandler, TorWrapper { private synchronized void onHsDescriptorUploaded(String onion) { if (observer != null) { // Notify the observer on the event executor - eventExecutor.execute(() -> - observer.onHsDescriptorUpload(onion)); + eventExecutor.execute(() -> observer.onHsDescriptorUpload(onion)); + } + } + + private synchronized void onClockSkewDetected(long skewSeconds) { + if (observer != null) { + // Notify the observer on the event executor + eventExecutor.execute(() -> observer.onClockSkewDetected(skewSeconds)); } } } diff --git a/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/TorWrapper.java b/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/TorWrapper.java index d5825b417fede8dc4572ce412ad657f3ace98998..d3c2efd9e13e65e553ab67cb44440248f37bbf18 100644 --- a/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/TorWrapper.java +++ b/onionwrapper-core/src/main/java/org/briarproject/onionwrapper/TorWrapper.java @@ -148,6 +148,11 @@ public interface TorWrapper { * Called whenever a hidden service descriptor is uploaded. */ void onHsDescriptorUpload(String onion); + + /** + * Called whenever Tor detects that the system clock is skewed. + */ + void onClockSkewDetected(long skewSeconds); } class HiddenServiceProperties {