Commit Graph

1292 Commits

Author SHA1 Message Date
Thomas Eizinger
0a82ce989b
Improve resilience of balance assertions
Sometimes, a single sync is not enough because we are still waiting
for the block to be mined.

We introduce an abstraction that loops on fetching the latest balance
with a certain timeout for asserting the balance.
2021-03-29 12:15:52 +11:00
Thomas Eizinger
a4c70dfe94
Don't call as_ref() unless necessary 2021-03-29 12:15:52 +11:00
Thomas Eizinger
4ab7e83806
Make use of cargo tests scoped test output
By using `test_writer`, cargo can automatically scope the output
of the test to the relevant thread and will also only output it
if the test fails or is run with `--nocapture`.
2021-03-29 12:15:51 +11:00
Thomas Eizinger
908dae3442
Inline tracing initialization
This code snippet is so short, it might as well be inlined to give
the test more control over what it wants to log.
2021-03-29 12:15:51 +11:00
Thomas Eizinger
96c87bca71
Avoid local variables if not necessary
We can initialize the env filter without `format!` when the variables
are not used anywhere else.
2021-03-29 12:15:51 +11:00
Thomas Eizinger
c01cccb288
Use tracing-log feature flag instead of manual initialization
This also formats `log` events more nicely. Instead of

```
Mar 29 09:46:16.775  INFO log: Found message after comparing 82 lines log.target="testcontainers::core::wait_for_message" log.module_path="testcontainers::core::wait_for_message" log.file="/home/thomas/.cargo/registry/src/github.com-1ecc6299db9ec823/testcontainers-0.12.0/src/core/wait_for_message.rs" log.line=35
```

We now have

```
Mar 29 09:57:15.860  INFO testcontainers::core::wait_for_message: Found message after comparing 81 lines
```
2021-03-29 12:15:50 +11:00
Thomas Eizinger
c5827f84ca
Refactor recursive function to loop
This should get rid of the ever-growing stack size issue.
2021-03-29 12:15:48 +11:00
Thomas Eizinger
fc175a3f53
De-couple state from Monero wallet 2021-03-29 12:15:12 +11:00
Thomas Eizinger
42b6368298
Use full-qualified path for tracing macros
Saves an import line and makes it clear that we are using tracing.
2021-03-29 12:14:19 +11:00
Thomas Eizinger
5616683d7d
Monero confirmations are a u64
Trying to deserialize the number as a u32 caused deserialization
errors.
2021-03-29 12:14:19 +11:00
Thomas Eizinger
1b63d5486d
Move tick to the beginning of the loop
This ensures that we always wait for the provided interval, even in
the case of a `continue` which happens if there is an error within
the RPC call.
2021-03-29 12:14:19 +11:00
bors[bot]
7cf7e08132
Merge #366
366: Asb docs r=da-kami a=da-kami

Note: 
There is currently quite a lot ongoing to make the ASB better, so the documentation will naturally get outdated. 
Knowing that, I opted for linking to ongoing issues that will improve ASB setup / execution so that users can refer to them to see the progress. 

We need documentation to make ASB setup / exec understandable. Let's see to get this in so we have something to iterate on :)

Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-03-29 00:06:02 +00:00
Daniel Karzel
1cac82d212 Document the setup of the ASB
- How to run the ASB
- ASB component interaction
- ASB wallet management
2021-03-29 11:04:56 +11:00
Daniel Karzel
363ce1cdf6 ASB CLI component diagrams
- Component diagram showcasing both ASB and CLI using public blockchain nodes
- Component diagram showcasing ASB using self hosted blockchain nodes and CLI public
2021-03-29 10:35:53 +11:00
bors[bot]
1684f4b92e
Merge #379
379: Use language agnostic heuristic to check if monero_wallet_rpc is ready r=rishflab a=rishflab

Our strategy of searching for a english string to determine if
monero_wallet_rpc is ready is not compatible with languages other than
english. Instead we assume the monero rpc is ready if it has stopped
writing to stdout. We make a json rpc request to confirm this. A better
solution would have been to configure the monero_wallet_rpc to always
output in english but there is not command line argument to configure
the language.

Closes #353.

NOTE: will squash after approved

Co-authored-by: rishflab <rishflab@hotmail.com>
2021-03-26 03:57:32 +00:00
Thomas Eizinger
393ed45b9e
Say who we are in the --help message
The message now says:

swap 0.3.0
The COMIT guys <hello@comit.network>
CLI for swapping BTC for XMR

