- DeletePOP3Aggregator() free the read message struct
- comment out table revalidation
- remove duplicate return statement
- correctly handle queueing of dns query. We don't care about the result.
- Fix varous Memleaks
- pop3client_scan_room() Combine old pop3collector syntax into a parseable URL.
- use just one URL pointer
- POP3C_GetOneMessageIDFromUseTable(): duplicate; obsolete; deleted.
- add username to pop3 usetable entries
- use our own Context
When QP encoding, we need to convert blanks to underscores
- Spamassasin test 'BAD_ENC_HEADER' matches if a subject looks like that:
Subject: =?UTF-8?Q?=5Btestml=5D l=C3=B6sch misch ey.?=
it needs to look like that:
Subject: =?UTF-8?Q?=5Btestml=5D_l=C3=B6sch_misch_ey.?=
- Ctdl_GetUtf8SequenceLength(): testbyte needs to be unsigned char, else >> will shift us new bits in from the left
- we need to shift 'test' to the right
- start counting at 0
Fix StrHtmlEcmaEscAppend() more edge cases in utf8 handling
- Ctdl_GetUtf8SequenceLength(): return 0 for broken, 1 for non-utf8 sequences
- StrHtmlEcmaEscAppend(): another attempt to fix json appending:
- use switch instead of Rumpelstilskin if sequence
- use HKEY for our static sequences
- don't check for buffer expansion again while utf8-handling; we have 11 bytes reserved, utf8 will at most become 6 bytes
- Simply handle ASCII chars in the utf8 loop
- since aptr is moved implicitely, we mustn't move it for the last byte
- add missing handling for some escapers
- let unicode escapers pass
- POP3_C_ReAttachToFetchMessages(): we manage the transition DB-IO -> Network I/O
- POP3C_GetListCommandState(): after receiving the list-OK we have to continue reading the list items
- POP3C_GetListOneLine(): the server sends us the size of the message; save it for later use.
- POP3C_GetOneMessagID(): after reading all list-items, start DB lookup whether we knew them already.
- POP3C_GetOneMessageIDState(): if more items are in the list, call us again with the next message ID.
- POP3_FetchNetworkUsetableEntry(): fetch one UT-entry per call; forward to POP3_C_ReAttachToFetchMessages() once we saw all items in the list.
- POP3C_SendGetOneMsg(): cycle over the list till we find the next Mail we didn't know already & fetch it; if no more items in list -> goodbuye.
- POP3C_ReadMessageBody() after the I/O layer read the message from the socket, parse it; move our context over to the DB-Queue.
- POP3C_ReadMessageBodyFollowing(): On success initialize the async message reader; let the I/O layer read the message, then continue parsing & saving it.
- POP3C_StoreMsgRead(): parse & save the message to the DB. Continue with remembering it in the UT table.
- POP3C_SendDelete(): check whether we want to delete the mails on the server, if do; else continue with POP3C_SendGetOneMsg() to fetch next in list.
- POP3_C_ReadServerStatus(): switch between line based read operation and reading whole messages.
we now can successfully aggregate one pop3 account.
add infrastructure to cleanly swap inbetween the DB and the IO queue; add infrastructure needed for async message reading.
- QueueDBOperation(): use our own vars on the AsyncIO struct, so we don't overwrite handlers & events from the file I/O stuff.
- DB_PerformNext(): don't use default: so we get warnings if new states are added and not handled here.
- DB_PerformNext(): if we don't get a DB query or Terminate, the db operations are done, remove our handlers, this AsyncIO context is handed over into another Queue by the application logic.
- NextDBOperation(): use our own vars on the AsyncIO struct, so we don't overwrite handlers & events from the file I/O stuff.
- HandleInbound(): handle more read-states; needed for message reading.
- HandleInbound(): move Rumpelstilskin lookup if to switch()
- IO_send_callback(): fix/add IO debugging to /tmp/foo
- IO_send_callback(): Adjust switch to some edge cases:
- eSendReply: check whether we're done with sending, if, fall forward to writing.
- eReadMore: was missing, continue reading (if)
- eReadPayload: new, read smtp messages for example.
- eDBQuery: the application logic want to perform database I/O with this context, clean up hooks and remove it from this queue.
- set_start_callback(): properly hanle the new cases
- IO_recv_callback(): fix/add IO debugging to /tmp/foo
- ReAttachIO(): use me if you want to continue with file I/O after i.e. DB-I/O
- CtdlSubmitMsg(): make param const, since its just read
- add NewAsyncMsg(): preprocess the parameters provided by application logic, return the worker struct for message reading
- add CtdlReadMessageBodyAsync(): call me from your IO handler to read a message from the socket asynchroneous.
- add DeleteAsyncMsg(): call me to delete the worker vars.
- rewrite the config parser similar to the rss-configparser
- copy over handler logic from async smtp connector
- chop worker into handy bits so the handler logic can control it.