* Make imap stop using MDB to store MIME information
* Fix imap LOGIN * Remove trusted hosts list from store setup
This commit is contained in:
+18
-14
@@ -434,7 +434,7 @@ MessageDetailsFree(MessageDetail *messageDetail)
|
||||
}
|
||||
|
||||
if (messageDetail->mimeInfo) {
|
||||
MDBDestroyValueStruct(messageDetail->mimeInfo);
|
||||
BongoArrayFree(messageDetail->mimeInfo, TRUE);
|
||||
messageDetail->mimeInfo = NULL;
|
||||
}
|
||||
}
|
||||
@@ -948,9 +948,11 @@ FetchFlagResponderBodyStructure(void *param1, void *param2, void *param3)
|
||||
|
||||
if (ccode != -1) {
|
||||
do {
|
||||
switch(atol(FetchRequest->messageDetail.mimeInfo->Value[mimeResponseLine])) {
|
||||
char *mime_string = BongoArrayIndex(FetchRequest->messageDetail.mimeInfo,
|
||||
char *, mimeResponseLine);
|
||||
switch(atol(mime_string)) {
|
||||
case 2002: {
|
||||
ParseMIMEDLine(FetchRequest->messageDetail.mimeInfo->Value[mimeResponseLine] + 5,
|
||||
ParseMIMEDLine(mime_string + 5,
|
||||
Type, MIME_TYPE_LEN,
|
||||
Subtype, MIME_SUBTYPE_LEN,
|
||||
Charset, MIME_CHARSET_LEN,
|
||||
@@ -1280,7 +1282,7 @@ FetchFlagResponderBodyStructure(void *param1, void *param2, void *param3)
|
||||
}
|
||||
|
||||
mimeResponseLine++;
|
||||
if (mimeResponseLine < FetchRequest->messageDetail.mimeInfo->Used) {
|
||||
if (mimeResponseLine < BongoArrayCount(FetchRequest->messageDetail.mimeInfo)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1705,7 +1707,7 @@ FetchFlagResponderBodyHeaderFields(void *param1, void *param2, void *param3)
|
||||
}
|
||||
|
||||
__inline static BOOL
|
||||
HasPart(MDBValueStruct *mimeInfo, BodyPartRequestStruct *request)
|
||||
HasPart(BongoArray *mimeInfo, BodyPartRequestStruct *request)
|
||||
{
|
||||
unsigned char type[MIME_TYPE_LEN+1];
|
||||
unsigned char dummy[MIME_NAME_LEN+1];
|
||||
@@ -1721,9 +1723,10 @@ HasPart(MDBValueStruct *mimeInfo, BodyPartRequestStruct *request)
|
||||
unsigned long matchDepthPart = 0;
|
||||
|
||||
do {
|
||||
switch (atol(mimeInfo->Value[mimeResponseLine])) {
|
||||
char *mime_string = BongoArrayIndex(mimeInfo, char *, mimeResponseLine);
|
||||
switch (atol(mime_string)) {
|
||||
case 2002: {
|
||||
ParseMIMEDLine(mimeInfo->Value[mimeResponseLine] + 5,
|
||||
ParseMIMEDLine(mime_string + 5,
|
||||
type, MIME_TYPE_LEN,
|
||||
dummy, MIME_NAME_LEN,
|
||||
dummy, MIME_NAME_LEN,
|
||||
@@ -1808,7 +1811,7 @@ HasPart(MDBValueStruct *mimeInfo, BodyPartRequestStruct *request)
|
||||
}
|
||||
|
||||
mimeResponseLine++;
|
||||
if (mimeResponseLine < mimeInfo->Used) {
|
||||
if (mimeResponseLine < BongoArrayCount(mimeInfo)) {
|
||||
if (depthChange == 0) {
|
||||
continue;
|
||||
}
|
||||
@@ -3015,21 +3018,22 @@ GetMimeInfo(ImapSession *session, FetchStruct *FetchRequest)
|
||||
long ccode;
|
||||
|
||||
if (FetchRequest->messageDetail.mimeInfo == NULL) {
|
||||
FetchRequest->messageDetail.mimeInfo = MDBCreateValueStruct(Imap.directory.handle, NULL);
|
||||
if (FetchRequest->messageDetail.mimeInfo) {
|
||||
;
|
||||
} else {
|
||||
FetchRequest->messageDetail.mimeInfo = BongoArrayNew(sizeof(char *), 0);
|
||||
if (! FetchRequest->messageDetail.mimeInfo) {
|
||||
return(STATUS_MEMORY_ERROR);
|
||||
}
|
||||
} else {
|
||||
MDBFreeValues(FetchRequest->messageDetail.mimeInfo);
|
||||
BongoArrayFree(FetchRequest->messageDetail.mimeInfo, TRUE);
|
||||
}
|
||||
|
||||
if (NMAPSendCommandF(session->store.conn, "MIME %llx\r\n", FetchRequest->message->guid) != -1) {
|
||||
ccode = NMAPReadResponse(session->store.conn, session->store.response, sizeof(session->store.response), FALSE);
|
||||
while(ccode != 1000) {
|
||||
if ((ccode > 2001) && (ccode < 2005)) {
|
||||
MDBAddValue(session->store.response, FetchRequest->messageDetail.mimeInfo);
|
||||
char *entry;
|
||||
entry = MemMalloc(sizeof(char) * (strlen(session->store.response) + 1));
|
||||
memcpy(entry, session->store.response, sizeof(entry));
|
||||
BongoArrayAppendValue(FetchRequest->messageDetail.mimeInfo, entry);
|
||||
ccode = NMAPReadResponse(session->store.conn, session->store.response, sizeof(session->store.response), FALSE);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
unsigned long sequenceNumber;
|
||||
unsigned char *header;
|
||||
MDBValueStruct *mimeInfo;
|
||||
BongoArray *mimeInfo;
|
||||
} MessageDetail;
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -4074,7 +4074,6 @@ IMAPServer(void *unused)
|
||||
Imap.logHandle = NULL;
|
||||
|
||||
MsgShutdown();
|
||||
// MDBShutdown();
|
||||
|
||||
CONN_TRACE_SHUTDOWN();
|
||||
ConnShutdown();
|
||||
@@ -4218,7 +4217,6 @@ static BongoConfigItem IMAPConfig[] = {
|
||||
static BOOL
|
||||
ReadConfiguration(void)
|
||||
{
|
||||
MDBValueStruct *Config;
|
||||
unsigned char *ptr;
|
||||
time_t gm_time_of_day, time_of_day;
|
||||
struct tm gm, ltm;
|
||||
|
||||
@@ -43,6 +43,7 @@ UserAuthenticate(ImapSession *session, unsigned char **userName, unsigned char *
|
||||
if (MsgAuthVerifyPassword(*userName, password) == FALSE)
|
||||
return(STATUS_WRONG_PASSWORD);
|
||||
|
||||
MsgAuthGetUserStore(*userName, storeAddress);
|
||||
return(STATUS_CONTINUE);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,9 @@ StoreAgentReadConfiguration(BOOL *recover)
|
||||
MsgMakePath(StoreAgent.store.systemDir);
|
||||
MsgMakePath(StoreAgent.store.spoolDir);
|
||||
|
||||
// which hosts do we trust?
|
||||
// which hosts do we trust? SECURITY: This bypasses auth!
|
||||
StoreAgent.trustedHosts.count = 0;
|
||||
#if 0
|
||||
StoreAgent.trustedHosts.count = 2;
|
||||
StoreAgent.trustedHosts.hosts =
|
||||
MemRealloc(StoreAgent.trustedHosts.hosts, sizeof(unsigned long) * 2);
|
||||
@@ -66,6 +68,7 @@ StoreAgentReadConfiguration(BOOL *recover)
|
||||
StoreAgent.trustedHosts.hosts[0] = inet_addr("127.0.0.1");
|
||||
StoreAgent.trustedHosts.hosts[1] = MsgGetHostIPAddress(); // do we need this address too?
|
||||
}
|
||||
#endif
|
||||
|
||||
gethostname(StoreAgent.server.host, sizeof(StoreAgent.server.host));
|
||||
if (!MsgGetServerCredential(StoreAgent.server.hash))
|
||||
|
||||
Reference in New Issue
Block a user