USAGE:
    swap [FLAGS] [OPTIONS] <SUBCOMMAND>

...
2021-03-26 14:31:14 +11:00
Thomas Eizinger
39b27e37d8
Delete empty file 2021-03-26 14:31:04 +11:00
rishflab
a3e85526c6 Specify LANG env variable for monero wallet rpc for unix systems
By specifying the language we can look for a specific string to check if
 monero wallet rpc is ready
2021-03-25 19:52:43 +11:00
bors[bot]
36b92c9f1f
Merge #380
380: Simplify CI workflow r=thomaseizinger a=thomaseizinger

Some patches extracted out of https://github.com/comit-network/xmr-btc-swap/pull/371.

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-03-25 08:10:58 +00:00
rishflab
bc902ea63a Use language agnostic heuristic to check if monero_wallet_rpc is ready
Our strategy of searching for a english string to determine if
monero_wallet_rpc is ready is not compatible with languages other than
english. Instead we assume the monero rpc is ready if it has stopped
writing to stdout. We make a json rpc request to confirm this. A better
solution would have been to configure the monero_wallet_rpc to always
output in english but there is not command line argument to configure
the language.

Closes #353.
2021-03-25 18:13:06 +11:00
Daniel Karzel
d2cf45d8b9 ASB CLI service provider overview diagram 2021-03-25 16:26:09 +11:00
Thomas Eizinger
453b8e3ae7
Remove unnecessary TARGET env variable
unknown-linux-gnu is the default for ubuntu, we don't need to
specify this.
2021-03-25 15:19:09 +11:00
Thomas Eizinger
1d3c780912
Allow more than two concurrent tests
There is no reason to limit this, all the docker tests are outside
of the lib.
2021-03-25 15:19:08 +11:00
Thomas Eizinger
8767af8dd3
Simplify matrix for test job 2021-03-25 15:19:08 +11:00
bors[bot]
2c3c4936c6
Merge #372
372: Add a changelog and more automation for releases r=rishflab a=thomaseizinger

Tested workflow runs can be seen here:

- Drafting a new release via `workflow_dispatch`: https://github.com/thomaseizinger/xmr-btc-swap/actions/runs/681852142
- The created PR: https://github.com/thomaseizinger/xmr-btc-swap/pull/11
- The workflow running as a result of merging the PR: https://github.com/thomaseizinger/xmr-btc-swap/actions/runs/681855693
- The release created from that workflow: https://github.com/thomaseizinger/xmr-btc-swap/releases/tag/0.4.0

Fixes #364.

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-03-25 00:50:07 +00:00
Thomas Eizinger
b84a1626bd
Add workflow documentation 2021-03-25 11:12:02 +11:00
Thomas Eizinger
d8e2e7beeb
Add workflow for creating new releases
Whenever a release branch - that is a branch starting with `release/` -
is merged into master, we create a new GitHub release based on the
version number in the branch name.

Similarly to the preview release, we extract the relevant section of
the changelog and make it the release body.
2021-03-25 11:12:01 +11:00
Thomas Eizinger
5e81555b85
Add workflow for drafting a new release
Drafting a new release can be quite involved. One has to update the
changelog correctly, bump the versions in the manifest files, commit
everything and raise a PR.

This workflow does all of that for you at the click of a button!
2021-03-25 11:12:01 +11:00
Thomas Eizinger
497a531102
Add CHANGELOG section to preview release
Whenever we create a preview release, we extract the `unreleased`
section of the CHANGELOG and make it the body of the Github release.
2021-03-25 11:12:01 +11:00
Thomas Eizinger
b25d21282d
Add CHANGELOG file 2021-03-25 11:12:00 +11:00
Thomas Eizinger
8bc41ecff4
Improve docs of CI workflow 2021-03-25 11:12:00 +11:00
Thomas Eizinger
febc68c780
Enforce consistent formatting of Markdown files 2021-03-25 11:11:57 +11:00
bors[bot]
7397cb5990
Merge #359
359: Bump bdk from 0.4.0 to 0.5.0 r=thomaseizinger a=dependabot[bot]

Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.4.0 to 0.5.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md">bdk's changelog</a>.</em></p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f7944e871b"><code>f7944e8</code></a> Bump version to 0.5.0</li>
<li><a href="2fea1761c1"><code>2fea176</code></a> Bump deps version</li>
<li><a href="fa27ae210f"><code>fa27ae2</code></a> Update version in lib.rs</li>
<li><a href="46fa41470e"><code>46fa414</code></a> Update CHANGELOG with the new release tag</li>
<li><a href="8ebe7f0ea5"><code>8ebe7f0</code></a> Merge commit 'refs/pull/308/head' of github.com:bitcoindevkit/bdk into releas...</li>
<li><a href="eb85390846"><code>eb85390</code></a> Merge commit 'refs/pull/309/head' of github.com:bitcoindevkit/bdk into releas...</li>
<li><a href="dc83db273a"><code>dc83db2</code></a> better derivation path building</li>
<li><a href="201bd6ee02"><code>201bd6e</code></a> better derivation path building</li>
<li><a href="396ffb42f9"><code>396ffb4</code></a> handle descriptor xkey origin</li>
<li><a href="9cf62ce874"><code>9cf62ce</code></a> [ci] Manually install libclang-common-10-dev to 'check-wasm' job</li>
<li>Additional commits viewable in <a href="https://github.com/bitcoindevkit/bdk/compare/v0.4.0...v0.5.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bdk&package-manager=cargo&previous-version=0.4.0&new-version=0.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-03-24 06:12:52 +00:00
bors[bot]
9c9b1e4f0c
Merge #370
370: No Bitcoin deposit for Alice r=da-kami a=da-kami

