diff options
author | Samuel Holland <samuel@sholland.org> | 2017-08-23 23:43:58 -0500 |
---|---|---|
committer | Samuel Holland <samuel@sholland.org> | 2017-08-23 23:43:58 -0500 |
commit | 95384851cd829b33dee99b3e7d5c5423cb69716f (patch) | |
tree | a1310bdea0873029b51c6624420ad44bc5ab0886 /app/src/main/java/com/wireguard/config/Peer.java | |
parent | VpnService: Fix some edge cases in ConfigUpdater (diff) | |
download | wireguard-android-95384851cd829b33dee99b3e7d5c5423cb69716f.tar.xz wireguard-android-95384851cd829b33dee99b3e7d5c5423cb69716f.zip |
Config/Interface/Peer: Fix some missed change notifications
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/config/Peer.java')
-rw-r--r-- | app/src/main/java/com/wireguard/config/Peer.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/app/src/main/java/com/wireguard/config/Peer.java b/app/src/main/java/com/wireguard/config/Peer.java index f0e24162..912e8bf5 100644 --- a/app/src/main/java/com/wireguard/config/Peer.java +++ b/app/src/main/java/com/wireguard/config/Peer.java @@ -12,7 +12,7 @@ import com.android.databinding.library.baseAdapters.BR; public class Peer extends BaseObservable implements Copyable<Peer>, Observable { private String allowedIPs; - private Config config; + private final Config config; private String endpoint; private String persistentKeepalive; private String publicKey; @@ -38,6 +38,7 @@ public class Peer extends BaseObservable implements Copyable<Peer>, Observable { endpoint = source.endpoint; persistentKeepalive = source.persistentKeepalive; publicKey = source.publicKey; + notifyChange(); } @Bindable @@ -60,23 +61,23 @@ public class Peer extends BaseObservable implements Copyable<Peer>, Observable { return publicKey; } - public void parseFrom(final String line) { + public void parse(final String line) { final Attribute key = Attribute.match(line); if (key == Attribute.ALLOWED_IPS) - allowedIPs = key.parseFrom(line); + setAllowedIPs(key.parseFrom(line)); else if (key == Attribute.ENDPOINT) - endpoint = key.parseFrom(line); + setEndpoint(key.parseFrom(line)); else if (key == Attribute.PERSISTENT_KEEPALIVE) - persistentKeepalive = key.parseFrom(line); + setPersistentKeepalive(key.parseFrom(line)); else if (key == Attribute.PUBLIC_KEY) - publicKey = key.parseFrom(line); + setPublicKey(key.parseFrom(line)); else throw new IllegalArgumentException(line); } public void removeSelf() { - config.getPeers().remove(this); - config = null; + if (!config.getPeers().remove(this)) + throw new IllegalStateException("This peer was already removed from its config"); } public void setAllowedIPs(String allowedIPs) { |