hoehermann / purple-signald

Pidgin libpurple bridge to signald.
GNU General Public License v3.0
151 stars 19 forks source link

Failure after update "Must have either a UUID or E164 number!" #22

Closed mooomooo closed 4 years ago

mooomooo commented 4 years ago

I upgraded bitlbee / libpurple / this plugin / signald recently (after several months), and the plugin no longer connects to the signald. The signald logs show (full trace at bottom):

23:34:22.616 [socketlistener] ERROR io.finn.signald.SocketHandler - Catching    
com.fasterxml.jackson.databind.JsonMappingException: Must have either a UUID or E164 number! 
...            
Caused by: java.lang.AssertionError: Must have either a UUID or E164 number!    
   at org.whispersystems.signalservice.api.push.SignalServiceAddress.<init>(SignalServiceAddress.java:35) ~[signal-service-java-2.15.3_unofficial_12.jar:?]
...

I assume something in the settings needed to have changed from before?

Full trace:

23:34:21.609 [socketlistener] INFO  io.finn.signald.SocketHandler - Client connected
23:34:22.611 [socketlistener] INFO  manager-**********65 - Creating new manager for **********65 (stored at /home/gradle/.config/signald)
23:34:22.615 [socketlistener] INFO  io.finn.signald.storage.AccountData - Migrating thread store
23:34:22.616 [socketlistener] ERROR io.finn.signald.SocketHandler - Catching
com.fasterxml.jackson.databind.JsonMappingException: Must have either a UUID or E164 number!
 at [Source: (File); line: 488, column: 3] (through reference chain: io.finn.signald.storage.AccountData["threadStore"])
   at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:278) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:611) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.deser.SettableBeanProperty._throwAsIOE(SettableBeanProperty.java:599) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:143) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4014) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2903) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   at io.finn.signald.storage.AccountData.load(AccountData.java:74) ~[signald.jar:unspecified]
   at io.finn.signald.Manager.init(Manager.java:286) ~[signald.jar:unspecified]
   at io.finn.signald.Manager.get(Manager.java:156) ~[signald.jar:unspecified]
   at io.finn.signald.Manager.get(Manager.java:142) ~[signald.jar:unspecified]
   at io.finn.signald.SocketHandler.subscribe(SocketHandler.java:508) ~[signald.jar:unspecified]
   at io.finn.signald.SocketHandler.handleRequest(SocketHandler.java:144) [signald.jar:unspecified]
   at io.finn.signald.SocketHandler.run(SocketHandler.java:107) [signald.jar:unspecified]
   at java.lang.Thread.run(Thread.java:748) [?:1.8.0_262]
Caused by: java.lang.AssertionError: Must have either a UUID or E164 number!
   at org.whispersystems.signalservice.api.push.SignalServiceAddress.<init>(SignalServiceAddress.java:35) ~[signal-service-java-2.15.3_unofficial_12.jar:?]
   at org.whispersystems.signalservice.api.push.SignalServiceAddress.<init>(SignalServiceAddress.java:51) ~[signal-service-java-2.15.3_unofficial_12.jar:?]
   at org.whispersystems.signalservice.api.push.SignalServiceAddress.<init>(SignalServiceAddress.java:47) ~[signal-service-java-2.15.3_unofficial_12.jar:?]
   at io.finn.signald.util.AddressUtil.fromIdentifier(AddressUtil.java:33) ~[signald.jar:unspecified]
   at io.finn.signald.storage.ContactStore.getContact(ContactStore.java:44) ~[signald.jar:unspecified]
   at io.finn.signald.storage.AccountData.setThreadStore(AccountData.java:223) ~[signald.jar:unspecified]
   at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[?:?]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_262]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_262]
   at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:141) ~[jackson-databind-2.9.9.2.jar:2.9.9.2]
   ... 12 more
23:36:22.609 [socketlistener] ERROR io.finn.signald.SocketHandler - Catching
java.lang.NullPointerException: null
   at io.finn.signald.SocketHandler.unsubscribe(SocketHandler.java:523) ~[signald.jar:unspecified]
   at io.finn.signald.SocketHandler.handleRequest(SocketHandler.java:147) [signald.jar:unspecified]
   at io.finn.signald.SocketHandler.run(SocketHandler.java:107) [signald.jar:unspecified]
   at java.lang.Thread.run(Thread.java:748) [?:1.8.0_262]
23:36:22.610 [socketlistener] ERROR io.finn.signald.SocketHandler - Catching
java.net.SocketException: Not open
   at org.newsclub.net.unix.AFUNIXSocketImpl.validFdOrException(AFUNIXSocketImpl.java:424) ~[junixsocket-common-2.3.2.jar:?]
   at org.newsclub.net.unix.AFUNIXSocketImpl.access$200(AFUNIXSocketImpl.java:46) ~[junixsocket-common-2.3.2.jar:?]
   at org.newsclub.net.unix.AFUNIXSocketImpl$AFUNIXInputStream.read(AFUNIXSocketImpl.java:318) ~[junixsocket-common-2.3.2.jar:?]
   at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:1.8.0_262]
   at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:1.8.0_262]
   at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:1.8.0_262]
   at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[?:1.8.0_262]
   at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:1.8.0_262]
   at java.io.BufferedReader.readLine(BufferedReader.java:324) ~[?:1.8.0_262]
   at java.io.BufferedReader.readLine(BufferedReader.java:389) ~[?:1.8.0_262]
   at io.finn.signald.SocketHandler.run(SocketHandler.java:88) [signald.jar:unspecified]
   at java.lang.Thread.run(Thread.java:748) [?:1.8.0_262]
hoehermann commented 4 years ago

What version of signald have you updated to?

If I read the log correctly, this happens while handling the subscription request in io.finn.signald.SocketHandler.subscribe(SocketHandler.java:508). Maybe the username configured in the Pidgin account is malformed (missing the +, has a space at the end) and the implementation was more tolerant before the update.

mooomooo commented 4 years ago

I used the docker image uploaded to dockerhub 2 days ago, so presumably the latest git version of signald. The username in bitlbee appears to be formatted appropriately, username = `+xxxxxxxxx65'.

thefinn93 commented 4 years ago

This is a signald bug, unless i'm missing something. It looks like it broke while trying to load the data file. Please file an issue on signald

mooomooo commented 4 years ago

Ah ok thanks, I filed it over there; we can close this issue here.