The message to deposit Bitcoin only applies to Bob, not Alice.
Alice does not require any initial Bitcoin.

Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-03-24 05:03:19 +00:00
bors[bot]
c0398f7245
Merge #340
340: Remove connection handling from swap execution and cleanup network protocol implementations r=thomaseizinger a=thomaseizinger

TODO:

- [x] Re-establish connection on Bob's side if it is dropped.
- [x] Make sure Alice buffers messages if there isn't currently a connection
- [x] Do a testnet swap to make sure it works

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-03-24 04:30:45 +00:00
Thomas Eizinger
1057d115d1
Re-order bob::event_loop based on importance 2021-03-24 15:17:54 +11:00
Thomas Eizinger
638a169a04
Buffer transfer proof if we are not connected to Bob
The request-response behaviour that is used for sending the transfer
proof actually has a functionality for buffering a message if we
are currently not connected. However, the request-response behaviour
also emits a dial attempt and **drops** all buffered messages if this
dial attempt fails. For us, the dial attempt will very likely always
fail because Bob is very likely behind NAT and we have to wait for
him to reconnect to us.

To mitigate this, we build our own buffer within the EventLoop and
send transfer proofs as soon as we are connected again.

Resolves #348.
2021-03-24 15:17:54 +11:00
Thomas Eizinger
cde3f0f74a
Remove connection handling from swap execution
The swap should not be concerned with connection handling. This is
the responsibility of the overall application.

All but the execution-setup NetworkBehaviour are `request-response`
behaviours. These have built-in functionality to automatically emit
a dial attempt in case we are not connected at the time we want to
send a message. We remove all of the manual dialling code from the
swap in favor of this behaviour.

