X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ftransport%2Fplugin_transport_smtp.c;h=b589e117786b61ae6e49e1b7149f4609c02511ca;hb=f181f6eaf8cdb1fdb47dc98cf171ad1be842b441;hp=ec54d3f22a4c9040966332ae7dea5313ba691fbd;hpb=fe947a9704bed14c2fc74b2f2069596fe884cbad;p=oweals%2Fgnunet.git diff --git a/src/transport/plugin_transport_smtp.c b/src/transport/plugin_transport_smtp.c index ec54d3f22..b589e1177 100644 --- a/src/transport/plugin_transport_smtp.c +++ b/src/transport/plugin_transport_smtp.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -40,7 +40,7 @@ */ #define SMTP_MESSAGE_SIZE 65528 -#define DEBUG_SMTP GNUNET_NO +#define DEBUG_SMTP GNUNET_EXTRA_LOGGING #define FILTER_STRING_SIZE 64 @@ -72,6 +72,8 @@ typedef struct } EmailAddress; +GNUNET_NETWORK_STRUCT_BEGIN + /** * Encapsulation of a GNUnet message in the SMTP mail body (before * base64 encoding). @@ -86,6 +88,7 @@ typedef struct GNUNET_PeerIdentity sender; } SMTPMessage; +GNUNET_NETWORK_STRUCT_END /* *********** globals ************* */ @@ -145,8 +148,8 @@ static GNUNET_CronTime last_transmission; /** ******************** Base64 encoding ***********/ #define FILLCHAR '=' -static char *cvt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; +static char *cvt = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; /** * Encode into Base64. @@ -171,49 +174,51 @@ base64_encode (const char *data, unsigned int len, char **output) (*output)[ret++] = '\n'; \ } ret = 0; - opt = GNUNET_malloc (2 + (((len * 4 / 3) + 8) * (MAX_CHAR_PER_LINE + 2)) / - MAX_CHAR_PER_LINE); + opt = + GNUNET_malloc (2 + + (((len * 4 / 3) + 8) * (MAX_CHAR_PER_LINE + + 2)) / MAX_CHAR_PER_LINE); /* message must start with \r\n for libesmtp */ *output = opt; opt[0] = '\r'; opt[1] = '\n'; ret += 2; for (i = 0; i < len; ++i) + { + c = (data[i] >> 2) & 0x3f; + opt[ret++] = cvt[(int) c]; + CHECKLINE; + c = (data[i] << 4) & 0x3f; + if (++i < len) + c |= (data[i] >> 4) & 0x0f; + opt[ret++] = cvt[(int) c]; + CHECKLINE; + if (i < len) { - c = (data[i] >> 2) & 0x3f; + c = (data[i] << 2) & 0x3f; + if (++i < len) + c |= (data[i] >> 6) & 0x03; opt[ret++] = cvt[(int) c]; CHECKLINE; - c = (data[i] << 4) & 0x3f; - if (++i < len) - c |= (data[i] >> 4) & 0x0f; + } + else + { + ++i; + opt[ret++] = FILLCHAR; + CHECKLINE; + } + if (i < len) + { + c = data[i] & 0x3f; opt[ret++] = cvt[(int) c]; CHECKLINE; - if (i < len) - { - c = (data[i] << 2) & 0x3f; - if (++i < len) - c |= (data[i] >> 6) & 0x03; - opt[ret++] = cvt[(int) c]; - CHECKLINE; - } - else - { - ++i; - opt[ret++] = FILLCHAR; - CHECKLINE; - } - if (i < len) - { - c = data[i] & 0x3f; - opt[ret++] = cvt[(int) c]; - CHECKLINE; - } - else - { - opt[ret++] = FILLCHAR; - CHECKLINE; - } } + else + { + opt[ret++] = FILLCHAR; + CHECKLINE; + } + } opt[ret++] = FILLCHAR; return ret; } @@ -252,38 +257,38 @@ base64_decode (const char *data, unsigned int len, char **output) "base64_decode decoding len=%d\n", len); #endif for (i = 0; i < len; ++i) + { + CHECK_CRLF; + if (data[i] == FILLCHAR) + break; + c = (char) cvtfind (data[i]); + ++i; + CHECK_CRLF; + c1 = (char) cvtfind (data[i]); + c = (c << 2) | ((c1 >> 4) & 0x3); + (*output)[ret++] = c; + if (++i < len) { CHECK_CRLF; - if (data[i] == FILLCHAR) + c = data[i]; + if (FILLCHAR == c) break; - c = (char) cvtfind (data[i]); - ++i; + c = (char) cvtfind (c); + c1 = ((c1 << 4) & 0xf0) | ((c >> 2) & 0xf); + (*output)[ret++] = c1; + } + if (++i < len) + { CHECK_CRLF; - c1 = (char) cvtfind (data[i]); - c = (c << 2) | ((c1 >> 4) & 0x3); + c1 = data[i]; + if (FILLCHAR == c1) + break; + + c1 = (char) cvtfind (c1); + c = ((c << 6) & 0xc0) | c1; (*output)[ret++] = c; - if (++i < len) - { - CHECK_CRLF; - c = data[i]; - if (FILLCHAR == c) - break; - c = (char) cvtfind (c); - c1 = ((c1 << 4) & 0xf0) | ((c >> 2) & 0xf); - (*output)[ret++] = c1; - } - if (++i < len) - { - CHECK_CRLF; - c1 = data[i]; - if (FILLCHAR == c1) - break; - - c1 = (char) cvtfind (c1); - c = ((c << 6) & 0xc0) | c1; - (*output)[ret++] = c; - } } + } END: return ret; } @@ -323,83 +328,78 @@ listenAndDistribute (void *unused) while (smtp_shutdown == GNUNET_NO) + { + fd = OPEN (pipename, O_RDONLY | O_ASYNC); + if (fd == -1) { - fd = OPEN (pipename, O_RDONLY | O_ASYNC); - if (fd == -1) - { - if (smtp_shutdown == GNUNET_NO) - GNUNET_thread_sleep (5 * GNUNET_CRON_SECONDS); - continue; - } - fdes = fdopen (fd, "r"); - while (smtp_shutdown == GNUNET_NO) - { - /* skip until end of header */ - do - { - READLINE (line, linesize); - } - while ((line[0] != '\r') && (line[0] != '\n')); /* expect newline */ - READLINE (line, linesize); /* read base64 encoded message; decode, process */ - pos = 0; - while (1) - { - pos = strlen (line) - 1; /* ignore new line */ - READLINE (&line[pos], linesize - pos); /* read base64 encoded message; decode, process */ - if ((line[pos] == '\r') || (line[pos] == '\n')) - break; /* empty line => end of message! */ - } - size = base64_decode (line, pos, &out); - if (size < sizeof (SMTPMessage)) - { - GNUNET_GE_BREAK (ectx, 0); - GNUNET_free (out); - goto END; - } - - mp = (SMTPMessage *) & out[size - sizeof (SMTPMessage)]; - if (ntohs (mp->header.size) != size) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_BULK | - GNUNET_GE_USER, - _ - ("Received malformed message via %s. Ignored.\n"), - "SMTP"); + if (smtp_shutdown == GNUNET_NO) + GNUNET_thread_sleep (5 * GNUNET_CRON_SECONDS); + continue; + } + fdes = fdopen (fd, "r"); + while (smtp_shutdown == GNUNET_NO) + { + /* skip until end of header */ + do + { + READLINE (line, linesize); + } + while ((line[0] != '\r') && (line[0] != '\n')); /* expect newline */ + READLINE (line, linesize); /* read base64 encoded message; decode, process */ + pos = 0; + while (1) + { + pos = strlen (line) - 1; /* ignore new line */ + READLINE (&line[pos], linesize - pos); /* read base64 encoded message; decode, process */ + if ((line[pos] == '\r') || (line[pos] == '\n')) + break; /* empty line => end of message! */ + } + size = base64_decode (line, pos, &out); + if (size < sizeof (SMTPMessage)) + { + GNUNET_GE_BREAK (ectx, 0); + GNUNET_free (out); + goto END; + } + + mp = (SMTPMessage *) &out[size - sizeof (SMTPMessage)]; + if (ntohs (mp->header.size) != size) + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER, + _("Received malformed message via %s. Ignored.\n"), + "SMTP"); #if DEBUG_SMTP - GNUNET_GE_LOG (ectx, - GNUNET_GE_DEBUG | GNUNET_GE_REQUEST | - GNUNET_GE_USER, - "Size returned by base64=%d, in the msg=%d.\n", - size, ntohl (mp->size)); + GNUNET_GE_LOG (ectx, + GNUNET_GE_DEBUG | GNUNET_GE_REQUEST | GNUNET_GE_USER, + "Size returned by base64=%d, in the msg=%d.\n", size, + ntohl (mp->size)); #endif - GNUNET_free (out); - goto END; - } - if (stats != NULL) - stats->change (stat_bytesReceived, size); - coreMP = GNUNET_malloc (sizeof (GNUNET_TransportPacket)); - coreMP->msg = out; - coreMP->size = size - sizeof (SMTPMessage); - coreMP->tsession = NULL; - coreMP->sender = mp->sender; + GNUNET_free (out); + goto END; + } + if (stats != NULL) + stats->change (stat_bytesReceived, size); + coreMP = GNUNET_malloc (sizeof (GNUNET_TransportPacket)); + coreMP->msg = out; + coreMP->size = size - sizeof (SMTPMessage); + coreMP->tsession = NULL; + coreMP->sender = mp->sender; #if DEBUG_SMTP - GNUNET_GE_LOG (ectx, - GNUNET_GE_DEBUG | GNUNET_GE_REQUEST | GNUNET_GE_USER, - "SMTP message passed to the core.\n"); + GNUNET_GE_LOG (ectx, GNUNET_GE_DEBUG | GNUNET_GE_REQUEST | GNUNET_GE_USER, + "SMTP message passed to the core.\n"); #endif - coreAPI->receive (coreMP); - } - END: + coreAPI->receive (coreMP); + } +END: #if DEBUG_SMTP - GNUNET_GE_LOG (ectx, - GNUNET_GE_DEBUG | GNUNET_GE_REQUEST | GNUNET_GE_USER, - "SMTP message processed.\n"); + GNUNET_GE_LOG (ectx, GNUNET_GE_DEBUG | GNUNET_GE_REQUEST | GNUNET_GE_USER, + "SMTP message processed.\n"); #endif - if (fdes != NULL) - fclose (fdes); - } + if (fdes != NULL) + fclose (fdes); + } GNUNET_free (line); return NULL; } @@ -423,12 +423,12 @@ api_verify_hello (const GNUNET_MessageHello * hello) maddr = (const EmailAddress *) &hello[1]; if ((ntohs (hello->header.size) != sizeof (GNUNET_MessageHello) + ntohs (hello->senderAddressSize)) || - (maddr->senderAddress[ntohs (hello->senderAddressSize) - 1 - - FILTER_STRING_SIZE] != '\0')) - { - GNUNET_GE_BREAK (ectx, 0); - return GNUNET_SYSERR; /* obviously invalid */ - } + (maddr->senderAddress + [ntohs (hello->senderAddressSize) - 1 - FILTER_STRING_SIZE] != '\0')) + { + GNUNET_GE_BREAK (ectx, 0); + return GNUNET_SYSERR; /* obviously invalid */ + } if (NULL == strstr (maddr->filter, ": ")) return GNUNET_SYSERR; return GNUNET_OK; @@ -449,31 +449,27 @@ api_create_hello () EmailAddress *haddr; int i; - GNUNET_GC_get_configuration_value_string (coreAPI->cfg, - "SMTP", "FILTER", + GNUNET_GC_get_configuration_value_string (coreAPI->cfg, "SMTP", "FILTER", "X-mailer: GNUnet", &filter); if (NULL == strstr (filter, ": ")) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER, - _("SMTP filter string to invalid, lacks ': '\n")); - GNUNET_free (filter); - return NULL; - } + { + GNUNET_GE_LOG (ectx, GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER, + _("SMTP filter string to invalid, lacks ': '\n")); + GNUNET_free (filter); + return NULL; + } if (strlen (filter) > FILTER_STRING_SIZE) - { - filter[FILTER_STRING_SIZE] = '\0'; - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER, - _("SMTP filter string to long, capped to `%s'\n"), - filter); - } + { + filter[FILTER_STRING_SIZE] = '\0'; + GNUNET_GE_LOG (ectx, GNUNET_GE_WARNING | GNUNET_GE_BULK | GNUNET_GE_USER, + _("SMTP filter string to long, capped to `%s'\n"), filter); + } i = (strlen (email) + 8) & (~7); /* make multiple of 8 */ msg = - GNUNET_malloc (sizeof (GNUNET_MessageHello) + sizeof (EmailAddress) + i); + GNUNET_malloc (sizeof (GNUNET_MessageHello) + sizeof (EmailAddress) + i); memset (msg, 0, sizeof (GNUNET_MessageHello) + sizeof (EmailAddress) + i); - haddr = (EmailAddress *) & msg[1]; + haddr = (EmailAddress *) &msg[1]; memset (&haddr->filter[0], 0, FILTER_STRING_SIZE); strcpy (&haddr->filter[0], filter); memcpy (&haddr->senderAddress[0], email, strlen (email) + 1); @@ -501,10 +497,10 @@ get_message (void **buf, int *len, void *cls) *buf = NULL; if (len == NULL) - { - gmc->pos = 0; - return NULL; - } + { + gmc->pos = 0; + return NULL; + } if (gmc->pos == gmc->esize) return NULL; /* done */ *len = gmc->esize; @@ -522,8 +518,8 @@ get_message (void **buf, int *len, void *cls) * @return GNUNET_SYSERR on error, GNUNET_OK on success */ static int -api_send (GNUNET_TSession * tsession, - const void *msg, const unsigned int size, int important) +api_send (GNUNET_TSession * tsession, const void *msg, const unsigned int size, + int important) { const GNUNET_MessageHello *hello; const EmailAddress *haddr; @@ -535,6 +531,7 @@ api_send (GNUNET_TSession * tsession, smtp_session_t session; smtp_message_t message; smtp_recipient_t recipient; + #define EBUF_LEN 128 char ebuf[EBUF_LEN]; GNUNET_CronTime now; @@ -542,10 +539,10 @@ api_send (GNUNET_TSession * tsession, if (smtp_shutdown == GNUNET_YES) return GNUNET_SYSERR; if ((size == 0) || (size > smtpAPI.mtu)) - { - GNUNET_GE_BREAK (ectx, 0); - return GNUNET_SYSERR; - } + { + GNUNET_GE_BREAK (ectx, 0); + return GNUNET_SYSERR; + } now = GNUNET_get_time (); if ((important != GNUNET_YES) && ((now - last_transmission) * rate_limit) < GNUNET_CRON_HOURS) @@ -558,42 +555,39 @@ api_send (GNUNET_TSession * tsession, GNUNET_mutex_lock (lock); session = smtp_create_session (); if (session == NULL) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_ERROR | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_IMMEDIATE, - _("SMTP: `%s' failed: %s.\n"), - "smtp_create_session", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - GNUNET_mutex_unlock (lock); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_ERROR | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_IMMEDIATE, _("SMTP: `%s' failed: %s.\n"), + "smtp_create_session", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + GNUNET_mutex_unlock (lock); + return GNUNET_SYSERR; + } if (0 == smtp_set_server (session, smtp_server_name)) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_ERROR | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_IMMEDIATE, - _("SMTP: `%s' failed: %s.\n"), - "smtp_set_server", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - smtp_destroy_session (session); - GNUNET_mutex_unlock (lock); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_ERROR | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_IMMEDIATE, _("SMTP: `%s' failed: %s.\n"), + "smtp_set_server", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + smtp_destroy_session (session); + GNUNET_mutex_unlock (lock); + return GNUNET_SYSERR; + } haddr = (const EmailAddress *) &hello[1]; message = smtp_add_message (session); if (message == NULL) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_BULK, - _("SMTP: `%s' failed: %s.\n"), - "smtp_add_message", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - smtp_destroy_session (session); - GNUNET_mutex_unlock (lock); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_BULK, _("SMTP: `%s' failed: %s.\n"), + "smtp_add_message", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + smtp_destroy_session (session); + GNUNET_mutex_unlock (lock); + return GNUNET_SYSERR; + } smtp_set_header (message, "To", NULL, haddr->senderAddress); smtp_set_header (message, "From", NULL, email); @@ -603,84 +597,77 @@ api_send (GNUNET_TSession * tsession, fvalue[0] = '\0'; fvalue += 2; if (0 == smtp_set_header (message, filter, fvalue)) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_BULK, - _("SMTP: `%s' failed: %s.\n"), - "smtp_set_header", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - smtp_destroy_session (session); - GNUNET_mutex_unlock (lock); - GNUNET_free (filter); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_BULK, _("SMTP: `%s' failed: %s.\n"), + "smtp_set_header", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + smtp_destroy_session (session); + GNUNET_mutex_unlock (lock); + GNUNET_free (filter); + return GNUNET_SYSERR; + } GNUNET_free (filter); m = GNUNET_malloc (size + sizeof (SMTPMessage)); memcpy (m, msg, size); - mp = (SMTPMessage *) & m[size]; + mp = (SMTPMessage *) &m[size]; mp->header.size = htons (size + sizeof (SMTPMessage)); mp->header.type = htons (0); mp->sender = *coreAPI->my_identity; gm_cls.ebody = NULL; gm_cls.pos = 0; - gm_cls.esize = - base64_encode (m, size + sizeof (SMTPMessage), &gm_cls.ebody); + gm_cls.esize = base64_encode (m, size + sizeof (SMTPMessage), &gm_cls.ebody); GNUNET_free (m); if (0 == smtp_size_set_estimate (message, gm_cls.esize)) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_BULK, - _("SMTP: `%s' failed: %s.\n"), - "smtp_size_set_estimate", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_BULK, _("SMTP: `%s' failed: %s.\n"), + "smtp_size_set_estimate", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + } if (0 == smtp_set_messagecb (message, &get_message, &gm_cls)) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_BULK, - _("SMTP: `%s' failed: %s.\n"), - "smtp_set_messagecb", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - smtp_destroy_session (session); - GNUNET_mutex_unlock (lock); - GNUNET_free (gm_cls.ebody); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_BULK, _("SMTP: `%s' failed: %s.\n"), + "smtp_set_messagecb", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + smtp_destroy_session (session); + GNUNET_mutex_unlock (lock); + GNUNET_free (gm_cls.ebody); + return GNUNET_SYSERR; + } recipient = smtp_add_recipient (message, haddr->senderAddress); if (recipient == NULL) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_BULK, - _("SMTP: `%s' failed: %s.\n"), - "smtp_add_recipient", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - smtp_destroy_session (session); - GNUNET_mutex_unlock (lock); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_BULK, _("SMTP: `%s' failed: %s.\n"), + "smtp_add_recipient", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + smtp_destroy_session (session); + GNUNET_mutex_unlock (lock); + return GNUNET_SYSERR; + } if (0 == smtp_start_session (session)) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | - GNUNET_GE_BULK, - _("SMTP: `%s' failed: %s.\n"), - "smtp_start_session", - smtp_strerror (smtp_errno (), ebuf, EBUF_LEN)); - smtp_destroy_session (session); - GNUNET_mutex_unlock (lock); - GNUNET_free (gm_cls.ebody); - return GNUNET_SYSERR; - } + { + GNUNET_GE_LOG (ectx, + GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_USER | + GNUNET_GE_BULK, _("SMTP: `%s' failed: %s.\n"), + "smtp_start_session", smtp_strerror (smtp_errno (), ebuf, + EBUF_LEN)); + smtp_destroy_session (session); + GNUNET_mutex_unlock (lock); + GNUNET_free (gm_cls.ebody); + return GNUNET_SYSERR; + } if (stats != NULL) stats->change (stat_bytesSent, size); if (coreAPI->load_monitor != NULL) GNUNET_network_monitor_notify_transmission (coreAPI->load_monitor, - GNUNET_ND_UPLOAD, - gm_cls.esize); + GNUNET_ND_UPLOAD, gm_cls.esize); smtp_message_reset_status (message); /* this is needed to plug a 28-byte/message memory leak in libesmtp */ smtp_destroy_session (session); GNUNET_mutex_unlock (lock); @@ -696,8 +683,8 @@ api_send (GNUNET_TSession * tsession, * @return GNUNET_OK on success, GNUNET_SYSERR if the operation failed */ static int -api_connect (const GNUNET_MessageHello * hello, - GNUNET_TSession ** tsessionPtr, int may_reuse) +api_connect (const GNUNET_MessageHello * hello, GNUNET_TSession ** tsessionPtr, + int may_reuse) { GNUNET_TSession *tsession; @@ -720,11 +707,11 @@ static int api_disconnect (GNUNET_TSession * tsession) { if (tsession != NULL) - { - if (tsession->internal != NULL) - GNUNET_free (tsession->internal); - GNUNET_free (tsession); - } + { + if (tsession->internal != NULL) + GNUNET_free (tsession->internal); + GNUNET_free (tsession); + } return GNUNET_OK; } @@ -737,15 +724,14 @@ api_start_transport_server () { smtp_shutdown = GNUNET_NO; /* initialize SMTP network */ - dispatchThread = - GNUNET_thread_create (&listenAndDistribute, NULL, 1024 * 4); + dispatchThread = GNUNET_thread_create (&listenAndDistribute, NULL, 1024 * 4); if (dispatchThread == NULL) - { - GNUNET_GE_DIE_STRERROR (ectx, - GNUNET_GE_ADMIN | GNUNET_GE_BULK | - GNUNET_GE_FATAL, "pthread_create"); - return GNUNET_SYSERR; - } + { + GNUNET_GE_DIE_STRERROR (ectx, + GNUNET_GE_ADMIN | GNUNET_GE_BULK | GNUNET_GE_FATAL, + "pthread_create"); + return GNUNET_SYSERR; + } return GNUNET_OK; } @@ -768,8 +754,8 @@ api_stop_transport_server () * Convert SMTP hello to an IP address (always fails). */ static int -api_hello_to_address (const GNUNET_MessageHello * hello, - void **sa, unsigned int *sa_len) +api_hello_to_address (const GNUNET_MessageHello * hello, void **sa, + unsigned int *sa_len) { return GNUNET_SYSERR; } @@ -809,62 +795,51 @@ inittransport_smtp (GNUNET_CoreAPIForTransport * core) coreAPI = core; ectx = core->ectx; if (!GNUNET_GC_have_configuration_value (coreAPI->cfg, "SMTP", "EMAIL")) - { - GNUNET_GE_LOG (ectx, - GNUNET_GE_ERROR | GNUNET_GE_BULK | GNUNET_GE_USER, - _ - ("No email-address specified, can not start SMTP transport.\n")); - return NULL; - } - GNUNET_GC_get_configuration_value_number (coreAPI->cfg, - "SMTP", - "MTU", - 1200, + { + GNUNET_GE_LOG (ectx, GNUNET_GE_ERROR | GNUNET_GE_BULK | GNUNET_GE_USER, + _ + ("No email-address specified, can not start SMTP transport.\n")); + return NULL; + } + GNUNET_GC_get_configuration_value_number (coreAPI->cfg, "SMTP", "MTU", 1200, SMTP_MESSAGE_SIZE, SMTP_MESSAGE_SIZE, &mtu); - GNUNET_GC_get_configuration_value_number (coreAPI->cfg, - "SMTP", - "RATELIMIT", + GNUNET_GC_get_configuration_value_number (coreAPI->cfg, "SMTP", "RATELIMIT", 0, 0, 1024 * 1024, &rate_limit); stats = coreAPI->service_request ("stats"); if (stats != NULL) - { - stat_bytesReceived - = stats->create (gettext_noop ("# bytes received via SMTP")); - stat_bytesSent = stats->create (gettext_noop ("# bytes sent via SMTP")); - stat_bytesDropped - = stats->create (gettext_noop ("# bytes dropped by SMTP (outgoing)")); - } - GNUNET_GC_get_configuration_value_filename (coreAPI->cfg, - "SMTP", - "PIPE", + { + stat_bytesReceived = + stats->create (gettext_noop ("# bytes received via SMTP")); + stat_bytesSent = stats->create (gettext_noop ("# bytes sent via SMTP")); + stat_bytesDropped = + stats->create (gettext_noop ("# bytes dropped by SMTP (outgoing)")); + } + GNUNET_GC_get_configuration_value_filename (coreAPI->cfg, "SMTP", "PIPE", GNUNET_DEFAULT_DAEMON_VAR_DIRECTORY "/smtp-pipe", &pipename); UNLINK (pipename); if (0 != mkfifo (pipename, S_IWUSR | S_IRUSR | S_IWGRP | S_IWOTH)) - { - GNUNET_GE_LOG_STRERROR (ectx, - GNUNET_GE_ADMIN | GNUNET_GE_BULK | - GNUNET_GE_FATAL, "mkfifo"); - GNUNET_free (pipename); - coreAPI->service_release (stats); - stats = NULL; - return NULL; - } + { + GNUNET_GE_LOG_STRERROR (ectx, + GNUNET_GE_ADMIN | GNUNET_GE_BULK | GNUNET_GE_FATAL, + "mkfifo"); + GNUNET_free (pipename); + coreAPI->service_release (stats); + stats = NULL; + return NULL; + } /* we need to allow the mailer program to send us messages; - easiest done by giving it write permissions (see Mantis #1142) */ + * easiest done by giving it write permissions (see Mantis #1142) */ if (0 != chmod (pipename, S_IWUSR | S_IRUSR | S_IWGRP | S_IWOTH)) GNUNET_GE_LOG_STRERROR (ectx, GNUNET_GE_ADMIN | GNUNET_GE_BULK | GNUNET_GE_WARNING, "chmod"); - GNUNET_GC_get_configuration_value_string (coreAPI->cfg, - "SMTP", "EMAIL", NULL, &email); + GNUNET_GC_get_configuration_value_string (coreAPI->cfg, "SMTP", "EMAIL", NULL, + &email); lock = GNUNET_mutex_create (GNUNET_NO); - GNUNET_GC_get_configuration_value_string (coreAPI->cfg, - "SMTP", - "SERVER", - "localhost:25", - &smtp_server_name); + GNUNET_GC_get_configuration_value_string (coreAPI->cfg, "SMTP", "SERVER", + "localhost:25", &smtp_server_name); sa.sa_handler = SIG_IGN; sigemptyset (&sa.sa_mask); sa.sa_flags = 0; @@ -892,10 +867,10 @@ donetransport_smtp () sigaction (SIGPIPE, &old_handler, NULL); GNUNET_free (smtp_server_name); if (stats != NULL) - { - coreAPI->service_release (stats); - stats = NULL; - } + { + coreAPI->service_release (stats); + stats = NULL; + } GNUNET_mutex_destroy (lock); lock = NULL; UNLINK (pipename);