aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog8
-rw-r--r--camel/providers/smtp/camel-smtp-transport.c59
2 files changed, 37 insertions, 30 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 7a5bb2537f..37f3dbbce3 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,11 @@
+2000-05-08 Jeffrey Stedfast <fejj@stampede.org>
+
+ * camel-smtp-transport.c: no longer frees memory it shouldn't,
+ updated to reflect camel-stream changes involving CamelException
+ (perhaps it should use a different CamelException variable than
+ is passed to the camel smtp module?)
+
+
2000-05-08 Dan Winship <danw@helixcode.com>
* camel-stream.c (camel_stream_read, camel_stream_write,
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index b32936012a..ed7b3fb2be 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -43,7 +43,7 @@
#include "camel-exception.h"
#include "md5-utils.h"
-/* Specified in RFC ???? */
+/* Specified in RFC 821 */
#define SMTP_PORT 25
static CamelServiceClass *service_class = NULL;
@@ -102,7 +102,7 @@ camel_smtp_transport_get_type (void)
{
static GtkType camel_smtp_transport_type = 0;
- if (!camel_smtp_transport_type) {
+ if (!camel_smtp_transport_type) {
GtkTypeInfo camel_smtp_transport_info =
{
"CamelSmtpTransport",
@@ -161,7 +161,7 @@ smtp_connect (CamelService *service, CamelException *ex)
do {
/* Check for "220" */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "220", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"Welcome response error: "
@@ -270,7 +270,7 @@ _send_to (CamelTransport *transport, CamelMedium *message,
if (!camel_service_is_connected (service))
smtp_connect (service, ex);
- s = camel_mime_message_get_from (CAMEL_MIME_MESSAGE(message));
+ s = g_strdup(camel_mime_message_get_from (CAMEL_MIME_MESSAGE(message)));
if (!s) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"Cannot send message: "
@@ -281,7 +281,7 @@ _send_to (CamelTransport *transport, CamelMedium *message,
sender = smtp_get_email_addr_from_text(s);
smtp_mail(smtp_transport, sender, ex);
g_free(sender);
- g_free(s);
+ g_free(s);
if (!(len = g_list_length(recipients))) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
@@ -311,16 +311,15 @@ static gboolean
_send (CamelTransport *transport, CamelMedium *message,
CamelException *ex)
{
- GList *to, *cc, *bcc, *recipients;
+ const CamelInternetAddress *to, *cc, *bcc;
+ GList *recipients = NULL;
- to = camel_mime_message_get_recipients ((CamelMimeMessage *) message, "To");
- cc = camel_mime_message_get_recipients ((CamelMimeMessage *) message, "Cc");
- bcc = camel_mime_message_get_recipients ((CamelMimeMessage *) message, "Bcc");
- recipients = g_list_concat(to, cc);
- recipients = g_list_concat(recipients, bcc);
- g_list_free(to);
- g_list_free(cc);
- g_list_free(bcc);
+ /* TODO: we want to dump all recipient addresses into a GList */
+ to = camel_mime_message_get_recipients ((CamelMimeMessage *) message, CAMEL_RECIPIENT_TYPE_TO);
+ cc = camel_mime_message_get_recipients ((CamelMimeMessage *) message, CAMEL_RECIPIENT_TYPE_CC);
+ bcc = camel_mime_message_get_recipients ((CamelMimeMessage *) message, CAMEL_RECIPIENT_TYPE_BCC);
+ /*recipients = g_list_concat(to, cc);
+ recipients = g_list_concat(recipients, bcc);*/
return _send_to (transport, message, recipients, ex);
}
@@ -427,7 +426,7 @@ smtp_helo (CamelSmtpTransport *transport, CamelException *ex)
cmdbuf = g_strdup_printf ("EHLO %s\r\n", localhost);
else
cmdbuf = g_strdup_printf ("HELO %s\r\n", localhost);
- if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf)) == -1) {
+ if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf), ex) == -1) {
g_free(cmdbuf);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"HELO request timed out: "
@@ -440,7 +439,7 @@ smtp_helo (CamelSmtpTransport *transport, CamelException *ex)
do {
/* Check for "250" */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "250", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"HELO response error: "
@@ -462,7 +461,7 @@ smtp_mail (CamelSmtpTransport *transport, gchar *sender, CamelException *ex)
/* enclose address in <>'s since some SMTP daemons *require* that */
cmdbuf = g_strdup_printf("MAIL FROM: <%s>\r\n", sender);
- if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf)) == -1) {
+ if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf), ex) == -1) {
g_free(cmdbuf);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"MAIL FROM request timed out: "
@@ -475,7 +474,7 @@ smtp_mail (CamelSmtpTransport *transport, gchar *sender, CamelException *ex)
do {
/* Check for "250 Sender OK..." */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "250", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"MAIL FROM response error: "
@@ -498,7 +497,7 @@ smtp_rcpt (CamelSmtpTransport *transport, gchar *recipient, CamelException *ex)
/* enclose address in <>'s since some SMTP daemons *require* that */
cmdbuf = g_strdup_printf("RCPT TO: <%s>\r\n", recipient);
- if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf)) == -1) {
+ if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf), ex) == -1) {
g_free(cmdbuf);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"RCPT TO request timed out: "
@@ -511,7 +510,7 @@ smtp_rcpt (CamelSmtpTransport *transport, gchar *recipient, CamelException *ex)
do {
/* Check for "250 Sender OK..." */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "250", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"RCPT TO response error: "
@@ -535,7 +534,7 @@ smtp_data (CamelSmtpTransport *transport, CamelMedium *message, CamelException *
/* enclose address in <>'s since some SMTP daemons *require* that */
cmdbuf = g_strdup("DATA\r\n");
- if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf)) == -1) {
+ if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf), ex) == -1) {
g_free(cmdbuf);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"DATA request timed out: "
@@ -545,7 +544,7 @@ smtp_data (CamelSmtpTransport *transport, CamelMedium *message, CamelException *
}
g_free(cmdbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "354", 3) ) {
/* we should have gotten instructions on how to use the DATA command:
* 354 Enter mail, end with "." on a line by itself
@@ -562,7 +561,7 @@ smtp_data (CamelSmtpTransport *transport, CamelMedium *message, CamelException *
message_stream = camel_stream_buffer_new(CAMEL_DATA_WRAPPER (message)->output_stream, CAMEL_STREAM_BUFFER_READ);
while (1) {
/* send 1 line at a time */
- buf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER(message_stream));
+ buf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER(message_stream), ex);
if (!buf)
break;
@@ -573,7 +572,7 @@ smtp_data (CamelSmtpTransport *transport, CamelMedium *message, CamelException *
chunk = g_strconcat(buf, "\r\n", NULL);
/* write the line */
- if ( camel_stream_write (transport->ostream, chunk, strlen(chunk)) == -1) {
+ if ( camel_stream_write (transport->ostream, chunk, strlen(chunk), ex) == -1) {
g_free(chunk);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"DATA send timed out: message body: "
@@ -585,7 +584,7 @@ smtp_data (CamelSmtpTransport *transport, CamelMedium *message, CamelException *
}
/* terminate the message body */
- if ( camel_stream_write (transport->ostream, "\r\n.\r\n", 5) == -1) {
+ if ( camel_stream_write (transport->ostream, "\r\n.\r\n", 5, ex) == -1) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"DATA send timed out: message termination: "
"%s: mail not sent",
@@ -596,7 +595,7 @@ smtp_data (CamelSmtpTransport *transport, CamelMedium *message, CamelException *
do {
/* Check for "250 Sender OK..." */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "250", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"DATA response error: message termination: "
@@ -617,7 +616,7 @@ smtp_rset (CamelSmtpTransport *transport, CamelException *ex)
gchar *cmdbuf, *respbuf = NULL;
cmdbuf = g_strdup ("RSET\r\n");
- if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf)) == -1) {
+ if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf), ex) == -1) {
g_free(cmdbuf);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"RSET request timed out: "
@@ -630,7 +629,7 @@ smtp_rset (CamelSmtpTransport *transport, CamelException *ex)
do {
/* Check for "250" */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "250", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"RSET response error: "
@@ -651,7 +650,7 @@ smtp_quit (CamelSmtpTransport *transport, CamelException *ex)
gchar *cmdbuf, *respbuf = NULL;
cmdbuf = g_strdup ("QUIT\r\n");
- if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf)) == -1) {
+ if ( camel_stream_write (transport->ostream, cmdbuf, strlen(cmdbuf), ex) == -1) {
g_free(cmdbuf);
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"QUIT request timed out: "
@@ -664,7 +663,7 @@ smtp_quit (CamelSmtpTransport *transport, CamelException *ex)
do {
/* Check for "221" */
g_free(respbuf);
- respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream));
+ respbuf = camel_stream_buffer_read_line (CAMEL_STREAM_BUFFER (transport->istream), ex);
if ( !respbuf || strncmp(respbuf, "221", 3) ) {
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
"QUIT response error: "