aboutsummaryrefslogtreecommitdiff
path: root/lib/imap.c
AgeCommit message (Collapse)Author
2013-02-28imap: Added processing of the final FETCH responsesJiri Hruska
Not processing the final FETCH responses was not optimal, not only because the response code would be ignored but it would also leave data unread on the socket which would prohibit connection reuse.
2013-02-28imap: Introduced FETCH_FINAL state for processing final fetch responsesJiri Hruska
A typical FETCH response can be broken down into four parts: 1) "* <uid> FETCH (<what> {<size>}\r\n", using continuation syntax 2) <size> bytes of the actual message 3) ")\r\n", finishing the untagged response 4) "<tag> OK ...", finishing the command Part 1 is read in imap_fetch_resp(), part 2 is consumed in the PERFORM phase by the transfer subsystem, parts 3 and 4 are currently ignored.
2013-02-28imap: fix autobuild warningSteve Holme
Removed whitespace from imap_perform()
2013-02-28imap: fix compiler warningSteve Holme
error: declaration of 'imap' shadows a previous local
2013-02-27imap: Re-factored final IMAP_AUTHENTICATE constantSteve Holme
Changed the final IMAP_AUTHENTICATE constant to IMAP_AUTHENTICATE_FINAL for consistency with the response function.
2013-02-27imap: Updated the coding style of imap_state_servergreet_resp()Steve Holme
Updated the coding style, in this function, to be consistant with other response functions rather then performing a hard return on failure.
2013-02-27imap: Reversed the logic of the (un)successful tagged SELECT responseSteve Holme
Reversed the logic of the unsuccessful vs successful tagged SELECT response in imap_state_select_resp() to be more logical to read.
2013-02-27imap: Reversed the logic of the (un)successful tagged CAPABILITY responseSteve Holme
Reversed the logic of the unsuccessful vs successful tagged CAPABILITY response in imap_state_capability_resp() to be more logical to read.
2013-02-27imap: Corrected char* references with char *Steve Holme
Corrected char* references made in commit: 709b3506cd9b.
2013-02-27imap: Added processing of more than one response when sent in same packetJiri Hruska
Added a loop to imap_statemach_act() in which Curl_pp_readresp() is called until the cache is drained. Without this multiple responses received in a single packet could result in a hang or delay.
2013-02-27imap: Added skipping of SELECT command if already in the same mailboxJiri Hruska
Added storage and checking of the last mailbox userd to prevent unnecessary switching.
2013-02-27imap: Introduced the mailbox variableJiri Hruska
Added the mailbox variable to the per-connection structure in preparation for checking for an already selected mailbox.
2013-02-26imap: Added verification of UIDVALIDITY mailbox attributeJiri Hruska
Added support for checking the UIDVALIDITY, and aborting the request, if it has been specified in the URL and the server response is different.
2013-02-26imap: Added support for parsing the UIDVALIDITY propertyJiri Hruska
Added support for parsing the UIDVALIDITY property from the SELECT response and storing it in the per-connection structure.
2013-02-26imap: Introduced the mailbox_uidvalidity variableJiri Hruska
Added the mailbox_uidvalidity variable to the per-connection structure in preparation for checking the UIDVALIDITY mailbox attribute.
2013-02-26imap: Corrected comment in imap_endofresp()Steve Holme
2013-02-26imap: Corrected whitespaceSteve Holme
2013-02-26imap: Added filtering of CAPABILITY and FETCH untagged responsesJiri Hruska
Only responses that contain "CAPABILITY" and "FETCH", respectively, will be sent to their response handler.
2013-02-26imap: Added a helper function for upcoming untagged response filteringJiri Hruska
RFC 3501 states that "the client MUST be prepared to accept any response at all times" yet we assume anything received with "* " at the beginning is the untagged response we want. Introduced a helper function that checks whether the input looks like a response to specified command, so that we may filter the ones we are interested in according to the current state.
2013-02-26imap: Moved CAPABILITY response handling to imap_state_capability_resp()Jiri Hruska
Introduced similar handling to the FETCH responses, where even the untagged data responses are handled by the response handler of the individual state.
2013-02-25email: Small tidy up following recent changesSteve Holme
2013-02-25imap: Removed bytecountp from the per-request structureJiri Hruska
Removed this pointer to a downloaded bytes counter because it was set in imap_init() to point to the same variable the transfer functions keep the count in (k->bytecount), effectively making the code in transfer.c "*k->bytecountp = k->bytecount" a no-op.
2013-02-25imap: Adjusted SELECT and FETCH function orderJiri Hruska
Moved imap_select() and imap_fetch() to be grouped with the other perform functions.
2013-02-25imap: Adjusted SELECT and FETCH state order in imap_statemach_act()Jiri Hruska
Exchanged the position of these states in the switch statements to match the state enum, execution and function order.
2013-02-25imap: Minor tidy up of comments in imap_parse_url_path()Steve Holme
Tidy up of comments before next round of imap changes.
2013-02-25imap: Fixed incorrect comparison for STARTTLS in imap_endofresp()Steve Holme
Corrected the comparison type in addition to commit 1dac29fa83a9.
2013-02-24imap: Added check for new internal imap response codeSteve Holme
2013-02-24imap: Changed the order of the response types in imap_endofresp()Steve Holme
From a maintenance point of view the code reads better to view tagged responses, then untagged followed by continuation responses. Additionally, this matches the order of responses in POP3.
2013-02-24imap: Added stricter parsing of continuation responsesJiri Hruska
Enhanced the parsing to only allow continuation responses in some states.
2013-02-24imap: Simplified memcmp() in tagged response parsingSteve Holme
2013-02-24imap: Reworked the logic of untagged command responsesJiri Hruska
2013-02-24imap: Corrected spacing of trailing braceSteve Holme
2013-02-24imap: Added stricter parsing of tagged command responsesJiri Hruska
Enhanced the parsing of tagged responses which must start with "OK", "NO" or "BAD"
2013-02-24imap: Simplified command response test in imap_endofresp()Jiri Hruska
2013-02-24imap: Corrected comment in imap_endofresp()Jiri Hruska
2013-02-23imap: Added the ability to FETCH a specific UID and SECTIONJiri Hruska
Updated the FETCH command to send the UID and SECTION parsed from the URL. By default the BODY specifier doesn't include a section, BODY[] is now sent whereas BODY[TEXT] was previously sent. In my opinion retrieving just the message text is rarely useful when dealing with emails, as the headers are required for example, so that functionality is not retained. In can however be simulated by adding SECTION=TEXT to the URL. Also updated test801 and test1321 due to the BODY change.
2013-02-23email: Additional tidy up of comments following recent changesSteve Holme
2013-02-23imap: Minor correction of comments for max line lengthSteve Holme
2013-02-23imap: Added URL parsing of new variablesJiri Hruska
Updated the imap_parse_url_path() function to parse uidvalidity, uid and section parameters based on RFC-5092.
2013-02-23imap: Introduced imap_is_bchar() functionJiri Hruska
Added imap_is_bchar() for testing if a given character is a valid bchar or not.
2013-02-23imap: Introduced new per-request veriablesJiri Hruska
Added uidvalidity, uid and section variables to the per-request IMAP structure in preparation for upcoming URL parsing.
2013-02-23imap: Fixed escaping of mailbox namesJiri Hruska
Used imap_atom() to escape mailbox names in imap_select().
2013-02-23email: Minor tidy up following IMAP changesSteve Holme
2013-02-23imap: Removed more FTP leftoversJiri Hruska
Changed some variables and comments still using FTP terminology.
2013-02-23imap: Removed some FTP heritage leftoversJiri Hruska
Removed user and passwd from the IMAP struct as these cannot be set on a per-request basis and are leftover from legacy FTP code.
2013-02-23imap: Introduced a custom IMAP structure for per-request dataJiri Hruska
Created a new IMAP structure and changed the type of the imap proto variable in connectdata from FTP* to the new IMAP*. Moved the mailbox variable from the per-connection struct imap_conn to the new per-request struct and fixed references accordingly.
2013-02-22imap: Fixed memory leak when performing multiple selectsSteve Holme
Moved the clean-up of the mailbox variable from imap_disconnect() to imap_done() as this variable is allocated in the do phase, yet would have only been freed only once if multiple selects where preformed on a single connection.
2013-02-22imap.c: Fixed an incorrect variable referenceSteve Holme
Fixed an incorrect variable reference which was introduced in commit a1701eea289f as a result of a copy and paste from SMTP/POP3.
2013-02-16email: Tidied up result code variablesSteve Holme
Tidied up result variables to be consistent in name, declaration order and default values.
2013-02-16email: Removed unnecessary forward declarationSteve Holme
Due to the reordering of functions in commit 586f5d361474 the forward declaration to state_upgrade_tls() are no longer required.