@@ -186,7 +186,7 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
186186 context.tinyDemux.arm_dmx(new_dmx, fct, fid)
187187
188188 if (sendToFront)
189- context.wai.sendTinyEventToFrontend(fid, seq, (nam + pkt).sha256().sliceArray(0 until HASH_LEN ), read (seq)!! )
189+ context.wai.sendTinyEventToFrontend(fid, seq, (nam + pkt).sha256().sliceArray(0 until HASH_LEN ), read_content (seq)!! )
190190 return true
191191 }
192192
@@ -212,7 +212,7 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
212212 }
213213 if (pend.rem <= 1 ) { // sidechain is complete
214214 state.pend_sc.remove(seq)
215- val content = read (seq)
215+ val content = read_content (seq)
216216 val message_id = get_mid(seq)
217217 if (message_id != null && content != null ) {
218218 context.wai.sendTinyEventToFrontend(fid, seq, message_id, content)
@@ -329,7 +329,8 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
329329 }
330330 }
331331
332- fun read (seq : Int ): ByteArray? {
332+
333+ fun read_content (seq : Int ): ByteArray? {
333334 if (state.max_seq < seq || seq < 1 )
334335 return null
335336 var pos = log.length()
@@ -346,9 +347,13 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
346347 if (pkt[7 ].toInt() == PKTTYPE_plain48 )
347348 return pkt.sliceArray(8 until 56 )
348349 if (pkt[7 ].toInt() == PKTTYPE_chain20 ) { // read whole sidechain
349- val (chain_len, sz) = Bipf .varint_decode(pkt, DMX_LEN + 1 , DMX_LEN + 4 )
350+ val (content_len, sz) = Bipf .varint_decode(pkt, DMX_LEN + 1 , DMX_LEN + 4 )
351+ Log .d(" DEBUGLEN" , " len: $content_len , sz: $sz " )
352+ if (content_len <= (28 - sz)) {
353+ return pkt.sliceArray(8 + sz until 8 + sz+ content_len)
354+ }
350355 var content = pkt.sliceArray(8 + sz until 36 )
351- var blocks = (chain_len - content.size + 99 ) / 100
356+ var blocks = (content_len - content.size + 99 ) / 100
352357 while (blocks > 0 ) {
353358 f.read(pkt)
354359 content + = pkt.sliceArray(0 until 100 )
@@ -397,7 +402,7 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
397402 val chunks = ArrayList <ByteArray >()
398403 val seq = state.max_seq + 1
399404 val sz = Bipf .varint_encode(content.size)
400- var payload = sz + content.sliceArray(0 until min(28 - sz.size, content.size - 1 ))
405+ var payload = sz + content.sliceArray(0 until min(28 - sz.size, content.size))
401406 if (payload.size < 28 ) { // TODO: compare with simplepub code l. 260
402407 payload + = ByteArray (28 - payload.size)
403408 }
0 commit comments