[evolution-data-server/evolution-data-server-3-12] Bug 737951 - CAMEL_DEBUG=smtp should provide information about SMTP server



commit 50b80668b6ff792de3d8754cc35627c433b08b10
Author: Milan Crha <mcrha redhat com>
Date:   Mon Oct 13 14:44:37 2014 +0200

    Bug 737951 - CAMEL_DEBUG=smtp should provide information about SMTP server
    
    This also adds more detailed debugging about the sent and received data
    between the server and the client.

 camel/providers/smtp/camel-smtp-transport.c |   68 +++++++++++++++++++++------
 1 files changed, 54 insertions(+), 14 deletions(-)
---
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index 7daa1df..fabeaa7 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -166,6 +166,7 @@ connect_to_server (CamelService *service,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("Welcome response error: "));
                        transport->connected = FALSE;
@@ -218,7 +219,7 @@ connect_to_server (CamelService *service,
                goto exit;
        }
 
-       d (fprintf (stderr, "sending : STARTTLS\r\n"));
+       d (fprintf (stderr, "[SMTP] sending: STARTTLS\r\n"));
        if (camel_stream_write (
                stream, "STARTTLS\r\n", 10, cancellable, error) == -1) {
                g_prefix_error (error, _("STARTTLS command failed: "));
@@ -234,6 +235,7 @@ connect_to_server (CamelService *service,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("STARTTLS command failed: "));
                        transport->connected = FALSE;
@@ -364,6 +366,31 @@ smtp_transport_get_name (CamelService *service,
        return name;
 }
 
+static void
+smtp_debug_print_server_name (CamelService *service,
+                             const gchar *what)
+{
+       CamelNetworkSettings *network_settings;
+       CamelSettings *settings;
+       gchar *host;
+       gint port;
+
+       if (d(1) + 0 == 0)
+               return;
+
+       settings = camel_service_ref_settings (service);
+
+       network_settings = CAMEL_NETWORK_SETTINGS (settings);
+       host = camel_network_settings_dup_host (network_settings);
+       port = camel_network_settings_get_port (network_settings);
+
+       g_object_unref (settings);
+
+       fprintf (stderr, "[SMTP] %s server %s:%d from account %s\r\n", what, host, port, 
camel_service_get_uid (service));
+
+       g_free (host);
+}
+
 static gboolean
 smtp_transport_connect_sync (CamelService *service,
                              GCancellable *cancellable,
@@ -377,6 +404,8 @@ smtp_transport_connect_sync (CamelService *service,
        gboolean auth_required;
        gboolean success = TRUE;
 
+       smtp_debug_print_server_name (service, "Connecting to");
+
        settings = camel_service_ref_settings (service);
 
        network_settings = CAMEL_NETWORK_SETTINGS (settings);
@@ -528,7 +557,7 @@ smtp_transport_authenticate_sync (CamelService *service,
                return CAMEL_AUTHENTICATION_ERROR;
        }
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
        if (camel_stream_write_string (
                transport->ostream, cmdbuf,
                cancellable, error) == -1) {
@@ -541,6 +570,7 @@ smtp_transport_authenticate_sync (CamelService *service,
        respbuf = camel_stream_buffer_read_line (
                CAMEL_STREAM_BUFFER (transport->istream),
                cancellable, error);
+       d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
 
        while (!camel_sasl_get_authenticated (sasl)) {
                if (!respbuf) {
@@ -564,7 +594,7 @@ smtp_transport_authenticate_sync (CamelService *service,
                if (FALSE) {
                broken_smtp_server:
                        d (fprintf (
-                               stderr, "Your SMTP server's implementation "
+                               stderr, "[SMTP] Your SMTP server's implementation "
                                "of the %s SASL\nauthentication mechanism is "
                                "broken. Please report this to the\n"
                                "appropriate vendor and suggest that they "
@@ -586,7 +616,7 @@ smtp_transport_authenticate_sync (CamelService *service,
                /* send our challenge */
                cmdbuf = g_strdup_printf ("%s\r\n", challenge);
                g_free (challenge);
-               d (fprintf (stderr, "sending : %s", cmdbuf));
+               d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
                if (camel_stream_write_string (
                        transport->ostream, cmdbuf,
                        cancellable, error) == -1) {
@@ -599,6 +629,7 @@ smtp_transport_authenticate_sync (CamelService *service,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
        }
 
        if (respbuf == NULL)
@@ -627,11 +658,11 @@ smtp_transport_authenticate_sync (CamelService *service,
 
 break_and_lose:
        /* Get the server out of "waiting for continuation data" mode. */
-       d (fprintf (stderr, "sending : *\n"));
+       d (fprintf (stderr, "[SMTP] sending: *\n"));
        camel_stream_write (transport->ostream, "*\r\n", 3, cancellable, NULL);
        respbuf = camel_stream_buffer_read_line (
                CAMEL_STREAM_BUFFER (transport->istream), cancellable, NULL);
-       d (fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
+       d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
 
 lose:
        result = CAMEL_AUTHENTICATION_ERROR;
@@ -694,6 +725,8 @@ smtp_transport_send_to_sync (CamelTransport *transport,
        const gchar *addr;
        gint i, len;
 
+       smtp_debug_print_server_name (CAMEL_SERVICE (transport), "Sending with");
+
        if (!smtp_transport->connected) {
                g_set_error (
                        error, CAMEL_SERVICE_ERROR,
@@ -1104,6 +1137,7 @@ smtp_set_error (CamelSmtpTransport *transport,
                        buffer = camel_stream_buffer_read_line (
                                CAMEL_STREAM_BUFFER (transport->istream),
                                cancellable, NULL);
+                       d (fprintf (stderr, "[SMTP] received: %s\n", buffer ? buffer : "(null)"));
                        g_string_append_c (string, '\n');
                } else {
                        g_free (buffer);
@@ -1210,7 +1244,7 @@ smtp_helo (CamelSmtpTransport *transport,
        cmdbuf = g_strdup_printf ("%s %s\r\n", token, name);
        g_free (name);
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
        if (camel_stream_write_string (
                transport->ostream, cmdbuf, cancellable, error) == -1) {
                g_free (cmdbuf);
@@ -1227,6 +1261,7 @@ smtp_helo (CamelSmtpTransport *transport,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("HELO command failed: "));
                        transport->connected = FALSE;
@@ -1306,7 +1341,7 @@ smtp_mail (CamelSmtpTransport *transport,
        else
                cmdbuf = g_strdup_printf ("MAIL FROM:<%s>\r\n", sender);
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
 
        if (camel_stream_write_string (
                transport->ostream, cmdbuf, cancellable, error) == -1) {
@@ -1325,6 +1360,7 @@ smtp_mail (CamelSmtpTransport *transport,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("MAIL FROM command failed: "));
                        camel_service_disconnect_sync (
@@ -1358,7 +1394,7 @@ smtp_rcpt (CamelSmtpTransport *transport,
 
        cmdbuf = g_strdup_printf ("RCPT TO:<%s>\r\n", recipient);
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
 
        if (camel_stream_write_string (
                transport->ostream, cmdbuf, cancellable, error) == -1) {
@@ -1378,6 +1414,7 @@ smtp_rcpt (CamelSmtpTransport *transport,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (
                                error, _("RCPT TO <%s> failed: "), recipient);
@@ -1428,7 +1465,7 @@ smtp_data (CamelSmtpTransport *transport,
 
        cmdbuf = g_strdup ("DATA\r\n");
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
 
        if (camel_stream_write_string (
                transport->ostream, cmdbuf, cancellable, error) == -1) {
@@ -1443,6 +1480,7 @@ smtp_data (CamelSmtpTransport *transport,
 
        respbuf = camel_stream_buffer_read_line (
                CAMEL_STREAM_BUFFER (transport->istream), cancellable, error);
+       d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
        if (respbuf == NULL) {
                g_prefix_error (error, _("DATA command failed: "));
                camel_service_disconnect_sync (
@@ -1529,7 +1567,7 @@ smtp_data (CamelSmtpTransport *transport,
 
        /* terminate the message body */
 
-       d (fprintf (stderr, "sending : \\r\\n.\\r\\n\n"));
+       d (fprintf (stderr, "[SMTP] sending: \\r\\n.\\r\\n\n"));
 
        if (camel_stream_write (
                transport->ostream, "\r\n.\r\n", 5,
@@ -1547,6 +1585,7 @@ smtp_data (CamelSmtpTransport *transport,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("DATA command failed: "));
                        camel_service_disconnect_sync (
@@ -1577,7 +1616,7 @@ smtp_rset (CamelSmtpTransport *transport,
 
        cmdbuf = g_strdup ("RSET\r\n");
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
 
        if (camel_stream_write_string (
                transport->ostream, cmdbuf, cancellable, error) == -1) {
@@ -1596,6 +1635,7 @@ smtp_rset (CamelSmtpTransport *transport,
                respbuf = camel_stream_buffer_read_line (
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("RSET command failed: "));
                        camel_service_disconnect_sync (
@@ -1626,7 +1666,7 @@ smtp_quit (CamelSmtpTransport *transport,
 
        cmdbuf = g_strdup ("QUIT\r\n");
 
-       d (fprintf (stderr, "sending : %s", cmdbuf));
+       d (fprintf (stderr, "[SMTP] sending: %s", cmdbuf));
 
        if (camel_stream_write_string (
                transport->ostream, cmdbuf, cancellable, error) == -1) {
@@ -1643,7 +1683,7 @@ smtp_quit (CamelSmtpTransport *transport,
                        CAMEL_STREAM_BUFFER (transport->istream),
                        cancellable, error);
 
-               d (fprintf (stderr, "received: %s\n", respbuf ? respbuf : "(null)"));
+               d (fprintf (stderr, "[SMTP] received: %s\n", respbuf ? respbuf : "(null)"));
                if (respbuf == NULL) {
                        g_prefix_error (error, _("QUIT command failed: "));
                        transport->connected = FALSE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]