Reviving Syncthing-Lite: Fix TLS v1.3 compatibility

Hi,

I’ve tried to compile the app and see what the issue is. Indeed, as mentioned in Syncthing lite no longer works.... it’s the TLSV1_ALERT_PROTOCOL_VERSION error.

I’ll see if that can be bumped to TLSv1.3 somehow. But my first attempt to compile on modern Android Studio failed for hours, not being able to fix all issues (hundreds of errors). I’ve now managed to get a working APK on Android studio dated back to Dec’2018.

Another thing that’s making me feel uncomfortable is, I’ve switched in a repo for the now officially unavailable ANKO dependency that still hosts it.

maven { url “https://artifactory.appodeal.com/appodeal-public/” }

Maybe a coincidential sighting, but after my first build where all those modules associated with it were loaded into the Android java buildEnv by gradle, I’ve noticed this running process on my build machine:

C:\WINDOWS\explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b} -Embedding

If you put the string into Google, there are warnings that this may be an exploit indicator, as Explorer.exe is running below the “svchost.exe” process. Oh my :frowning: .

If someone is reading this and likes to help me migrating the kotlin project and dependencies to a recent Android Studio build, we could work together. Please contact me. I’ve already re-written some classes to build using currently supported dependencies, like AppIntro (continued in a fork on github) and sf4j.

As well if anyone has a hint for me, how that “old java 1.8 compiled thingy” using gradle 4.6 could get TLS v1.3 activated.

failed to connect to DeviceAddress(deviceId=DeviceId(deviceId=RF2FVSV), instanceId=null, address=relay://services.ff3l.net:22067, producer=UNKNOWN, score=2108, lastModified=Tue Jul 01 10:23:34 GMT 2025)
javax.net.ssl.SSLHandshakeException: Read error: ssl=0x76a898c39858: Failure in SSL library, usually a protocol error
error:1000042e:SSL routines:OPENSSL_internal:TLSV1_ALERT_PROTOCOL_VERSION (external/boringssl/src/ssl/tls_record.cc:592 0x76aa28cb8c60:0x00000003)
at com.android.org.conscrypt.SSLUtils.toSSLHandshakeException(SSLUtils.java:356)
at com.android.org.conscrypt.ConscryptEngine.convertException(ConscryptEngine.java:1127)
at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:912)
at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:740)
at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:705)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:896)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.-$$Nest$mprocessDataFromSocket(Unknown Source:0)
at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:236)
at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:218)
at com.android.org.conscrypt.ConscryptEngineSocket.waitForHandshake(ConscryptEngineSocket.java:609)
at com.android.org.conscrypt.ConscryptEngineSocket.-$$Nest$mwaitForHandshake(Unknown Source:0)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:833)
at java.io.DataInputStream.readFully(DataInputStream.java:203)
at java.io.DataInputStream.readInt(DataInputStream.java:394)
at net.syncthing.java.bep.connectionactor.HelloMessageHandler.receiveHelloMessage(HelloMessageHandler.kt:63)
at net.syncthing.java.bep.connectionactor.ConnectionActor$createInstance$1$invokeSuspend$$inlined$use$lambda$1$2.invokeSuspend(Instance.kt:50)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
at kotlinx.coroutines.DispatchedTask$DefaultImpls.run(Dispatched.kt:235)
at kotlinx.coroutines.DispatchedContinuation.run(Dispatched.kt:81)
at kotlinx.coroutines.scheduling.Task.run(Tasks.kt:94)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:732)
Caused by: javax.net.ssl.SSLProtocolException: Read error: ssl=0x76a898c39858: Failure in SSL library, usually a protocol error
error:1000042e:SSL routines:OPENSSL_internal:TLSV1_ALERT_PROTOCOL_VERSION (external/boringssl/src/ssl/tls_record.cc:592 0x76aa28cb8c60:0x00000003)
at com.android.org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(Native Method)
at com.android.org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:570)
at com.android.org.conscrypt.ConscryptEngine.readPlaintextDataDirect(ConscryptEngine.java:1088)
at com.android.org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:1072)
at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:869)
... 20 more
2 Likes

