Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
Removed whitespace from imap_perform()
|
|
error: declaration of 'imap' shadows a previous local
|
|
Changed the final IMAP_AUTHENTICATE constant to IMAP_AUTHENTICATE_FINAL
for consistency with the response function.
|
|
Updated the coding style, in this function, to be consistant with other
response functions rather then performing a hard return on failure.
|
|
Reversed the logic of the unsuccessful vs successful tagged SELECT
response in imap_state_select_resp() to be more logical to read.
|
|
Reversed the logic of the unsuccessful vs successful tagged CAPABILITY
response in imap_state_capability_resp() to be more logical to read.
|
|
Corrected char* references made in commit: 709b3506cd9b.
|
|
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.
|
|
Added storage and checking of the last mailbox userd to prevent
unnecessary switching.
|
|
Added the mailbox variable to the per-connection structure in
preparation for checking for an already selected mailbox.
|
|
Added support for checking the UIDVALIDITY, and aborting the request, if
it has been specified in the URL and the server response is different.
|
|
Added support for parsing the UIDVALIDITY property from the SELECT
response and storing it in the per-connection structure.
|
|
Added the mailbox_uidvalidity variable to the per-connection structure
in preparation for checking the UIDVALIDITY mailbox attribute.
|
|
|
|
|
|
Only responses that contain "CAPABILITY" and "FETCH", respectively,
will be sent to their response handler.
|
|
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.
|
|
Introduced similar handling to the FETCH responses, where even the
untagged data responses are handled by the response handler of the
individual state.
|
|
|
|
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.
|
|
Moved imap_select() and imap_fetch() to be grouped with the other
perform functions.
|
|
Exchanged the position of these states in the switch statements to
match the state enum, execution and function order.
|
|
Tidy up of comments before next round of imap changes.
|
|
Corrected the comparison type in addition to commit 1dac29fa83a9.
|
|
|
|
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.
|
|
Enhanced the parsing to only allow continuation responses in some
states.
|
|
|
|
|
|
|
|
Enhanced the parsing of tagged responses which must start with "OK",
"NO" or "BAD"
|
|
|
|
|
|
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.
|
|
|
|
|
|
Updated the imap_parse_url_path() function to parse uidvalidity, uid and
section parameters based on RFC-5092.
|
|
Added imap_is_bchar() for testing if a given character is a valid bchar
or not.
|
|
Added uidvalidity, uid and section variables to the per-request IMAP
structure in preparation for upcoming URL parsing.
|
|
Used imap_atom() to escape mailbox names in imap_select().
|
|
|
|
Changed some variables and comments still using FTP terminology.
|
|
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.
|
|
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.
|
|
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.
|
|
Fixed an incorrect variable reference which was introduced in commit
a1701eea289f as a result of a copy and paste from SMTP/POP3.
|
|
Tidied up result variables to be consistent in name, declaration order
and default values.
|
|
Due to the reordering of functions in commit 586f5d361474 the forward
declaration to state_upgrade_tls() are no longer required.
|