[evolution-data-server] [SMTP] Log also DATA itself when SMTP logging is enabled
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] [SMTP] Log also DATA itself when SMTP logging is enabled
- Date: Mon, 6 May 2019 10:08:07 +0000 (UTC)
commit 04967aac77f1cca62f438c82216005850530880c
Author: Milan Crha <mcrha redhat com>
Date: Mon May 6 12:08:13 2019 +0200
[SMTP] Log also DATA itself when SMTP logging is enabled
It's not exactly the same DATA being passed to the server, it's encoded
once again after the send of the data to the server, but the data should
be equivalent.
src/camel/providers/smtp/camel-smtp-transport.c | 34 +++++++++++++++++++++++++
1 file changed, 34 insertions(+)
---
diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c
index 7c331cf18..ca3f6a768 100644
--- a/src/camel/providers/smtp/camel-smtp-transport.c
+++ b/src/camel/providers/smtp/camel-smtp-transport.c
@@ -1725,6 +1725,40 @@ smtp_data (CamelSmtpTransport *transport,
CAMEL_DATA_WRAPPER (message),
filtered_stream, cancellable, error);
+ if (camel_debug ("smtp")) {
+ CamelStream *mem_stream, *sec_filtered_stream;
+ GError *local_error = NULL;
+
+ mem_stream = camel_stream_mem_new ();
+ sec_filtered_stream = camel_stream_filter_new (mem_stream);
+
+ filter = camel_mime_filter_crlf_new (
+ CAMEL_MIME_FILTER_CRLF_ENCODE,
+ CAMEL_MIME_FILTER_CRLF_MODE_CRLF_DOTS);
+ camel_stream_filter_add (CAMEL_STREAM_FILTER (sec_filtered_stream), filter);
+ g_object_unref (filter);
+
+ if (camel_data_wrapper_write_to_stream_sync (CAMEL_DATA_WRAPPER (message),
sec_filtered_stream, cancellable, &local_error) == -1) {
+ printf ("[SMTP] Failed to write message to memory stream: %s\n", local_error ?
local_error->message : "Unknown error");
+ } else {
+ GByteArray *bytes;
+
+ camel_stream_flush (sec_filtered_stream, cancellable, NULL);
+
+ bytes = camel_stream_mem_get_byte_array (CAMEL_STREAM_MEM (mem_stream));
+
+ if (!bytes) {
+ printf ("[SMTP] Failed to get filtered stream bytes\n");
+ } else {
+ printf ("[SMTP] sent data (re-encoded):\n%.*s\n", (gint) bytes->len, (const
gchar *) bytes->data);
+ }
+ }
+
+ g_clear_object (&sec_filtered_stream);
+ g_clear_object (&mem_stream);
+ g_clear_error (&local_error);
+ }
+
/* restore the bcc headers */
for (ii = 0; camel_name_value_array_get (previous_headers, ii, &header_name, &header_value); ii++) {
if (!g_ascii_strcasecmp (header_name, "Bcc")) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]