aboutsummaryrefslogtreecommitdiff
path: root/lib/imap.c
AgeCommit message (Collapse)Author
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.
2013-02-15imap: Removed unnecessary state change on failureSteve Holme
2013-02-15rename "easy" statemachines: call them block insteadDaniel Stenberg
... since they're not used by the easy interface really, I wanted to remove the association. Also, I unified the pingpong statemachine driver into a single function with a 'wait' argument: Curl_pp_statemach.
2013-02-13email: Tidy up before additional IMAP workSteve Holme
Replaced two explicit comparisons of CURLE_OK with boolean alternatives. General tidy up of comments.
2013-02-12imap: Corrected a whitespace issue from previous commitSteve Holme
Fixed a small whitespace issue that crept in there in commit 508cdf4da4d7.
2013-02-12email: Another post optimisation of endofresp() tidy upSteve Holme
2013-02-12email: Post optimisation of endofresp() tidy upSteve Holme
Removed unnecessary end of line check and return.
2013-02-12pingpong: Optimised the endofresp() functionSteve Holme
Reworked the pp->endofresp() function so that the conndata, line and line length are passed down to it just as with Curl_client_write() rather than each implementation of the function having to query these values. Additionally changed the int return type to bool as this is more representative of the function's usage.
2013-02-11email: Post STARTLS capability code tidy up (Part Three)Steve Holme
Corrected the order of the upgrade_tls() functions and moved the handler upgrade and getsock() functions out from the middle of the state related functions.
2013-02-11email: Post STARTLS capability code tidy up (Part Two)Steve Holme
Corrected the order of the pop3_state_capa() / imap_state_capability() and the pop3_state_capa_resp() / imap_state_capability_resp() functions to match the execution order.
2013-02-10email: Post STARTLS capability code tidy up (Part One)Steve Holme
Corrected the order of the CAPA / CAPABILITY state machine constants to match the execution order.
2013-02-10imap: Fixed memory leak following commit f6010d9a0359Steve Holme
2013-02-10imap: Added support for the STARTTLS capability (Part Three)Steve Holme
Added honoring of the tls_supported flag when starting a TLS upgrade rather than unconditionally attempting it. If the use_ssl flag is set to CURLUSESSL_TRY and the server doesn't support TLS upgrades then the connection will continue to authenticate. If this flag is set to CURLUSESSL_ALL then the connection will complete with a failure as it did previously.
2013-02-10imap: Added support for the STARTTLS capability (Part Two)Steve Holme
Added sending of initial CAPABILITY command before STARTTLS is sent. This allows for the detection of the capability before trying to upgrade the connection.
2013-02-10imap: Added support for the STARTTLS capability (Part One)Steve Holme
Introduced detection of the STARTTLS capability, in order to add support for TLS upgrades without unconditionally sending the STARTTLS command.
2013-02-09imap: Corrected some commentsSteve Holme
2013-02-08imap: Renamed state variables in imap_authenticate()Steve Holme
Renamed the authstate1 and authstate2 variables in imap_authenticate() as the old name was a left over from when there was only one state variable which was named due to a clash with the state() function. Additionally this provides consistency with the smtp module.
2013-02-07imap: Added support for SASL-IR extension (Part 2)Steve Holme
Modified imap_authenticate() to add support for sending the initial response with the AUTHENTICATE command, as per RFC4959.
2013-02-07imap: Added support for SASL-IR extension (Part 1)Steve Holme
Introduced detection of the SASL-IR capability, in order to add support for sending the initial response with the AUTHENTICATE command, as per RFC4959.
2013-02-07imap: Changed response tag generation to be completely uniqueSteve Holme
Updated the automatic response tag generation to follow the examples given in RC3501, which list a 4 character string such as A001, A002, etc. As a unique identifier should be generated for each command the string generation is based on the connection id and the incrementing command id.
2013-02-06imap: Small variable rename in preparation for upcoming changeSteve Holme
Renamed a couple of variables and updated some comments in preparation for upcoming command id / response tag change.
2013-02-06email: Moved starttls code in separate functionsSteve Holme
To help maintain the readability of the code in imap.c, pop3.c and smtp.c moved the starttls code into state_starttls() functions.
2013-02-05email: Reworked comments in the endofresp() functionsSteve Holme
Tidied up the comments in the endofresp() functions to be more meaningful prior to release.
2013-02-04email: Provided extra comments following recent pop3/imap fixesSteve Holme
Provided additional clarification about the logic of the authenticate() functions following commit 6b6bdc83bd36 and b4270a9af1d0.
2013-02-03imap: Fixed no known authentication mechanism when fallback is requiredSteve Holme
Fixed an issue where (lib)curl is compiled without support for a supported challenge-response based SASL authentication mechanism, such as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN mechanisms and (lib)curl doesn't fallback to Clear Text authentication. Note: In order to fallback to Clear Text authentication properly this fix adds support for the LOGINDISABLED server capability. imap: Fixed no known authentication mechanism when fallback is required Fixed an issue where (lib)curl is compiled without support for a supported challenge-response based SASL authentication mechanism, such as CRAM-MD5 or NTLM, the server doesn't support the LOGIN or PLAIN mechanisms and (lib)curl doesn't fallback to Clear Text authentication. Note: In order to fallback to Clear Text authentication properly this fix adds support for the LOGINDISABLED server capability. Related bug: http://curl.haxx.se/mail/lib-2013-02/0004.html Reported by: Stanislav Ivochkin
2013-01-27imap.c: Fixed unnecessary state change if starttls failsSteve Holme
The state machine should only be changed to IMAP_STARTTLS when the STARTTLS command has been successfully sent to the server.
2013-01-24imap.c: Fixed failure detection during TLS upgradeSteve Holme
imap_state_upgrade_tls() would attempt to incorrectly complete the upgrade to imaps and start the CAPABILITY command if Curl_ssl_connect_nonblocking() returned a failure code and if ssldone was set to TRUE. This would only happen when a non-blocking API hadn't been provided by the SSL implementation and curlssl_connect() was called underneath.
2013-01-23email: Removed unnecessary return statementsSteve Holme
Small tidy up to remove unnecessary return statements prior to the next fix.