Ahh, here you go:

I’m using the thread to document getting forward in small steps :slight_smile: . Depending on how much I succeed with reviving syncthing-lite, there’ll maybe also a git repo fork.

Now, checking if I can still transfer files.


loaded device id from cert = DeviceId(deviceId=X6RRAVU)
keystore ready, device id = DeviceId(deviceId=X6RRAVU)
opening relay connection
connecting to relay = services.ff3l.net/178.63.79.XX:22067 (temporary protocol mode)
sending connect request for device = DeviceId(deviceId=RF2FVSV)
receiving session invitation
received message = Message(type=6, size=84)
closing connection (temporary protocol mode)
onnecting to relay = services.ff3l.net/178.63.79.XX:22067 (session mode)
sending join session request, session key = XXX
reading relay response
response = Response{code=0, message=success}
relay connection ready
wrapping plain socket, server mode = false
Sending hello message
remote ssl certificate match deviceId = DeviceId(deviceId=RF2FVSV)
Received hello message, deviceName=a1, clientName=syncthing, clientVersion=v1.29.7

2 Likes

For some reason not clear to me, I can’t receive the ClusterConfig message(?)

java.io.IOException: Error getting ClusterConfig – receivePostAuthMessage() == null
at net.syncthing.java.bep.connectionactor.ConnectionActor$createInstance$1.invokeSuspend(Instance.kt:85)                                                                                            

@Jacobthegr8

Could you pls help me on this by telling which Syncthing v1.x you ran on your server where the app still could connect fine?

Uff, I had to learn much from both the go bep and the existing kotlin code :melting_face: . But I can now connect successfully to an old syncthing v1.13.1 node.

The BEP hello code was buggy and aborted connection.

1 Like

I don’t really remember but I think I used 1.27.12 just fine a year ago. I used it on a daily basis so the syncthing last seen date was 2025-04-13. I really hope that is the syncthing lite version and not the full fat syncthing I installed on it later. All my “servers” are really just windows 10 machines I VNC to. They were running auto updating versions installed using the Syncthing trayzor exe.

Did you fix it that quickly? You said you could connect just fine.

1 Like

I am currently investigating. I’ve connected fine to v1.13.1 - index received - could download a file. (…) I’m now freshly setting up one-by-one to see where it breaks.

1 Like

The point where it breaks for me is between v1.18.0 and v1.18.1, but I can’t discover the exact root source yet. What I observe is, it could have to do sth with index handling.

1: android stlite app

2: syncthing v1.18.1 on windows

Log: 1:

Received hello message: containing device name (VM-Win11-24H2), client name (syncthing), and client version (v1.18.1).
Send delta index information: Device = 7FA4CR5, Index = 2819811225842345500, Max (Local) Sequence = 12.

… after that, connection goes silent, but not disconnected :man_shrugging:, idk why.

I expect this to happen instead (as it was von v1.18.0 and older):

1:

