hrev43681 adds 1 changeset to branch 'master' old head: d3ff06683af390a4c2e83b69177e0a2eb76679bc new head: fd391ef3c26ca350b10f11fd351003296e60d8ad ---------------------------------------------------------------------------- fd391ef: mail kit: Improve debugging of internal mail kit network code * Return the correct error code if there is a connection error * Be more verbose if there is a problem network connection problem instead of showing "Login error: " * IMAP inbound: Show a valid error message if there is a * Show server name resolution, fishes out IPv6 bug #8293 [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev43681 Commit: fd391ef3c26ca350b10f11fd351003296e60d8ad URL: http://cgit.haiku-os.org/haiku/commit/?id=fd391ef Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Sun Jan 22 06:12:07 2012 UTC Ticket: https://dev.haiku-os.org/ticket/8293 ---------------------------------------------------------------------------- 2 files changed, 16 insertions(+), 4 deletions(-) .../inbound_protocols/imap/IMAPInboundProtocol.cpp | 11 +++++++++-- src/kits/mail/ServerConnection.cpp | 9 +++++++-- ---------------------------------------------------------------------------- diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp index 8784ba3..2aa44fa 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPInboundProtocol.cpp @@ -345,8 +345,15 @@ IMAPInboundProtocol::Connect(const char* server, const char* username, status_t status = fIMAPMailbox.Connect(server, username, password, useSSL, port); if (status != B_OK) { - statusMessage = "Failed to login: "; - statusMessage += fIMAPMailbox.CommandError(); + if (fIMAPMailbox.CommandError().CountChars() > 0) { + // This was a IMAP error + statusMessage = "Failed to login: "; + statusMessage += fIMAPMailbox.CommandError(); + } else { + // Probably a connection error + statusMessage = "Connection error: "; + statusMessage += strerror(status); + } ShowError(statusMessage); ResetProgress(); return status; diff --git a/src/kits/mail/ServerConnection.cpp b/src/kits/mail/ServerConnection.cpp index f7d34de..819be34 100644 --- a/src/kits/mail/ServerConnection.cpp +++ b/src/kits/mail/ServerConnection.cpp @@ -224,14 +224,19 @@ SocketConnection::Connect(const char* server, uint32 port) if (status != B_OK) return status; + TRACE("Server resolves to %s\n", address.ToString().String()); + fSocket = socket(address.Family(), SOCK_STREAM, 0); - if (fSocket < 0) + if (fSocket < 0) { + TRACE("%s: Socket Error: %s\n", __func__, strerror(status)); return errno; + } int result = connect(fSocket, address, address.Length()); if (result < 0) { + TRACE("%s: Connect Error: %s\n", __func__, strerror(result)); close(fSocket); - return errno; + return result; } TRACE("SocketConnection: connected\n");