epp-client/src
Dirkjan Ochtman eed3a075eb Track connection state and reconnect on invalid state
The external client/connection interface expects that to complete
full request/response cycles. However, at await points the stack
could simply be dropped, meaning the connection is left in an
inconsistent state. One relatively likely scenario is that a
transaction might be dropped while waiting for a response from the
server. For example, this might happen if the connection was
initiated by a HTTP request which was canceled/aborted.

There are different failure modes which can result from similar
scenarios depending on during what await point the future was
dropped. Since it's relatively difficult to protect against
these scenarios and some of them might manifest in indirect ways
(for example, a deserialization error might happen because the
incoming response was for a different kind of request), this PR
takes the approach of tracking in the connection whether we're
(supposedly) at a point where the connection is ready to send
another request. If transact() is called while the connection is
not in such a state, the connection will transparently attempt
to reconnect to clean up any erroneous state.
2022-03-04 15:52:09 +01:00
..
contact Use DateTime types where possible 2022-02-25 00:12:48 +08:00
domain Use DateTime types where possible 2022-02-25 00:12:48 +08:00
extensions Fix rustdoc warning 2022-02-04 11:39:13 +08:00
host Use DateTime types where possible 2022-02-25 00:12:48 +08:00
message Use DateTime types where possible 2022-02-25 00:12:48 +08:00
tests Rename test directory to tests 2022-01-03 10:22:20 +08:00
client.rs Derive Debug for RequestData 2022-02-10 13:55:34 +08:00
common.rs Implement AsRef<str> for StringValue 2022-02-25 00:12:48 +08:00
connection.rs Track connection state and reconnect on invalid state 2022-03-04 15:52:09 +01:00
contact.rs Re-export command types for easier access 2022-01-03 10:29:58 +08:00
domain.rs Replace HostAddr with IpAddr in the public interface 2022-02-16 02:19:47 +08:00
error.rs Wrap timeouts around network operations 2022-02-04 11:39:13 +08:00
hello.rs Use DateTime types where possible 2022-02-25 00:12:48 +08:00
lib.rs Simplify/improve crate-level documentation 2022-02-04 11:39:13 +08:00
login.rs Use an enum for result codes 2022-01-27 17:10:28 +08:00
logout.rs Use an enum for result codes 2022-01-27 17:10:28 +08:00
request.rs Use an enum for result codes 2022-01-27 17:10:28 +08:00
response.rs Use DateTime types where possible 2022-02-25 00:12:48 +08:00
xml.rs Preserve quick-xml errors 2021-12-27 15:29:09 +08:00