2025-07-02 03:20:23.482  3369-3392  HelloMessageHandler     net.syncthing.lite                   I  Received hello message: containing device name (VM-Win11-24H2), client name (syncthing), and client version (v1.17.0).
2025-07-02 03:20:23.647  3369-3391  ClusterConfigHandler    net.syncthing.lite                   I  Send delta index information: Device = 7FA4CR5, Index = 2819811225842345500, Max (Local) Sequence = 12.
2025-07-02 03:20:23.680  3369-3391  ClusterConfigHandler    net.syncthing.lite                   I  Folder ClusterConfigFolderInfo(folderId=default, label=Default Folder, isAnnounced=true, isShared=true, isDeviceInSharedFolderWhitelist=false) shared from device DeviceId(deviceId=7FA4CR5).
2025-07-02 03:20:23.685  3369-3391  IndexHandler            net.syncthing.lite                   D  Acquired folder information from the cluster configuration: default.
2025-07-02 03:20:23.733  3369-3391  *nnectionActorGenerator net.syncthing.lite                   D  Connected to device DeviceAddress(deviceId=DeviceId(deviceId=7FA4CR5), instanceId=null, address=tcp://X:22000, producer=UNKNOWN, score=41, lastModified=Wed Jul 02 01:20:22 GMT 2025).
2025-07-02 03:20:23.774  3369-3409  *xMessageQueueProcessor net.syncthing.lite                   I  Received index message event, preparing to process message.
2025-07-02 03:20:23.784  3369-3396  *xMessageQueueProcessor net.syncthing.lite                   I  Processing an index message with 12 records.
2025-07-02 03:20:23.799  3369-3396  IndexMessageProcessor   net.syncthing.lite                   D  Processing 12 index records for folder ID default.
2025-07-02 03:20:23.873  3369-3396  *xMessageQueueProcessor net.syncthing.lite                   I  Processed 12 index records, and acquired 12 in 79 milliseconds

The diff shows, sth regarding index handling has taken place. Comparing v1.18.0...v1.18.1 · syncthing/syncthing · GitHub

I would be very thankful if one of the Syncthing code experts in here could give me a hint where I should look next (within the syncthing lite connection/index handling process) to troubleshoot the kotlin code.

Btw I’ve also noticed the android app doesn’t know BEP’s ClusterConfig.Folder.paused field yet. Is this mandatory since v1.18.1 or am I looking into the wrong direction?

By no means am I a programmer so I couldn’t help you :sweat_smile: But thank you for spearheading the diagnosis. Your efforts are greatly appreciated for looking into it though. It would be cool if syncthing lite was re-born.

Not seeing anything obvious in the 1.18.0-to-1.18.1 diffs that I think should matter, sorry. You can run with STTRACE=protocol on the Syncthing side as well to get a bit more info on what it thinks it sends and receives.

1 Like

According to https://docs.syncthing.net/users/releases, Go version changed from v1.16.5 to v1.16.6. Not sure if that is the actual culprit though.

1 Like

Thank you. I’ll post the protocol logs and also try to recompile that in-between old versions so I could test more granular by reverting single commits next time.

Sidenotes for me:

There was a PR for v1.18.1 regarding the index handling and some problem report on the forum by tomasz86 that connections stall - like stlite does since v1.18.1+.

Don’t know if it is related… Remote device appears connected, but synchronisation is stuck

1 Like

2: syncthing.exe on Windows, v1.18.1 tells me:

[7FA4C] 2025/07/02 20:30:05.896338 model.go:2252: INFO: Device HZK5HEL client is "syncthing-java 0.0" named "Unknown Android SDK built for x86_64" at X:22000-192.168.X:51272/tcp-server/TLS1.3-TLS_CHACHA20_POLY1305_SHA256
[7FA4C] 2025/07/02 20:30:05.899199 protocol.go:742: DEBUG: Writing cluster-config
[7FA4C] 2025/07/02 20:30:05.902162 protocol.go:781: DEBUG: wrote 202 bytes on the wire (2 bytes length, 0 bytes header, 4 bytes message length, 196 bytes message), err=<nil>
[7FA4C] 2025/07/02 20:30:06.094603 protocol.go:435: DEBUG: handle cluster-config message
[7FA4C] 2025/07/02 20:30:06.096240 indexhandler.go:70: INFO: Device HZK5HEL folder "Default Folder" (default) has mismatching index ID for us (0x2721FB5EB1FDE61C != 0xE0D597E00DAC8CB7)
[7FA4C] 2025/07/02 20:30:06.098646 protocol.go:742: DEBUG: Writing index for default
[7FA4C] 2025/07/02 20:30:06.100024 protocol.go:823: DEBUG: wrote 464 bytes on the wire (2 bytes length, 4 bytes header, 4 bytes message length, 454 bytes message (2065 uncompressed)), err=<nil>

Does that mean the index is correctly sent out to the android counterpart?

Looks like it

1 Like

After digging deeper, I’ve come across the PostMessageAuthHandler.readHeader() getting headerLength == 0, then retrying to read it two times and starting to interpret the 161 byte payload as a header. I’ve now fixed this and can get to the next step receiving an index which was not possible before on v1.18.1. :slightly_smiling_face:

Just to take some notes before going to sleep and forgetting all about it ;):

