From 499890d44cb6368d2a44aeefd2c3ebd5844d089e Mon Sep 17 00:00:00 2001 From: Tanguy Date: Wed, 23 Nov 2022 17:41:03 +0100 Subject: [PATCH] Revert "[build] track nim-libp2p's unstable branch" This reverts commit 8899b68d1a4e438e7125c37d001cb9673b243e19. --- .gitignore | 1 - codex.nim | 2 +- codex/blockexchange/engine/engine.nim | 2 +- codex/blockexchange/engine/pendingblocks.nim | 2 +- codex/blockexchange/network/networkpeer.nim | 5 ---- codex/erasure/erasure.nim | 16 +++++------ codex/manifest/manifest.nim | 2 +- codex/node.nim | 24 ++++++++--------- codex/rest/api.nim | 2 +- codex/rng.nim | 9 ++++--- codex/storageproofs/stpnetwork.nim | 2 +- codex/stores/cachestore.nim | 10 +++---- codex/stores/fsstore.nim | 28 ++++++++++---------- codex/stores/networkstore.nim | 10 +++---- codex/streams/asyncstreamwrapper.nim | 3 +-- codex/streams/storestream.nim | 4 +-- tests/codex/blockexchange/testnetwork.nim | 11 ++++---- tests/codex/helpers.nim | 20 ++++++++------ vendor/nim-bearssl | 2 +- vendor/nim-chronicles | 2 +- vendor/nim-http-utils | 2 +- vendor/nim-json-serialization | 2 +- vendor/nim-presto | 2 +- vendor/nim-serialization | 2 +- vendor/nim-stew | 2 +- vendor/nim-websock | 2 +- 26 files changed, 83 insertions(+), 86 deletions(-) diff --git a/.gitignore b/.gitignore index e324f025..ffb5f8b7 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,3 @@ nimble.paths .update.timestamp codex.nims -nimbus-build-system.paths diff --git a/codex.nim b/codex.nim index 528e48d2..36ae7990 100644 --- a/codex.nim +++ b/codex.nim @@ -91,7 +91,7 @@ when isMainModule: waitFor server.stop() notice "Stopped Codex" - c_signal(ansi_c.SIGTERM, SIGTERMHandler) + c_signal(SIGTERM, SIGTERMHandler) waitFor server.start() notice "Exited codex" diff --git a/codex/blockexchange/engine/engine.nim b/codex/blockexchange/engine/engine.nim index f8343a7f..91a3e8d4 100644 --- a/codex/blockexchange/engine/engine.nim +++ b/codex/blockexchange/engine/engine.nim @@ -302,7 +302,7 @@ proc blocksHandler*( trace "Got blocks from peer", peer, len = blocks.len for blk in blocks: if isErr (await b.localStore.putBlock(blk)): - trace "Unable to store block", cid = $blk.cid + trace "Unable to store block", cid = blk.cid await b.resolveBlocks(blocks) let diff --git a/codex/blockexchange/engine/pendingblocks.nim b/codex/blockexchange/engine/pendingblocks.nim index ea379415..dd24b1d5 100644 --- a/codex/blockexchange/engine/pendingblocks.nim +++ b/codex/blockexchange/engine/pendingblocks.nim @@ -52,7 +52,7 @@ proc getWantHandle*( return await p.blocks[cid].handle.wait(timeout) except CancelledError as exc: - trace "Blocks cancelled", exc = exc.msg, cid = $cid + trace "Blocks cancelled", exc = exc.msg, cid raise exc except CatchableError as exc: trace "Pending WANT failed or expired", exc = exc.msg diff --git a/codex/blockexchange/network/networkpeer.nim b/codex/blockexchange/network/networkpeer.nim index cef58bc5..c9b8405e 100644 --- a/codex/blockexchange/network/networkpeer.nim +++ b/codex/blockexchange/network/networkpeer.nim @@ -7,9 +7,6 @@ ## This file may not be copied, modified, or distributed except according to ## those terms. -import pkg/upraises -push: {.upraises: [].} - import pkg/chronos import pkg/chronicles import pkg/libp2p @@ -24,8 +21,6 @@ const MaxMessageSize = 100 * 1 shl 20 # manifest files can be big type - ConnProvider* = proc(): Future[Connection] {.gcsafe, closure.} - RPCHandler* = proc(peer: NetworkPeer, msg: Message): Future[void] {.gcsafe.} NetworkPeer* = ref object of RootObj diff --git a/codex/erasure/erasure.nim b/codex/erasure/erasure.nim index a5ca9b80..ccc793d5 100644 --- a/codex/erasure/erasure.nim +++ b/codex/erasure/erasure.nim @@ -76,7 +76,7 @@ proc encode*( ## logScope: - original_cid = $manifest.cid.get() + original_cid = manifest.cid.get() original_len = manifest.len blocks = blocks parity = parity @@ -118,7 +118,7 @@ proc encode*( trace "Unable to retrieve block", error = error.msg return failure error - trace "Encoding block", cid = $blk.cid, pos = idx + trace "Encoding block", cid = blk.cid, pos = idx shallowCopy(data[j], blk.data) else: trace "Padding with empty block", pos = idx @@ -137,10 +137,10 @@ proc encode*( trace "Unable to create parity block", err = error.msg return failure(error) - trace "Adding parity block", cid = $blk.cid, pos = idx + trace "Adding parity block", cid = blk.cid, pos = idx encoded[idx] = blk.cid if isErr (await self.store.putBlock(blk)): - trace "Unable to store block!", cid = $blk.cid + trace "Unable to store block!", cid = blk.cid return failure("Unable to store block!") except CancelledError as exc: trace "Erasure coding encoding cancelled" @@ -212,10 +212,10 @@ proc decode*( continue if idx >= encoded.K: - trace "Retrieved parity block", cid = $blk.cid, idx + trace "Retrieved parity block", cid = blk.cid, idx shallowCopy(parityData[idx - encoded.K], if blk.isEmpty: emptyBlock else: blk.data) else: - trace "Retrieved data block", cid = $blk.cid, idx + trace "Retrieved data block", cid = blk.cid, idx shallowCopy(data[idx], if blk.isEmpty: emptyBlock else: blk.data) resolved.inc @@ -241,9 +241,9 @@ proc decode*( trace "Unable to create block!", exc = error.msg return failure(error) - trace "Recovered block", cid = $blk.cid + trace "Recovered block", cid = blk.cid if isErr (await self.store.putBlock(blk)): - trace "Unable to store block!", cid = $blk.cid + trace "Unable to store block!", cid = blk.cid return failure("Unable to store block!") except CancelledError as exc: trace "Erasure coding decoding cancelled" diff --git a/codex/manifest/manifest.nim b/codex/manifest/manifest.nim index 0af000b5..8be8d4bb 100644 --- a/codex/manifest/manifest.nim +++ b/codex/manifest/manifest.nim @@ -49,7 +49,7 @@ func `[]=`*(self: Manifest, i: BackwardsIndex, item: Cid) = proc add*(self: Manifest, cid: Cid) = assert not self.protected # we expect that protected manifests are created with properly-sized self.blocks self.rootHash = Cid.none - trace "Adding cid to manifest", cid = $cid + trace "Adding cid to manifest", cid self.blocks.add(cid) self.originalBytes = self.blocks.len * self.blockSize diff --git a/codex/node.nim b/codex/node.nim index ca1a3218..177489a9 100644 --- a/codex/node.nim +++ b/codex/node.nim @@ -73,7 +73,7 @@ proc fetchManifest*( containerType =? ManifestContainers.?[$contentType]: return failure "CID has invalid content type for manifest" - trace "Received retrieval request", cid = $cid + trace "Received retrieval request", cid without blk =? await node.blockStore.getBlock(cid), error: return failure error @@ -126,9 +126,9 @@ proc retrieve*( try: # Spawn an erasure decoding job without res =? (await node.erasure.decode(manifest)), error: - trace "Unable to erasure decode manifest", cid = $cid, exc = error.msg + trace "Unable to erasure decode manifest", cid, exc = error.msg except CatchableError as exc: - trace "Exception decoding manifest", cid = $cid + trace "Exception decoding manifest", cid # asyncSpawn erasureJob() else: @@ -219,8 +219,8 @@ proc store*( trace "Unable to generate manifest Cid!", exc = error.msg return failure(error.msg) - trace "Stored data", manifestCid = $manifest.cid, - contentCid = $cid, + trace "Stored data", manifestCid = manifest.cid, + contentCid = cid, blocks = blockManifest.len # Announce manifest @@ -244,19 +244,19 @@ proc requestStorage*(self: CodexNodeRef, ## - Run the PoR setup on the erasure dataset ## - Call into the marketplace and purchasing contracts ## - trace "Received a request for storage!", cid = $cid, duration, nodes, tolerance, reward + trace "Received a request for storage!", cid, duration, nodes, tolerance, reward without contracts =? self.contracts: trace "Purchasing not available" return failure "Purchasing not available" without manifest =? await self.fetchManifest(cid), error: - trace "Unable to fetch manifest for cid", cid = $cid + trace "Unable to fetch manifest for cid", cid raise error # Erasure code the dataset according to provided parameters without encoded =? (await self.erasure.encode(manifest, nodes.int, tolerance.int)), error: - trace "Unable to erasure code dataset", cid = $cid + trace "Unable to erasure code dataset", cid return failure(error) without encodedData =? encoded.encode(), error: @@ -268,7 +268,7 @@ proc requestStorage*(self: CodexNodeRef, return failure(error) if isErr (await self.blockStore.putBlock(encodedBlk)): - trace "Unable to store encoded manifest block", cid = $encodedBlk.cid + trace "Unable to store encoded manifest block", cid = encodedBlk.cid return failure("Unable to store encoded manifest block") let request = StorageRequest( @@ -334,14 +334,14 @@ proc start*(node: CodexNodeRef) {.async.} = ## without cid =? Cid.init(request.content.cid): - trace "Unable to parse Cid", cid = $cid + trace "Unable to parse Cid", cid raise newException(CodexError, "Unable to parse Cid") without manifest =? await node.fetchManifest(cid), error: - trace "Unable to fetch manifest for cid", cid = $cid + trace "Unable to fetch manifest for cid", cid raise error - trace "Fetching block for manifest", cid = $cid + trace "Fetching block for manifest", cid # TODO: This will probably require a call to `getBlock` either way, # since fetching of blocks will have to be selective according # to a combination of parameters, such as node slot position diff --git a/codex/rest/api.nim b/codex/rest/api.nim index d42971db..0fd87b43 100644 --- a/codex/rest/api.nim +++ b/codex/rest/api.nim @@ -123,7 +123,7 @@ proc initRestApi*(node: CodexNodeRef, conf: CodexConf): RestRouter = trace "Excepting streaming blocks", exc = exc.msg return RestApiResponse.error(Http500) finally: - trace "Sent bytes", cid = $id.get(), bytes + trace "Sent bytes", cid = id.get(), bytes if not stream.isNil: await stream.close() diff --git a/codex/rng.nim b/codex/rng.nim index 19452cd4..b1f6266d 100644 --- a/codex/rng.nim +++ b/codex/rng.nim @@ -12,11 +12,11 @@ import pkg/upraises push: {.upraises: [].} import pkg/libp2p/crypto/crypto -import pkg/bearssl/rand +import pkg/bearssl type RngSampleError = object of CatchableError - Rng* = ref HmacDrbgContext + Rng* = ref BrHmacDrbgContext var rng {.threadvar.}: Rng @@ -25,15 +25,16 @@ proc instance*(t: type Rng): Rng = rng = newRng() rng -# Random helpers: similar as in stdlib, but with HmacDrbgContext rng +# Random helpers: similar as in stdlib, but with BrHmacDrbgContext rng # TODO: Move these somewhere else? const randMax = 18_446_744_073_709_551_615'u64 proc rand*(rng: Rng, max: Natural): int = if max == 0: return 0 + var x: uint64 while true: - let x = rng[].generate(uint64) + brHmacDrbgGenerate(addr rng[], addr x, csize_t(sizeof(x))) if x < randMax - (randMax mod (uint64(max) + 1'u64)): # against modulo bias return int(x mod (uint64(max) + 1'u64)) diff --git a/codex/storageproofs/stpnetwork.nim b/codex/storageproofs/stpnetwork.nim index bd77034a..99abd990 100644 --- a/codex/storageproofs/stpnetwork.nim +++ b/codex/storageproofs/stpnetwork.nim @@ -63,7 +63,7 @@ proc uploadTags*( except CancelledError as exc: raise exc except CatchableError as exc: - trace "Exception submitting tags", cid = $cid, exc = exc.msg + trace "Exception submitting tags", cid, exc = exc.msg return failure(exc.msg) finally: await conn.close() diff --git a/codex/stores/cachestore.nim b/codex/stores/cachestore.nim index af8c006a..aa8eeeb7 100644 --- a/codex/stores/cachestore.nim +++ b/codex/stores/cachestore.nim @@ -47,7 +47,7 @@ method getBlock*(self: CacheStore, cid: Cid): Future[?!Block] {.async.} = ## Get a block from the stores ## - trace "Getting block from cache", cid = $cid + trace "Getting block from cache", cid if cid.isEmpty: trace "Empty block, ignoring" @@ -59,14 +59,14 @@ method getBlock*(self: CacheStore, cid: Cid): Future[?!Block] {.async.} = try: return success self.cache[cid] except CatchableError as exc: - trace "Error requesting block from cache", cid = $cid, error = exc.msg + trace "Error requesting block from cache", cid, error = exc.msg return failure exc method hasBlock*(self: CacheStore, cid: Cid): Future[?!bool] {.async.} = ## Check if the block exists in the blockstore ## - trace "Checking CacheStore for block presence", cid = $cid + trace "Checking CacheStore for block presence", cid if cid.isEmpty: trace "Empty block, ignoring" return true.success @@ -108,7 +108,7 @@ method putBlock*(self: CacheStore, blk: Block): Future[?!void] {.async.} = ## Put a block to the blockstore ## - trace "Storing block in cache", cid = $blk.cid + trace "Storing block in cache", cid = blk.cid if blk.isEmpty: trace "Empty block, ignoring" return success() @@ -120,7 +120,7 @@ method delBlock*(self: CacheStore, cid: Cid): Future[?!void] {.async.} = ## Delete a block from the blockstore ## - trace "Deleting block from cache", cid = $cid + trace "Deleting block from cache", cid if cid.isEmpty: trace "Empty block, ignoring" return success() diff --git a/codex/stores/fsstore.nim b/codex/stores/fsstore.nim index 7d0cc1d5..10af63bd 100644 --- a/codex/stores/fsstore.nim +++ b/codex/stores/fsstore.nim @@ -43,9 +43,9 @@ method getBlock*(self: FSStore, cid: Cid): Future[?!Block] {.async.} = ## if not self.cache.isNil: - trace "Getting block from cache or filestore", cid = $cid + trace "Getting block from cache or filestore", cid else: - trace "Getting block from filestore", cid = $cid + trace "Getting block from filestore", cid if cid.isEmpty: trace "Empty block, ignoring" @@ -58,7 +58,7 @@ method getBlock*(self: FSStore, cid: Cid): Future[?!Block] {.async.} = if not cachedBlockRes.isErr: return success cachedBlockRes.get else: - trace "Unable to read block from cache", cid = $cid, error = cachedBlockRes.error.msg + trace "Unable to read block from cache", cid, error = cachedBlockRes.error.msg # Read file contents var @@ -79,7 +79,7 @@ method getBlock*(self: FSStore, cid: Cid): Future[?!Block] {.async.} = return failure "Error requesting block from filestore: " & error without blk =? Block.new(cid, data), error: - trace "Unable to construct block from data", cid = $cid, error = error.msg + trace "Unable to construct block from data", cid, error = error.msg return failure error if not self.cache.isNil: @@ -87,7 +87,7 @@ method getBlock*(self: FSStore, cid: Cid): Future[?!Block] {.async.} = putCachedRes = await self.cache.putBlock(blk) if putCachedRes.isErr: - trace "Unable to store block in cache", cid = $cid, error = putCachedRes.error.msg + trace "Unable to store block in cache", cid, error = putCachedRes.error.msg return success blk @@ -97,9 +97,9 @@ method putBlock*(self: FSStore, blk: Block): Future[?!void] {.async.} = ## if not self.cache.isNil: - trace "Putting block into filestore and cache", cid = $blk.cid + trace "Putting block into filestore and cache", cid = blk.cid else: - trace "Putting block into filestore", cid = $blk.cid + trace "Putting block into filestore", cid = blk.cid if blk.isEmpty: trace "Empty block, ignoring" @@ -118,7 +118,7 @@ method putBlock*(self: FSStore, blk: Block): Future[?!void] {.async.} = let res = io2.writeFile(path, blk.data) if res.isErr: let error = io2.ioErrorMsg(res.error) - trace "Unable to store block", path, cid = $blk.cid, error + trace "Unable to store block", path, cid = blk.cid, error return failure("Unable to store block") if not self.cache.isNil: @@ -126,7 +126,7 @@ method putBlock*(self: FSStore, blk: Block): Future[?!void] {.async.} = putCachedRes = await self.cache.putBlock(blk) if putCachedRes.isErr: - trace "Unable to store block in cache", cid = $blk.cid, error = putCachedRes.error.msg + trace "Unable to store block in cache", cid = blk.cid, error = putCachedRes.error.msg return success() @@ -135,9 +135,9 @@ method delBlock*(self: FSStore, cid: Cid): Future[?!void] {.async.} = ## if not self.cache.isNil: - trace "Deleting block from cache and filestore", cid = $cid + trace "Deleting block from cache and filestore", cid else: - trace "Deleting block from filestore", cid = $cid + trace "Deleting block from filestore", cid if cid.isEmpty: trace "Empty block, ignoring" @@ -148,7 +148,7 @@ method delBlock*(self: FSStore, cid: Cid): Future[?!void] {.async.} = delCachedRes = await self.cache.delBlock(cid) if delCachedRes.isErr: - trace "Unable to delete block from cache", cid = $cid, error = delCachedRes.error.msg + trace "Unable to delete block from cache", cid, error = delCachedRes.error.msg let path = self.blockPath(cid) @@ -156,7 +156,7 @@ method delBlock*(self: FSStore, cid: Cid): Future[?!void] {.async.} = if res.isErr: let error = io2.ioErrorMsg(res.error) - trace "Unable to delete block", path, cid = $cid, error + trace "Unable to delete block", path, cid, error return error.failure return success() @@ -165,7 +165,7 @@ method hasBlock*(self: FSStore, cid: Cid): Future[?!bool] {.async.} = ## Check if a block exists in the filestore ## - trace "Checking filestore for block existence", cid = $cid + trace "Checking filestore for block existence", cid if cid.isEmpty: trace "Empty block, ignoring" return true.success diff --git a/codex/stores/networkstore.nim b/codex/stores/networkstore.nim index 730141c0..5c96a5f6 100644 --- a/codex/stores/networkstore.nim +++ b/codex/stores/networkstore.nim @@ -35,11 +35,11 @@ method getBlock*(self: NetworkStore, cid: Cid): Future[?!bt.Block] {.async.} = ## Get a block from a remote peer ## - trace "Getting block from local store or network", cid = $cid + trace "Getting block from local store or network", cid without blk =? await self.localStore.getBlock(cid), error: if not (error of BlockNotFoundError): return failure error - trace "Block not in local store", cid = $cid + trace "Block not in local store", cid # TODO: What if block isn't available in the engine too? # TODO: add retrieved block to the local store return (await self.engine.requestBlock(cid)).catch @@ -50,7 +50,7 @@ method putBlock*(self: NetworkStore, blk: bt.Block): Future[?!void] {.async.} = ## Store block locally and notify the network ## - trace "Puting block into network store", cid = $blk.cid + trace "Puting block into network store", cid = blk.cid let res = await self.localStore.putBlock(blk) if res.isErr: @@ -63,7 +63,7 @@ method delBlock*(self: NetworkStore, cid: Cid): Future[?!void] = ## Delete a block from the blockstore ## - trace "Deleting block from network store", cid = $cid + trace "Deleting block from network store", cid return self.localStore.delBlock(cid) {.pop.} @@ -72,7 +72,7 @@ method hasBlock*(self: NetworkStore, cid: Cid): Future[?!bool] {.async.} = ## Check if the block exists in the blockstore ## - trace "Checking network store for block existence", cid = $cid + trace "Checking network store for block existence", cid return await self.localStore.hasBlock(cid) method close*(self: NetworkStore): Future[void] {.async.} = diff --git a/codex/streams/asyncstreamwrapper.nim b/codex/streams/asyncstreamwrapper.nim index a0829b7b..81406bc3 100644 --- a/codex/streams/asyncstreamwrapper.nim +++ b/codex/streams/asyncstreamwrapper.nim @@ -7,8 +7,7 @@ ## This file may not be copied, modified, or distributed except according to ## those terms. -import pkg/upraises -push: {.upraises: [].} +{.push raises: [Defect].} import pkg/chronos import pkg/chronicles diff --git a/codex/streams/storestream.nim b/codex/streams/storestream.nim index 37039ea7..6649d1bc 100644 --- a/codex/streams/storestream.nim +++ b/codex/streams/storestream.nim @@ -69,7 +69,7 @@ method readOnce*( ## Return how many bytes were actually read before EOF was encountered. ## Raise exception if we are already at EOF. - trace "Reading from manifest", cid = $self.manifest.cid.get(), blocks = self.manifest.len + trace "Reading from manifest", cid = self.manifest.cid.get(), blocks = self.manifest.len if self.atEof: raise newLPStreamEOFError() @@ -88,7 +88,7 @@ method readOnce*( without blk =? await self.store.getBlock(self.manifest[blockNum]), error: raise newLPStreamReadError(error) - trace "Reading bytes from store stream", blockNum, cid = $blk.cid, bytes = readBytes, blockOffset + trace "Reading bytes from store stream", blockNum, cid = blk.cid, bytes = readBytes, blockOffset # Copy `readBytes` bytes starting at `blockOffset` from the block into the outbuf if blk.isEmpty: diff --git a/tests/codex/blockexchange/testnetwork.nim b/tests/codex/blockexchange/testnetwork.nim index 9f3c399e..8eda6a93 100644 --- a/tests/codex/blockexchange/testnetwork.nim +++ b/tests/codex/blockexchange/testnetwork.nim @@ -158,6 +158,9 @@ suite "Network - Senders": done = newFuture[void]() switch1 = newStandardSwitch() switch2 = newStandardSwitch() + await switch1.start() + await switch2.start() + network1 = BlockExcNetwork.new( switch = switch1) switch1.mount(network1) @@ -166,9 +169,6 @@ suite "Network - Senders": switch = switch2) switch2.mount(network2) - await switch1.start() - await switch2.start() - await switch1.connect( switch2.peerInfo.peerId, switch2.peerInfo.addrs) @@ -271,6 +271,8 @@ suite "Network - Test Limits": done = newFuture[void]() switch1 = newStandardSwitch() switch2 = newStandardSwitch() + await switch1.start() + await switch2.start() network1 = BlockExcNetwork.new( switch = switch1, @@ -281,9 +283,6 @@ suite "Network - Test Limits": switch = switch2) switch2.mount(network2) - await switch1.start() - await switch2.start() - await switch1.connect( switch2.peerInfo.peerId, switch2.peerInfo.addrs) diff --git a/tests/codex/helpers.nim b/tests/codex/helpers.nim index 6d431870..475bf7a1 100644 --- a/tests/codex/helpers.nim +++ b/tests/codex/helpers.nim @@ -37,11 +37,12 @@ proc corruptBlocks*( manifest: Manifest, blks, bytes: int): Future[seq[int]] {.async.} = var pos: seq[int] + while true: + if pos.len >= blks: + break - doAssert blks < manifest.len - while pos.len < blks: - let i = Rng.instance.rand(manifest.len - 1) - if pos.find(i) >= 0: + var i = -1 + if (i = Rng.instance.rand(manifest.len - 1); pos.find(i) >= 0): continue pos.add(i) @@ -49,12 +50,15 @@ proc corruptBlocks*( blk = (await store.getBlock(manifest[i])).tryGet() bytePos: seq[int] - doAssert bytes < blk.data.len - while bytePos.len <= bytes: - let ii = Rng.instance.rand(blk.data.len - 1) - if bytePos.find(ii) >= 0: + while true: + if bytePos.len > bytes: + break + + var ii = -1 + if (ii = Rng.instance.rand(blk.data.len - 1); bytePos.find(ii) >= 0): continue bytePos.add(ii) blk.data[ii] = byte 0 + return pos diff --git a/vendor/nim-bearssl b/vendor/nim-bearssl index f4c4233d..dc62f4fc 160000 --- a/vendor/nim-bearssl +++ b/vendor/nim-bearssl @@ -1 +1 @@ -Subproject commit f4c4233de453cb7eac0ce3f3ffad6496295f83ab +Subproject commit dc62f4fccd2d40c884009ae8f2b14bb6a86a55cf diff --git a/vendor/nim-chronicles b/vendor/nim-chronicles index 7631f7b2..16820963 160000 --- a/vendor/nim-chronicles +++ b/vendor/nim-chronicles @@ -1 +1 @@ -Subproject commit 7631f7b2ee03398cb1512a79923264e8f9410af6 +Subproject commit 1682096306ddba8185dcfac360a8c3f952d721e4 diff --git a/vendor/nim-http-utils b/vendor/nim-http-utils index e88e231d..689da19e 160000 --- a/vendor/nim-http-utils +++ b/vendor/nim-http-utils @@ -1 +1 @@ -Subproject commit e88e231dfcef4585fe3b2fbd9b664dbd28a88040 +Subproject commit 689da19e9e9cfff4ced85e2b25c6b2b5598ed079 diff --git a/vendor/nim-json-serialization b/vendor/nim-json-serialization index e5b18fb7..c5f0e246 160000 --- a/vendor/nim-json-serialization +++ b/vendor/nim-json-serialization @@ -1 +1 @@ -Subproject commit e5b18fb710c3d0167ec79f3b892f5a7a1bc6d1a4 +Subproject commit c5f0e2465e8375dfc7aa0f56ccef67cb680bc6b0 diff --git a/vendor/nim-presto b/vendor/nim-presto index 3984431d..962bb588 160000 --- a/vendor/nim-presto +++ b/vendor/nim-presto @@ -1 +1 @@ -Subproject commit 3984431dc0fc829eb668e12e57e90542b041d298 +Subproject commit 962bb588d19c7180e39f0d9f18131e75861bab20 diff --git a/vendor/nim-serialization b/vendor/nim-serialization index 493d18b8..fcd0eada 160000 --- a/vendor/nim-serialization +++ b/vendor/nim-serialization @@ -1 +1 @@ -Subproject commit 493d18b8292fc03aa4f835fd825dea1183f97466 +Subproject commit fcd0eadadde0ee000a63df8ab21dc4e9f015a790 diff --git a/vendor/nim-stew b/vendor/nim-stew index 0c379cf1..6ad35b87 160000 --- a/vendor/nim-stew +++ b/vendor/nim-stew @@ -1 +1 @@ -Subproject commit 0c379cf1d8d3d9db07af108cc78ff542b2105914 +Subproject commit 6ad35b876fb6ebe0dfee0f697af173acc47906ee diff --git a/vendor/nim-websock b/vendor/nim-websock index 7b2ed397..a697e358 160000 --- a/vendor/nim-websock +++ b/vendor/nim-websock @@ -1 +1 @@ -Subproject commit 7b2ed397d6e4c37ea4df08ae82aeac7ff04cd180 +Subproject commit a697e3585d583ab6b91a159ea7d023461002c927