Blame SOURCES/evolution-data-server-3.12.11-smtp-timeout-change.patch

5e6360
diff -up evolution-data-server-3.12.11/camel/camel-network-service.c.smtp-timeout-change evolution-data-server-3.12.11/camel/camel-network-service.c
5e6360
--- evolution-data-server-3.12.11/camel/camel-network-service.c.smtp-timeout-change	2015-01-12 14:23:00.000000000 +0100
5e6360
+++ evolution-data-server-3.12.11/camel/camel-network-service.c	2015-05-28 11:29:50.007493148 +0200
5e6360
@@ -659,8 +659,10 @@ network_service_connect_sync (CamelNetwo
5e6360
 		GSocket *socket;
5e6360
 
5e6360
 		socket = g_socket_connection_get_socket (connection);
5e6360
-		if (socket)
5e6360
+		if (socket) {
5e6360
 			g_socket_set_timeout (socket, 90);
5e6360
+			g_socket_set_keepalive (socket, TRUE);
5e6360
+		}
5e6360
 	}
5e6360
 
5e6360
 	return (connection != NULL) ? G_IO_STREAM (connection) : NULL;
5e6360
diff -up evolution-data-server-3.12.11/camel/camel-stream.c.smtp-timeout-change evolution-data-server-3.12.11/camel/camel-stream.c
5e6360
--- evolution-data-server-3.12.11/camel/camel-stream.c.smtp-timeout-change	2015-05-28 11:30:32.653491341 +0200
5e6360
+++ evolution-data-server-3.12.11/camel/camel-stream.c	2015-05-28 11:30:37.965491116 +0200
5e6360
@@ -149,20 +149,25 @@ stream_write (CamelStream *stream,
5e6360
               GError **error)
5e6360
 {
5e6360
 	GIOStream *base_stream;
5e6360
-	gssize n_bytes_written = (gssize) n;
5e6360
+	gssize n_bytes_written = -1;
5e6360
 
5e6360
 	base_stream = camel_stream_ref_base_stream (stream);
5e6360
 
5e6360
 	if (base_stream != NULL) {
5e6360
 		GOutputStream *output_stream;
5e6360
+		gsize n_written = 0;
5e6360
 
5e6360
 		output_stream = g_io_stream_get_output_stream (base_stream);
5e6360
 		stream->eos = FALSE;
5e6360
 
5e6360
-		n_bytes_written = g_output_stream_write (
5e6360
-			output_stream, buffer, n, cancellable, error);
5e6360
+		if (g_output_stream_write_all (output_stream, buffer, n, &n_written, cancellable, error))
5e6360
+			n_bytes_written = (gssize) n_written;
5e6360
+		else
5e6360
+			n_bytes_written = -1;
5e6360
 
5e6360
 		g_object_unref (base_stream);
5e6360
+	} else {
5e6360
+		g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, _("Cannot write with no base stream"));
5e6360
 	}
5e6360
 
5e6360
 	return n_bytes_written;
5e6360
diff -up evolution-data-server-3.12.11/camel/providers/smtp/camel-smtp-transport.c.smtp-timeout-change evolution-data-server-3.12.11/camel/providers/smtp/camel-smtp-transport.c
5e6360
--- evolution-data-server-3.12.11/camel/providers/smtp/camel-smtp-transport.c.smtp-timeout-change	2014-10-14 15:32:01.000000000 +0200
5e6360
+++ evolution-data-server-3.12.11/camel/providers/smtp/camel-smtp-transport.c	2015-05-28 11:29:50.007493148 +0200
5e6360
@@ -1444,6 +1444,36 @@ smtp_rcpt (CamelSmtpTransport *transport
5e6360
 	return TRUE;
5e6360
 }
5e6360
 
5e6360
+static void
5e6360
+smtp_maybe_update_socket_timeout (CamelStream *strm,
5e6360
+				  gint timeout_seconds)
5e6360
+{
5e6360
+	GIOStream *base_strm = camel_stream_ref_base_stream (strm);
5e6360
+
5e6360
+	if (G_IS_TLS_CONNECTION (base_strm)) {
5e6360
+		GIOStream *base_io_stream = NULL;
5e6360
+
5e6360
+		g_object_get (G_OBJECT (base_strm), "base-io-stream", &base_io_stream, NULL);
5e6360
+
5e6360
+		g_object_unref (base_strm);
5e6360
+		base_strm = base_io_stream;
5e6360
+	} else if (base_strm) {
5e6360
+		g_object_ref (base_strm);
5e6360
+	}
5e6360
+
5e6360
+	if (G_IS_SOCKET_CONNECTION (base_strm)) {
5e6360
+		GSocket *socket;
5e6360
+
5e6360
+		socket = g_socket_connection_get_socket (G_SOCKET_CONNECTION (base_strm));
5e6360
+		if (socket) {
5e6360
+			if (timeout_seconds > g_socket_get_timeout (socket))
5e6360
+				g_socket_set_timeout (socket, timeout_seconds);
5e6360
+		}
5e6360
+	}
5e6360
+
5e6360
+	g_clear_object (&base_strm);
5e6360
+}
5e6360
+
5e6360
 static gboolean
5e6360
 smtp_data (CamelSmtpTransport *transport,
5e6360
            CamelMimeMessage *message,
5e6360
@@ -1532,6 +1562,9 @@ smtp_data (CamelSmtpTransport *transport
5e6360
 		CAMEL_DATA_WRAPPER (message),
5e6360
 		CAMEL_STREAM (null), NULL, NULL);
5e6360
 
5e6360
+	/* Set the upload timeout to an equal of 512 bytes per second */
5e6360
+	smtp_maybe_update_socket_timeout (transport->ostream, null->written / 512);
5e6360
+
5e6360
 	filtered_stream = camel_stream_filter_new (transport->ostream);
5e6360
 
5e6360
 	/* setup progress reporting for message sending... */