eNextState FinalizeMessageSend_DB1(AsyncIO *IO);
eNextState FinalizeMessageSend_DB2(AsyncIO *IO);
eNextState FinalizeMessageSend_DB3(AsyncIO *IO);
-eNextState FinalizeMessageSend_DB4(AsyncIO *IO);
/******************************************************************************
* So, we're finished with sending (regardless of success or failure) *
"");
FreeStrBuf(&Msg->QMsgData);
}
- DecreaseShutdownDeliveries(Msg->MyQItem);
}
eNextState FinalizeMessageSend_DB3(AsyncIO *IO)
{
- SmtpOutMsg *Msg = IO->Data;
FinalizeMessageSend_DB_3(IO);
- if (!Msg->IDestructQueItem)
- return eAbort;
- return NextDBOperation(IO, FinalizeMessageSend_DB4);
-}
-
-eNextState FinalizeMessageSend_DB4(AsyncIO *IO)
-{
- int n;
- SmtpOutMsg *Msg = IO->Data;
-
- n = GetShutdownDeliveries(Msg->MyQItem);
- if (n > 0)
- return NextDBOperation(IO, FinalizeMessageSend_DB4);
- else
- return eAbort;
+ return eAbort;
}
eNextState FinalizeMessageSend_DB(AsyncIO *IO)
return IDestructQueItem;
}
-void DecreaseShutdownDeliveries(OneQueItem *MyQItem)
-{
- pthread_mutex_lock(&ActiveQItemsLock);
- MyQItem->NotYetShutdownDeliveries--;
- pthread_mutex_unlock(&ActiveQItemsLock);
-}
-
-int GetShutdownDeliveries(OneQueItem *MyQItem)
-{
- int DestructNow;
-
- pthread_mutex_lock(&ActiveQItemsLock);
- DestructNow = MyQItem->ActiveDeliveries == 0;
- pthread_mutex_unlock(&ActiveQItemsLock);
- return DestructNow;
-}
void RemoveQItem(OneQueItem *MyQItem)
{
long len;
}
DeleteHashPos(&It);
- MyQItem->NotYetShutdownDeliveries =
MyQItem->ActiveDeliveries = CountActiveQueueEntries(MyQItem);
/* failsafe against overload:
time_t Retry;
long ActiveDeliveries;
- long NotYetShutdownDeliveries;
StrBuf *EnvelopeFrom;
StrBuf *BounceTo;
StrBuf *SenderRoom;
QItemHandler H;
} QItemHandlerStruct;
int DecreaseQReference(OneQueItem *MyQItem);
-void DecreaseShutdownDeliveries(OneQueItem *MyQItem);
-int GetShutdownDeliveries(OneQueItem *MyQItem);
void RemoveQItem(OneQueItem *MyQItem);
int CountActiveQueueEntries(OneQueItem *MyQItem);
StrBuf *SerializeQueueItem(OneQueItem *MyQItem);