Additionally, we make sure to establish a connection as soon as the
EventLoop gets started. In case we ever loose the connection to Alice,
we try to re-establish it.
2021-03-24 15:17:54 +11:00
Daniel Karzel
1e2a3c2d32 No Bitcoin deposit for Alice
The message to deposit Bitcoin only applies to Bob, not Alice.
Alice does not require any initial Bitcoin.
2021-03-24 11:51:25 +11:00
Thomas Eizinger
804b34f6b0
Listen on all swarm events instead of just behaviour events 2021-03-24 11:39:41 +11:00
Thomas Eizinger
2200fce3f3
Pass Swarm into EventLoop
This reduces the amount of arguments we need to pass into the eventloop
at the expense of slightly more setup of the swarm.
2021-03-24 11:39:41 +11:00
Thomas Eizinger
2c9ab4f6eb
Improve code structure and error messages for running swaps
The quote message was repeated and we should set the overall
failure into a context to know what went wrong.
2021-03-24 11:39:41 +11:00
Thomas Eizinger
0c0a322a8f
Rename module to better represent what it contains
This module provides an implementation of the RequestResponseCodec
using a cbor serialization.
2021-03-24 11:39:40 +11:00
Thomas Eizinger
1de0b39b32
Unify encrypted-signature protocol to a single one 2021-03-24 11:39:40 +11:00
Thomas Eizinger
9979cc9f1f
Unify transfer-proof protocol to a single one
Previously, we had two implementations of this protocol. To reduce
code size, we make Alice and Bob use the same implementation.
2021-03-24 11:39:40 +11:00
Thomas Eizinger
9d0b9abde0
Introduce helper function for mapping RequestResponseEvent
Decomposing a RequestResponseEvent is quite verbose. We can introduce
a helper function that does the matching for us and delegates to
specific `From` implementations for the protocol specific bits.
2021-03-24 11:39:39 +11:00
Thomas Eizinger
73f30320a6
Seed should neither be Clone nor Copy
It is better to not copy around secret data within our process to
make heartbleed-like attacks harder.
2021-03-24 11:39:39 +11:00
bors[bot]
5860d511c9
Merge #365
365: Bump tokio-util from 0.6.4 to 0.6.5 r=thomaseizinger a=dependabot[bot]

Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.6.4 to 0.6.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/tokio-rs/tokio/releases">tokio-util's releases</a>.</em></p>
<blockquote>
<h2>tokio-util-0.6.5</h2>
<h3>Fixed</h3>
<ul>
<li>util: annotate time module as requiring <code>time</code> feature (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3606">#3606</a>)</li>
</ul>
<p><a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3606">#3606</a>: <a href="https://github-redirect.dependabot.com/tokio-rs/tokio/pull/3606">tokio-rs/tokio#3606</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b1310ad14d"><code>b1310ad</code></a> chore: prepare tokio-util v0.6.5 (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3622">#3622</a>)</li>
<li><a href="dcac336dc7"><code>dcac336</code></a> chore: prepare Tokio v1.4.0 (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3621">#3621</a>)</li>
<li><a href="c39d9867bb"><code>c39d986</code></a> runtime: add Handle::block_on (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3569">#3569</a>)</li>
<li><a href="e4f76688a0"><code>e4f7668</code></a> runtime: fix memory leak/growth when creating many runtimes (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3564">#3564</a>)</li>
<li><a href="e6103d6661"><code>e6103d6</code></a> docs: add link to PollSender (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3613">#3613</a>)</li>
<li><a href="cc90a5c679"><code>cc90a5c</code></a> chore: mention fix for building docs in contributing guide (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3618">#3618</a>)</li>
<li><a href="f107c4f49b"><code>f107c4f</code></a> timer: fix double newline in module docs (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3617">#3617</a>)</li>
<li><a href="e6a9167bb7"><code>e6a9167</code></a> runtime: avoid unnecessary polling of block_on future (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3582">#3582</a>)</li>
<li><a href="345b29ca11"><code>345b29c</code></a> sync: improve Mutex FIFO explanation (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3615">#3615</a>)</li>
<li><a href="b75d02a2b6"><code>b75d02a</code></a> macros: introduce biased argument for select! (<a href="https://github-redirect.dependabot.com/tokio-rs/tokio/issues/3603">#3603</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/tokio-rs/tokio/compare/tokio-util-0.6.4...tokio-util-0.6.5">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tokio-util&package-manager=cargo&previous-version=0.6.4&new-version=0.6.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-23 22:18:41 +00:00
bors[bot]
da0a656c1c
Merge #356
356: Bump serde from 1.0.124 to 1.0.125 r=thomaseizinger a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.124 to 1.0.125.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.125</h2>
<ul>
<li>Improve performance of serializing <code>Ipv4Addr</code> (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2001">#2001</a>, thanks <a href="https://github.com/saethlin"><code>@​saethlin</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e9270e59f0"><code>e9270e5</code></a> Release 1.0.125</li>
<li><a href="72060b779a"><code>72060b7</code></a> Extend test_format_u8 to include u8::MAX</li>
<li><a href="1bb23ad9d1"><code>1bb23ad</code></a> Remove format_u8 when not used by Ipv4Addr impl</li>
<li><a href="9be4c9654a"><code>9be4c96</code></a> Merge pull request 2001 from saethlin/optimize-ipaddr</li>
<li><a href="4114e90bac"><code>4114e90</code></a> Fix off-by-one mistake, explain the offset</li>
<li><a href="8bb07b0743"><code>8bb07b0</code></a> skip UTF8 checking and initialize with b'.'</li>
<li><a href="ba8c1d63c8"><code>ba8c1d6</code></a> use the algorithm from itoa</li>
<li><a href="857a805993"><code>857a805</code></a> Faster Ipv4 serialization prototype</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.124...v1.0.125">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.124&new-version=1.0.125)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-23 08:17:35 +00:00
dependabot[bot]
9e3bc6cf56
Bump tokio-util from 0.6.4 to 0.6.5
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.6.4 to 0.6.5.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.6.4...tokio-util-0.6.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-23 07:53:14 +00:00