Commit Graph

263 Commits

Author SHA1 Message Date
Dirkjan Ochtman
eab64aa740 Look up server IP address on every connect 2022-12-14 19:41:48 +01:00
Rudi Floren
ed3bfdbcfa add consts for common periods
This allows using common periods without checking the error at runtime.
2022-11-29 22:43:10 +08:00
Dirkjan Ochtman
0f052ea125 Bump quick-xml to 0.26 2022-11-29 22:43:10 +08:00
Dirkjan Ochtman
a34dbdcf82 Apply clippy suggestions 2022-11-29 22:43:10 +08:00
Dirkjan Ochtman
698bab9b2b Reduce Error type size by boxing result state 2022-11-29 22:43:10 +08:00
Dirkjan Ochtman
406f63e02e Update to work around deprecated chrono API 2022-11-29 22:43:10 +08:00
Mari
71b6bac96a change doc tests 2022-09-07 06:03:16 +08:00
Mari
e9cf8bc3f9 set new-password as argument 2022-09-07 06:03:16 +08:00
Mari
391df88509 rust fmt 2022-09-07 06:03:16 +08:00
Mari
63406ef308 Update basic tests to new syntax 2022-09-07 06:03:16 +08:00
Mari
cc08819fdc Allow changing passwords 2022-09-07 06:03:16 +08:00
Dirkjan Ochtman
1395cd6235 Upgrade quick-xml to 0.23 2022-08-17 20:52:06 +02:00
Dirkjan Ochtman
14ffc8db01 Change MessageAck message_id to be a &str
While all the examples in RFC 5730 use numbers, there is nothing
normative in section 2.9.2.3 that constrains msgID to be a number.
And if we look at the XML Schema, we find that msgID is defined
to be of type `token`, which seems to be defined as a string
that does not contain line feeds, carriage returns, tabs, leading
or trailing spaces or multiple spaces.

While we might define a more specific token type in the future,
for now sticking with just &str seems reasonable and this also
matches the type for `MessageQueue::id`.
2022-08-05 02:22:54 +08:00
Ritesh Chitlangi
20ab056dcf update doc and release 0.4 2022-07-26 14:49:37 +08:00
Dirkjan Ochtman
ca19e545fd Flatten XML abstraction 2022-03-22 16:47:12 +08:00
Dirkjan Ochtman
3f91647370 Move response deserialization into client 2022-03-22 16:47:12 +08:00
Dirkjan Ochtman
dd5fbc60ce Simplify response tests with a helper 2022-03-22 16:47:12 +08:00
Dirkjan Ochtman
5dce8501d5 Let callers create CommandDocument directly 2022-03-22 16:47:12 +08:00
Dirkjan Ochtman
dd07ecc4b8 Externalize handling of command serialization 2022-03-22 16:47:12 +08:00
Nicholas Rempel
dd3c60f50e Move request/response debug logging to client 2022-03-14 23:41:41 +08:00
Dirkjan Ochtman
ace791b521 Add test for dropping request future 2022-03-14 23:41:41 +08:00
Dirkjan Ochtman
ae4c9869ab Improve robustness against dropping futures 2022-03-14 23:41:41 +08:00
Dirkjan Ochtman
478e686f24 Add more logging around reconnects 2022-03-14 23:41:41 +08:00
Dirkjan Ochtman
aa589197a1 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-07 21:51:00 +01:00
Dirkjan Ochtman
7e0a51bebb Use DateTime types where possible 2022-02-25 00:12:48 +08:00
Dirkjan Ochtman
f7d76adef3 Implement AsRef<str> for StringValue 2022-02-25 00:12:48 +08:00
Dirkjan Ochtman
cdbf0a2e65 Replace HostAddr with IpAddr in the public interface 2022-02-16 02:19:47 +08:00
Dirkjan Ochtman
1426312df0 Derive Debug for RequestData 2022-02-10 13:55:34 +08:00
Dirkjan Ochtman
af69f511b5 Generate error events for deserialization failures 2022-02-10 13:55:34 +08:00
Dirkjan Ochtman
53c240be21 Derive Copy on RequestData 2022-02-10 13:55:34 +08:00
Dirkjan Ochtman
386638b6ca Offer API to reconnect an EppClient 2022-02-10 13:55:34 +08:00
Dirkjan Ochtman
36558c429c Allow the Connection to connect itself 2022-02-10 13:55:34 +08:00
Dirkjan Ochtman
95b62891c9 Fix rustdoc warning 2022-02-04 11:39:13 +08:00
Dirkjan Ochtman
88eb9b9cab Simplify/improve crate-level documentation 2022-02-04 11:39:13 +08:00
Dirkjan Ochtman
e482cc152b Deduplicate client example code 2022-02-04 11:39:13 +08:00
Dirkjan Ochtman
dc3f10cae3 Wrap timeouts around network operations 2022-02-04 11:39:13 +08:00
Dirkjan Ochtman
f3aab578e7 Relax lifetime constraints on command + extension combinations
They should not be required to have the same lifetimes.
2022-01-31 14:05:52 +08:00
Dirkjan Ochtman
2639ec8c95 Make the Period type align with the standard 2022-01-31 14:05:16 +08:00
Dirkjan Ochtman
5fb32978bd Improve check request API types by redirecting serialization 2022-01-31 14:04:48 +08:00
Dirkjan Ochtman
fdec3f29fc Redirect CheckResponse deserialization to improve interface 2022-01-31 14:04:48 +08:00
Dirkjan Ochtman
a5d6643d6f Share CheckResponse type with contacts 2022-01-31 14:04:48 +08:00
Dirkjan Ochtman
dd1c9c1e66 Share CheckResponse types for domain and host resources 2022-01-31 14:04:48 +08:00
Dirkjan Ochtman
999149ba31 Share the Available type across domain and host 2022-01-31 14:04:48 +08:00
Dirkjan Ochtman
a6dfe70361 Use bool for availability for contact/host resources as well 2022-01-31 14:04:48 +08:00
Dirkjan Ochtman
0c36d8add3 Use an enum for result codes 2022-01-27 17:10:28 +08:00
Dirkjan Ochtman
630c6b06e4 Change DomainAvailable::available to be a bool
From RFC 5731:

    This element MUST contain an "avail" attribute whose value indicates
    object availability (can it be provisioned or not) at the moment the
    <check> command was completed.  A value of "1" or "true" means that
    the object can be provisioned.  A value of "0" or "false" means that
    the object can not be provisioned.
2022-01-24 16:34:33 +08:00
Dirkjan Ochtman
9acd9eac29 Take Login ext_uris values as a slice to allow caller to avoid allocation
In some cases the caller might be able to use a const slice for this.
2022-01-24 15:34:45 +08:00
Dirkjan Ochtman
58b72f9b0c Make sure Error implements Send and Sync 2022-01-23 23:34:58 +08:00
Nicholas Rempel
4615d63b13 Make it possible to create hosts without addresses 2022-01-19 23:29:55 +08:00
Nicholas Rempel
c0ebbf6b52 Add test case for message only poll response 2022-01-06 19:22:20 +08:00