2025-07-04 01:11:49.240  D/ConnectionActor: 📤 sendPostAuthMessage() sending CLUSTER_CONFIG
2025-07-04 01:11:49.246  D/*ticationMessageHandler: Sending message type: CLUSTER_CONFIG 810811371.
2025-07-04 01:11:49.290  D/*ticationMessageHandler: 🔍 [readHeader] Raw headerLength read: 0
2025-07-04 01:11:49.290  D/*ticationMessageHandler: 📭 Header length == 0 → vermutlich Keepalive oder Nachricht ohne Header
2025-07-04 01:11:49.290  D/*ticationMessageHandler: 🔹 Raw header bytes:
2025-07-04 01:11:49.290  W/*ticationMessageHandler: 📭 Header bytes were empty — using default Header
2025-07-04 01:11:49.291  D/*ticationMessageHandler: 📦 Message compression: NONE, type: CLUSTER_CONFIG
2025-07-04 01:11:49.291  D/*ticationMessageHandler: 📏 Raw messageLength read: 171
2025-07-04 01:11:49.291  D/*ticationMessageHandler: 📥 Reading full messageBuffer (171 bytes)...
2025-07-04 01:11:49.291  D/*ticationMessageHandler: 📶 Read 171 bytes (total: 171/171)
2025-07-04 01:11:49.291  D/*ticationMessageHandler: 📥 Successfully read messageBuffer
2025-07-04 01:11:49.305  D/*ticationMessageHandler: 🔸 Raw message buffer (171 bytes): 0a a8 01 0a 07 64 65 66 61 75 6c 74 12 0e 44 65 66 61 75 6c 74 20 46 6f 6c 64 65 72 82 01 42 0a 20 30 83 b9 5f b4 17 65 3f 94 0d be 10 3c 59 20 ea df bf b2 5b 13 5e 52 61 d3 fd 3e 91 30 3b e4
2025-07-04 01:11:49.305  D/*ticationMessageHandler: 📨 Received #4: CLUSTER_CONFIG (171 bytes)
2025-07-04 01:11:49.305  D/*ticationMessageHandler: ✅ Successfully parsed message of type CLUSTER_CONFIG
2025-07-04 01:11:49.305  D/ConnectionActor: 📡 receivePostAuthMessage() delivered: CLUSTER_CONFIG, class=net.syncthing.java.bep.BlockExchangeProtos$ClusterConfig
2025-07-04 01:11:49.306  D/ConnectionActor: 📬 Received post-auth message type: CLUSTER_CONFIG, class: net.syncthing.java.bep.BlockExchangeProtos$ClusterConfig
2025-07-04 01:11:49.311  I/ClusterConfigHandler: Folder ClusterConfigFolderInfo(folderId=default, label=Default Folder, isAnnounced=true, isShared=true, isDeviceInSharedFolderWhitelist=false) shared from device DeviceId(deviceId=7FA4CR5).
2025-07-04 01:11:49.312  D/IndexHandler: Acquired folder information from the cluster configuration: default.
2025-07-04 01:11:49.316  D/ConnectionActor: 📁 Local folders in config: [default]
2025-07-04 01:11:49.316  D/ConnectionActor: 📁 Remote device shares folders: [default]
2025-07-04 01:11:49.317  D/*ticationMessageHandler: Sending message type: INDEX 1437707229.
2025-07-04 01:11:49.319  D/*nnectionActorGenerator: Connected to device DeviceAddress(deviceId=DeviceId(deviceId=7FA4CR5), instanceId=1793776157307389850, address=tcp://192.168.X.Y:22000, producer=LOCAL_DISCOVERY, score=3, lastModified=Fri Jul 04 01:11:12 GMT+02:00 2025).
2025-07-04 01:11:49.319  D/*ticationMessageHandler: 🔍 [readHeader] Raw headerLength read: 4
2025-07-04 01:11:49.323  D/*ticationMessageHandler: 🔹 Raw header bytes: 08 01 10 01
2025-07-04 01:11:49.323  W/.syncthing.lit: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
2025-07-04 01:11:49.324  D/*ticationMessageHandler: 📦 Message compression: LZ4, type: INDEX
2025-07-04 01:11:49.324  D/*ticationMessageHandler: 📏 Raw messageLength read: 454
2025-07-04 01:11:49.324  D/*ticationMessageHandler: 📥 Reading full messageBuffer (454 bytes)...
2025-07-04 01:11:49.325  D/*ticationMessageHandler: 📶 Read 454 bytes (total: 454/454)
2025-07-04 01:11:49.325  D/*ticationMessageHandler: 📥 Successfully read messageBuffer
2025-07-04 01:11:49.355  D/*ticationMessageHandler: 🔸 Raw message buffer (454 bytes): 00 00 08 11 f6 47 0a 07 64 65 66 61 75 6c 74 12 a0 01 0a 21 42 69 74 6d 61 70 2d 42 69 6c 64 20 28 6e 65 75 29 20 2d 20 4b 6f 70 69 65 20 28 32 29 2e 62 6d 70 20 a4 03 28 8a c5 91 c3 06 4a 13
2025-07-04 01:11:49.355  D/*ticationMessageHandler: 💨 LZ4 compression detected. Uncompressed length: 2065
2025-07-04 01:11:49.372  D/*ticationMessageHandler: ✅ Successfully decompressed. First 64 bytes: 0a 07 64 65 66 61 75 6c 74 12 a0 01 0a 21 42 69 74 6d 61 70 2d 42 69 6c 64 20 28 6e 65 75 29 20 2d 20 4b 6f 70 69 65 20 28 32 29 2e 62 6d 70 20 a4 03 28 8a c5 91 c3 06 4a 13 0a 11 08 9f c5 ff
2025-07-04 01:11:49.372  D/*ticationMessageHandler: 📨 Received #5: INDEX (2065 bytes)
2025-07-04 01:11:49.376  D/*ticationMessageHandler: ✅ Successfully parsed message of type INDEX
2025-07-04 01:11:49.377  D/ConnectionActor: 📡 receivePostAuthMessage() delivered: INDEX, class=net.syncthing.java.bep.BlockExchangeProtos$Index
2025-07-04 01:11:49.377  I/*xMessageQueueProcessor: Received index message event, preparing to process message.
2025-07-04 01:11:49.381 29646-29692/net.syncthing.lite I/*xMessageQueueProcessor: Processing an index message with 12 records.

I’ll debug “another day” what causes the index receive routine to fail. Now going to sleep…

Btw: upgrading from v1.18.1 to v1.30.0 produces the “same” log output. I think we are near to revival.

2 Likes

Incoming index seems okay, too. The processing code is wrong.

2025-07-04 12:37:15.275 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📦 IndexUpdate folderId: default
2025-07-04 12:37:15.275 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📦 IndexUpdate filesCount: 12
2025-07-04 12:37:15.277 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[0]: name=Bitmap-Bild (neu) - Kopie (2).bmp, size=0, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.277 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[1]: name=Bitmap-Bild (neu) - Kopie (3).bmp, size=0, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.277 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[2]: name=Bitmap-Bild (neu) - Kopie (4).bmp, size=0, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.277 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[3]: name=Bitmap-Bild (neu) - Kopie (5).bmp, size=0, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.277 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[4]: name=Bitmap-Bild (neu) - Kopie.bmp, size=0, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.277 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[5]: name=Bitmap-Bild (neu).bmp, size=0, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[6]: name=Neuer ZIP-komprimierter Ordner - Kopie (2).zip, size=22, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[7]: name=Neuer ZIP-komprimierter Ordner - Kopie (3).zip, size=22, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[8]: name=Neuer ZIP-komprimierter Ordner - Kopie (4).zip, size=22, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[9]: name=Neuer ZIP-komprimierter Ordner - Kopie (5).zip, size=22, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[10]: name=Neuer ZIP-komprimierter Ordner - Kopie.zip, size=22, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 📄 File[11]: name=Neuer ZIP-komprimierter Ordner.zip, size=22, type=FILE, deleted=false, version=[id=-485894771213081953, value=1751419106]
2025-07-04 12:37:15.278 24040-24254/net.syncthing.lite D/*xMessageQueueProcessor: 🔎 Checking folder info for folderId=default
2025-07-04 12:37:15.381 24040-24254/net.syncthing.lite I/*xMessageQueueProcessor: Processing an index message with 12 records.

… fixed. Now processing incoming index messages successfully originating from v1.30.0.

2025-07-04 14:43:05.060 D/UpdateIndexInfo: 🔎 Looking up IndexInfo for device=DeviceId(deviceId=7FA4CR5) / folder=default
2025-07-04 14:43:05.061 D/UpdateIndexInfo: 📦 Lookup result: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=12, maxSequence=12)
2025-07-04 14:43:05.061 D/UpdateIndexInfo: ✅ IndexInfo unchanged for device=DeviceId(deviceId=7FA4CR5), folder=default
2025-07-04 14:43:05.061 D/IndexHandler: Acquired folder index information from the cluster configuration: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=12, maxSequence=12).
2025-07-04 14:43:05.063 D/*ticationMessageHandler: Sending message type: INDEX 1437707229.
2025-07-04 14:43:05.075 D/FolderListAdapter: FolderStatus(info=FolderInfo(folderId=default, label=Default Folder), stats=FolderStats(fileCount=12, dirCount=0, size=132, lastUpdate=Wed Jul 02 00:34:53 GMT+02:00 2025, folderId=default), indexInfo=[IndexInfo(folderId=default, deviceId=MAXYZ4L, indexId=8780593294907782663, localSequence=0, maxSequence=0), IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=12, maxSequence=12)])
2025-07-04 14:43:59.432 D/FolderListAdapter: FolderStatus(info=FolderInfo(folderId=default, label=Default Folder), stats=FolderStats(fileCount=12, dirCount=0, size=132, lastUpdate=Wed Jul 02 00:34:53 GMT+02:00 2025, folderId=default), indexInfo=[IndexInfo(folderId=default, deviceId=MAXYZ4L, indexId=8780593294907782663, localSequence=0, maxSequence=0), IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=12, maxSequence=12)])
2025-07-04 14:44:01.462 D/*ticationMessageHandler: ✅ Successfully parsed message of type INDEX_UPDATE
2025-07-04 14:44:01.463 D/ConnectionActor: 📡 receivePostAuthMessage() delivered: INDEX_UPDATE, class=net.syncthing.java.bep.BlockExchangeProtos$IndexUpdate
2025-07-04 14:44:01.463 I/*xMessageQueueProcessor: Received index message event, preparing to process message.
2025-07-04 14:44:01.577 D/*xMessageQueueProcessor: 📦 IndexUpdate folderId: default
2025-07-04 14:44:01.577 D/*xMessageQueueProcessor: 📦 IndexUpdate filesCount: 1
2025-07-04 14:44:01.578 I/*xMessageQueueProcessor: Processing an index message with 1 records.
2025-07-04 14:44:01.580 D/IndexMessageProcessor: Processing 1 index records for folder ID default.
2025-07-04 14:44:01.585 D/UpdateIndexInfo: 📈 Updating IndexInfo sequence: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=12, maxSequence=12) → IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=13, maxSequence=12)
2025-07-04 14:44:01.586 I/*xMessageQueueProcessor: Processed 1 index records, and acquired 1 in 7 milliseconds
2025-07-04 14:44:01.586 D/*xMessageQueueProcessor: New Index Information: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=13, maxSequence=12).
2025-07-04 14:44:01.606 D/*ticationMessageHandler: ✅ Successfully parsed message of type INDEX_UPDATE
2025-07-04 14:44:01.606 D/ConnectionActor: 📡 receivePostAuthMessage() delivered: INDEX_UPDATE, class=net.syncthing.java.bep.BlockExchangeProtos$IndexUpdate
2025-07-04 14:44:01.606 I/*xMessageQueueProcessor: Received index message event, preparing to process message.
2025-07-04 14:44:01.642 D/*xMessageQueueProcessor: 📦 IndexUpdate folderId: default
2025-07-04 14:44:01.642 D/*xMessageQueueProcessor: 📦 IndexUpdate filesCount: 1
2025-07-04 14:44:01.642 I/*xMessageQueueProcessor: Processing an index message with 1 records.
2025-07-04 14:44:01.644 D/IndexMessageProcessor: Processing 1 index records for folder ID default.
2025-07-04 14:44:01.646 D/UpdateIndexInfo: 📈 Updating IndexInfo sequence: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=13, maxSequence=12) → IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=14, maxSequence=12)
2025-07-04 14:44:01.647 I/*xMessageQueueProcessor: Processed 1 index records, and acquired 1 in 3 milliseconds
2025-07-04 14:44:01.647 D/*xMessageQueueProcessor: New Index Information: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=14, maxSequence=12).
2025-07-04 14:44:01.657 D/FolderListAdapter: FolderStatus(info=FolderInfo(folderId=default, label=Default Folder), stats=FolderStats(fileCount=13, dirCount=0, size=10485, lastUpdate=Fri Jul 04 14:43:52 GMT+02:00 2025, folderId=default), indexInfo=[IndexInfo(folderId=default, deviceId=MAXYZ4L, indexId=8780593294907782663, localSequence=0, maxSequence=0), IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=13, maxSequence=12)])
2025-07-04 14:44:01.685 D/FolderListAdapter: FolderStatus(info=FolderInfo(folderId=default, label=Default Folder), stats=FolderStats(fileCount=12, dirCount=0, size=10485, lastUpdate=Fri Jul 04 14:44:02 GMT+02:00 2025, folderId=default), indexInfo=[IndexInfo(folderId=default, deviceId=MAXYZ4L, indexId=8780593294907782663, localSequence=0, maxSequence=0), IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=14, maxSequence=12)])
2025-07-04 14:44:21.453 D/*ticationMessageHandler: ✅ Successfully parsed message of type INDEX_UPDATE
2025-07-04 14:44:21.453 D/ConnectionActor: 📡 receivePostAuthMessage() delivered: INDEX_UPDATE, class=net.syncthing.java.bep.BlockExchangeProtos$IndexUpdate
2025-07-04 14:44:21.453 I/*xMessageQueueProcessor: Received index message event, preparing to process message.
2025-07-04 14:44:21.456 D/*xMessageQueueProcessor: 📦 IndexUpdate folderId: default
2025-07-04 14:44:21.456 D/*xMessageQueueProcessor: 📦 IndexUpdate filesCount: 12
2025-07-04 14:44:21.458 I/*xMessageQueueProcessor: Processing an index message with 12 records.
2025-07-04 14:44:21.464 D/IndexMessageProcessor: Processing 12 index records for folder ID default.
2025-07-04 14:44:21.482 D/UpdateIndexInfo: 📈 Updating IndexInfo sequence: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=14, maxSequence=12) → IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=26, maxSequence=12)
2025-07-04 14:44:21.484 I/*xMessageQueueProcessor: Processed 12 index records, and acquired 12 in 21 milliseconds
2025-07-04 14:44:21.484 D/*xMessageQueueProcessor: New Index Information: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=26, maxSequence=12).
2025-07-04 14:44:31.471 D/*ticationMessageHandler: ✅ Successfully parsed message of type INDEX_UPDATE
2025-07-04 14:44:31.471 D/ConnectionActor: 📡 receivePostAuthMessage() delivered: INDEX_UPDATE, class=net.syncthing.java.bep.BlockExchangeProtos$IndexUpdate
2025-07-04 14:44:31.471 I/*xMessageQueueProcessor: Received index message event, preparing to process message.
2025-07-04 14:44:31.513 D/*xMessageQueueProcessor: 📦 IndexUpdate folderId: default
2025-07-04 14:44:31.514 D/*xMessageQueueProcessor: 📦 IndexUpdate filesCount: 5
2025-07-04 14:44:31.515 I/*xMessageQueueProcessor: Processing an index message with 5 records.
2025-07-04 14:44:31.523 D/IndexMessageProcessor: Processing 5 index records for folder ID default.
2025-07-04 14:44:31.529 D/UpdateIndexInfo: 📈 Updating IndexInfo sequence: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=26, maxSequence=12) → IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=31, maxSequence=12)
2025-07-04 14:44:31.530 I/*xMessageQueueProcessor: Processed 5 index records, and acquired 5 in 12 milliseconds
2025-07-04 14:44:31.530 D/*xMessageQueueProcessor: New Index Information: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=31, maxSequence=12).
2025-07-04 14:44:31.617 D/*ticationMessageHandler: ✅ Successfully parsed message of type INDEX_UPDATE
2025-07-04 14:44:31.617 D/ConnectionActor: 📡 receivePostAuthMessage() delivered: INDEX_UPDATE, class=net.syncthing.java.bep.BlockExchangeProtos$IndexUpdate
2025-07-04 14:44:31.618 I/*xMessageQueueProcessor: Received index message event, preparing to process message.
2025-07-04 14:44:31.625 D/*xMessageQueueProcessor: 📦 IndexUpdate folderId: default
2025-07-04 14:44:31.626 D/*xMessageQueueProcessor: 📦 IndexUpdate filesCount: 5
2025-07-04 14:44:31.627 I/*xMessageQueueProcessor: Processing an index message with 5 records.
2025-07-04 14:44:31.631 D/IndexMessageProcessor: Processing 5 index records for folder ID default.
2025-07-04 14:44:31.638 D/UpdateIndexInfo: 📈 Updating IndexInfo sequence: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=31, maxSequence=12) → IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=36, maxSequence=12)
2025-07-04 14:44:31.639 I/*xMessageQueueProcessor: Processed 5 index records, and acquired 5 in 9 milliseconds
2025-07-04 14:44:31.639 D/*xMessageQueueProcessor: New Index Information: IndexInfo(folderId=default, deviceId=7FA4CR5, indexId=-7328889691280873912, localSequence=36, maxSequence=12).

I can finally see and download files from my syncthing share :slight_smile: .

1 Like

Freaking unbelievable, good work, Syncthing maintainers! Even v2.0.0-rc.22 works.

On Windows:

On phone:

1 Like

Is it allowed to post a “rough unclean test APK” as a link? Or does this violate the terms/licenses? I now need to cleanup my forth and back code changes all around before being ready to publish the new syncthing-lite repo. Oh my god… I REALLY shouldn’t call this thing Syncthing-Spoon :see_no_evil_monkey::joy::rofl:

4 Likes

Oh you absolutely should, on both accounts :grin:

3 Likes