]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/smtp/serv_smtpqueue.c
SMTP-Client: fix target port handling for relay & fallback hosts
[citadel.git] / citadel / modules / smtp / serv_smtpqueue.c
index c0af5c0f57f36f32829c8e06b716f5801eeabd0c..589b13a482156ecdc9de2ba9e1a9fd1f15fe1490 100644 (file)
@@ -94,6 +94,7 @@ struct CitContext smtp_queue_CC;
 pthread_mutex_t ActiveQItemsLock;
 HashList *ActiveQItems  = NULL;
 HashList *QItemHandlers = NULL;
+const unsigned short DefaultMXPort = 25;
 int max_sessions_for_outbound_smtp = 500; /* how many sessions might be active till we stop adding more smtp jobs */
 int ndelay_count = 50; /* every n queued messages we will sleep... */
 int delay_msec = 5000; /* this many seconds. */
@@ -397,7 +398,8 @@ void NewMailQEntry(OneQueItem *Item)
 
        if (Item->MailQEntries == NULL)
                Item->MailQEntries = NewHash(1, Flathash);
-       Item->Current->StatusMessage = NewStrBuf();
+       /* alocate big buffer so we won't get problems reallocating later. */
+       Item->Current->StatusMessage = NewStrBufPlain(NULL, SIZ);
        Item->Current->n = GetCount(Item->MailQEntries);
        Put(Item->MailQEntries,
            IKEY(Item->Current->n),
@@ -828,7 +830,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                                !IsEmptyStr(Pos)))
                        {
                                StrBufExtract_NextToken(One, All, &Pos, '|');
-                               if (!ParseURL(Url, One, 25)) {
+                               if (!ParseURL(Url, One, DefaultMXPort)) {
                                        SMTPC_syslog(LOG_DEBUG,
                                                     "Failed to parse: %s\n",
                                                     ChrPtr(One));
@@ -856,7 +858,7 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
                                !IsEmptyStr(Pos)))
                        {
                                StrBufExtract_NextToken(One, All, &Pos, '|');
-                               if (!ParseURL(Url, One, 25)) {
+                               if (!ParseURL(Url, One, DefaultMXPort)) {
                                        SMTPC_syslog(LOG_DEBUG,
                                                     "Failed to parse: %s\n",
                                                     ChrPtr(One));
@@ -1002,14 +1004,9 @@ void smtp_do_procmsg(long msgnum, void *userdata) {
  * Run through the queue sending out messages.
  */
 void smtp_do_queue(void) {
-       static int is_running = 0;
        int num_processed = 0;
        int num_activated = 0;
 
-       if (is_running)
-               return; /* Concurrency check - only one can run */
-       is_running = 1;
-
        pthread_setspecific(MyConKey, (void *)&smtp_queue_CC);
        SMTPCM_syslog(LOG_INFO, "processing outbound queue");
 
@@ -1029,8 +1026,6 @@ void smtp_do_queue(void) {
                     "queue run completed; %d messages processed %d activated",
                     num_processed, num_activated);
 
-       run_queue_now = 0;
-       is_running = 0;
 }