[geary/wip/actually-imap-logout: 1106/1111] Handle the expected untagged IMAP BYE status on LOGOUT
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/wip/actually-imap-logout: 1106/1111] Handle the expected untagged IMAP BYE status on LOGOUT
- Date: Sun, 1 Dec 2019 07:53:26 +0000 (UTC)
commit 76190409fd52c68616b5fee2a3cd01e60fc52d44
Author: Michael Gratton <mike vee net>
Date: Thu Feb 7 14:00:08 2019 +1100
Handle the expected untagged IMAP BYE status on LOGOUT
src/engine/imap/transport/imap-client-session.vala | 33 ++++++++++++++++++++--
1 file changed, 31 insertions(+), 2 deletions(-)
---
diff --git a/src/engine/imap/transport/imap-client-session.vala
b/src/engine/imap/transport/imap-client-session.vala
index d26aef7a..3f1bc598 100644
--- a/src/engine/imap/transport/imap-client-session.vala
+++ b/src/engine/imap/transport/imap-client-session.vala
@@ -452,7 +452,7 @@ public class Geary.Imap.ClientSession : BaseObject {
new Geary.State.Mapping(State.LOGGING_OUT, Event.CLOSE_MAILBOX, on_late_command),
new Geary.State.Mapping(State.LOGGING_OUT, Event.LOGOUT, Geary.State.nop),
new Geary.State.Mapping(State.LOGGING_OUT, Event.DISCONNECT, on_disconnect),
- new Geary.State.Mapping(State.LOGGING_OUT, Event.RECV_STATUS, on_dropped_response),
+ new Geary.State.Mapping(State.LOGGING_OUT, Event.RECV_STATUS, on_logging_out_recv_status),
new Geary.State.Mapping(State.LOGGING_OUT, Event.RECV_COMPLETION,
on_logging_out_recv_completion),
new Geary.State.Mapping(State.LOGGING_OUT, Event.RECV_ERROR, on_recv_error),
new Geary.State.Mapping(State.LOGGING_OUT, Event.SEND_ERROR, on_send_error),
@@ -1352,7 +1352,8 @@ public class Geary.Imap.ClientSession : BaseObject {
break;
case Status.BYE:
- debug("[%s] Received BYE from server: %s", to_string(), status_response.to_string());
+ debug("[%s] Received unilateral BYE from server: %s",
+ to_string(), status_response.to_string());
// nothing more we can do; drop connection and report disconnect to user
cx.disconnect_async.begin(null, on_bye_disconnect_completed);
@@ -1556,6 +1557,34 @@ public class Geary.Imap.ClientSession : BaseObject {
return State.LOGGING_OUT;
}
+ private uint on_logging_out_recv_status(uint state,
+ uint event,
+ void *user,
+ Object? object) {
+ StatusResponse status_response = (StatusResponse) object;
+
+ switch (status_response.status) {
+ case Status.OK:
+ // some good-feeling text that doesn't need to be
+ // handled when in this state
+ break;
+
+ case Status.BYE:
+ // We're expecting this bye, but don't disconnect yet
+ // since we'll do that when the command is complete
+ debug("[%s] Received bye from server on logout: %s",
+ to_string(), status_response.to_string());
+ break;
+
+ default:
+ debug("[%s] Received error from server on logout: %s",
+ to_string(), status_response.to_string());
+ break;
+ }
+
+ return state;
+ }
+
private uint on_logging_out_recv_completion(uint state, uint event, void *user, Object? object) {
StatusResponse completion_response = (StatusResponse) object;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]