Zdenek Pavlas
57ccdfa8d2
curl_global_init: accept the CURL_GLOBAL_ACK_EINTR flag
...
The flag can be used in pycurl-based applications where using the multi
interface would not be acceptable because of the performance lost caused
by implementing the select() loop in python.
Bug: http://curl.haxx.se/bug/view.cgi?id=1168
Downstream Bug: https://bugzilla.redhat.com/919127
2013-03-12 10:58:20 +01:00
Kamil Dudka
491e026ccd
easy: do not ignore poll() failures other than EINTR
2013-03-12 10:58:19 +01:00
Yang Tse
83a42ee20e
curl.h: stricter CURL_EXTERN linkage decorations logic
...
No API change involved.
Info: http://curl.haxx.se/mail/lib-2013-02/0234.html
2013-03-12 00:27:47 +01:00
Steve Holme
1fcf52cae4
imap: Reworked some function descriptions
2013-03-10 12:56:45 +00:00
Steve Holme
cbea345f61
imap: Added some missing comments to imap_sendf()
2013-03-10 12:47:28 +00:00
Steve Holme
059647f398
email: Removed hard returns from init functions
2013-03-09 22:25:40 +00:00
Daniel Stenberg
136a3a0ee2
curl_multi_wait: avoid second loop if nothing to do
...
... hopefully this will also make clang-analyzer stop warning on
potentional NULL dereferences (which were false positives anyway).
2013-03-09 22:27:15 +01:00
Daniel Stenberg
64b2d2d77e
multi_runsingle: avoid NULL dereference
...
When Curl_do() returns failure, the connection pointer could be NULL so
the code path following needs to that that into account.
Bug: http://curl.haxx.se/mail/lib-2013-03/0062.html
Reported by: Eric Hu
2013-03-09 22:27:15 +01:00
Steve Holme
8826435571
imap: Re-factored all perform based functions
...
Standardised the naming of all perform based functions to be in the form
imap_perform_something().
2013-03-09 18:50:41 +00:00
Steve Holme
ca3c0ed3a9
imap: Added description comments to all perform based functions
2013-03-09 14:02:56 +00:00
Steve Holme
6bdd3d4a88
imap: Removed the need for separate custom request functions
...
Moved the custom request processing into the LIST command as the logic
is the same.
2013-03-09 13:27:16 +00:00
Steve Holme
69eca5c252
imap: Corrected typo in comment
2013-03-09 13:25:15 +00:00
Yang Tse
0840f01e99
Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility
2013-03-09 14:05:21 +01:00
Steve Holme
b4c9b515aa
imap: Moved imap_logout() to be grouped with the other perform functions
2013-03-09 12:12:20 +00:00
Steve Holme
b482417ac4
email: Updated the function descriptions for the logout / quit functions
...
Updated the function description comments following commit 4838d196fd
.
2013-03-09 12:10:01 +00:00
Steve Holme
4838d196fd
email: Simplified the logout / quit functions
...
Moved the blocking state machine to the disconnect functions so that the
logout / quit functions are only responsible for sending the actual
command needed to logout or quit.
Additionally removed the hard return on failure.
2013-03-09 11:55:48 +00:00
Steve Holme
f691f9609c
email: Tidied up the *_regular_transfer() functions
...
Added comments and simplified convoluted dophase_done comparison.
2013-03-08 23:25:04 +00:00
Steve Holme
e5bb4e86ac
email: Simplified nesting of if statements in *_doing() functions
2013-03-08 23:02:20 +00:00
Steve Holme
1f41772bef
imap: Fixed handling of untagged responses for the STORE custom command
...
Added an exception, for the STORE command, to the untagged response
processor in imap_endofresp() as servers will back respones containing
the FETCH keyword instead.
2013-03-08 21:18:36 +00:00
Gisle Vanem
bd649ac1c5
polarssl.c: fix header filename typo
2013-03-08 14:02:01 +01:00
Yang Tse
70b5173410
configure: use XC_LIBTOOL for portability across libtool versions
2013-03-08 13:27:45 +01:00
Steve Holme
170ae51c47
imap: Fixed SELECT not being performed for custom requests
2013-03-07 22:56:19 +00:00
Steve Holme
cc890906b1
email: Minor code tidy up following recent changes
...
Removed unwanted braces and added variable initialisation.
2013-03-07 22:44:10 +00:00
Steve Holme
67b6fa5f95
email: Optimised block_statemach() functions
...
Optimised the result test in each of the block_statemach() functions.
2013-03-07 18:21:58 +00:00
Daniel Stenberg
7f963a19ec
checksrc: ban unsafe functions
...
The list of unsafe functions currently consists of sprintf, vsprintf,
strcat, strncat and gets.
Subsequently, some existing code needed updating to avoid warnings on
this.
2013-03-07 11:08:05 +01:00
Steve Holme
5c89413b24
imap: Tidied up the APPEND and final APPEND response functions
...
Removed unnecessary state changes on failure and setting of result codes
on success.
2013-03-06 20:31:53 +00:00
Steve Holme
37f3fcd631
imap: Tidied up the final FETCH response function
...
Removed unnecessary state change on failure and setting of result code on
success.
2013-03-06 20:19:46 +00:00
Steve Holme
c9f9f601b8
imap: Tidied up the LIST response function
...
Reworked comments as they referenced custom commands, removed
unnecessary state change on failure and setting of result code on
success.
2013-03-06 20:10:53 +00:00
Steve Holme
24ffceed81
imap: Removed the custom request response function
...
Removed imap_state_custom_resp() as imap_state_list_resp() provides the
same functionality.
2013-03-06 19:58:34 +00:00
Steve Holme
b7f39156d4
imap: Added check for empty UID in FETCH command
...
As the UID has to be specified by the user for the FETCH command to work
correctly, added a check to imap_fetch(), although strictly speaking it
is protected by the call from imap_perform().
2013-03-06 19:33:49 +00:00
Kamil Dudka
9d0af3018c
nss: fix misplaced code enabling non-blocking socket mode
...
The option needs to be set on the SSL socket. Setting it on the model
takes no effect. Note that the non-blocking mode is still not enabled
for the handshake because the code is not yet ready for that.
2013-03-06 13:34:10 +01:00
Daniel Stenberg
fa9748df11
imap: fix compiler warning
...
imap.c:694:21: error: unused variable 'imapc' [-Werror=unused-variable]
2013-03-06 08:28:05 +01:00
Steve Holme
198012ee13
imap: Added support for list command
2013-03-05 22:04:03 +00:00
Steve Holme
742544aad0
imap: Added list perform and response handler functions
2013-03-05 21:39:18 +00:00
Steve Holme
041754e3fa
imap: Introduced IMAP_LIST state
2013-03-05 21:35:16 +00:00
Steve Holme
b960f1e8bd
imap: Small tidy up of imap_select() to match imap_append()
...
Updated the style of imap_select() before adding the LIST command.
2013-03-05 19:59:53 +00:00
Steve Holme
c29346613d
imap: Moved mailbox check from the imap_do() function
...
In preparation for the addition of the LIST command, moved the mailbox
check from imap_do() to imap_select() and imap_append().
2013-03-05 19:52:11 +00:00
Steve Holme
172e6378f8
curl_setup.h: Added S_IRDIR() macro for compilers that don't support it
...
Commit 26eaa83830
introduces the use of S_ISDIR() yet some compilers,
such as MSVC don't support it, so we must define a substitute using
file flags and mask.
2013-03-05 19:45:51 +00:00
Daniel Stenberg
26eaa83830
AddFormData: prevent only directories from being posted
...
Commit f4cc54cb47
(shipped as part of the 7.29.0 release) was a
bug fix that introduced a regression in that while trying to avoid
allowing directory names, it also forbade "special" files like character
devices and more. like "/dev/null" as was used by Oliver who reported
this regression.
Reported by: Oliver Gondža
Bug: http://curl.haxx.se/mail/archive-2013-02/0040.html
2013-03-04 15:52:10 +01:00
Nick Zitzmann
fadf33c78a
darwinssl: fix infinite loop if server disconnected abruptly
...
If the server hung up the connection without sending a closure alert,
then we'd keep probing the socket for data even though it's dead. Now
we're ready for this situation.
Bug: http://curl.haxx.se/mail/lib-2013-03/0014.html
Reported by: Aki Koskinen
2013-03-03 22:11:10 -07:00
Steve Holme
298f806d01
imap: Added comments to imap_append()
2013-03-03 16:44:53 +00:00
Jiri Hruska
e6b7dae947
imap: Added required mailbox check for FETCH and APPEND commands
2013-03-03 16:39:50 +00:00
Steve Holme
fa637c6cab
pingpong.c: Fix enumerated type mixed with another type
2013-03-03 13:55:01 +00:00
Steve Holme
036366f1ef
smtp: Updated the coding style for state changes after a send operation
...
Some state changes would be performed after a failure test that
performed a hard return, whilst others would be performed within a test
for success. Updated the code, for consistency, so all instances are
performed within a success test.
2013-03-03 13:48:22 +00:00
Steve Holme
757aa7b09d
pop3: Updated the coding style for state changes after a send operation
...
Some state changes would be performed after a failure test that
performed a hard return, whilst others would be performed within a test
for success. Updated the code, for consistency, so all instances are
performed within a success test.
2013-03-03 13:36:12 +00:00
Steve Holme
b1ebf4bda1
imap: Fixed typo in variable assignment
2013-03-03 13:13:59 +00:00
Jiri Hruska
284ea5f924
imap: Fixed custom request handling in imap_done()
...
Fixed imap_done() so that neither the FINAL states are not entered when
a custom command has been performed.
2013-03-03 13:10:36 +00:00
Jiri Hruska
c03cad3a61
imap: Enabled custom requests in imap_select_resp()
...
Changed imap_select_resp() to invoke imap_custom() instead of
imap_fetch() after the mailbox has been selected if a custom
command has been set.
2013-03-03 13:10:34 +00:00
Jiri Hruska
ad8b76d094
imap: Enabled custom requests in imap_perform()
...
Modified imap_perform() to start with the custom command instead of
SELECT when a custom command is to be performed and no mailbox has
been given.
2013-03-03 13:10:32 +00:00
Jiri Hruska
226c1c6876
imap: Added custom request perform and response handler functions
...
Added imap_custom(), which initiates the custom command processing,
and an associated response handler imap_state_custom_resp(), which
handles any responses by sending them to the client as body data.
All untagged responses with the same name as the first word of the
custom request string are accepted, with the exception of SELECT and
EXAMINE which have responses that cannot be easily identified. An
extra check has been provided for them so that any untagged responses
are accepted for them.
2013-03-03 13:10:31 +00:00
Steve Holme
711065e4df
pop3: Fixed unnecessary parent structure reference
...
Updated pop3 code following recent imap changes.
2013-03-03 11:10:24 +00:00
Jiri Hruska
ee7034800d
imap: Added custom request parsing
...
Added imap_parse_custom_request() for parsing the CURLOPT_CUSTOMREQUEST
parameter which URL decodes the value and separates the request from
any parameters - This makes it easier to filter untagged responses
by the request command.
2013-03-03 11:06:55 +00:00
Jiri Hruska
1d3ccf27ec
imap: Introduced custom request parameters
...
Added custom request parameters to the per-request structure.
2013-03-03 11:03:45 +00:00
Jiri Hruska
51dbaae432
imap: Introduced IMAP_CUSTOM state
2013-03-03 10:13:13 +00:00
Steve Holme
dcffd936e1
imap: Minor code tidy up
...
Minor tidy up of code layout and comments following recent changes.
2013-03-02 21:22:44 +00:00
Steve Holme
e94fbcabd7
imap: Simplified the imap_state_append_resp() function
...
Introduced the result code variable to simplify the state changes and
remove the hard returns.
2013-03-02 20:40:38 +00:00
Steve Holme
ec38ac38c7
imap: Changed successful response logic in imap_state_append_resp()
...
For consistency changed the logic of the imap_state_append_resp()
function to test for an unsucessful continuation response rather than a
succesful one.
2013-03-02 20:35:03 +00:00
Steve Holme
0f64dd086a
imap: Standardised imapcode condition tests
...
For consistency changed two if(constant != imapcode) tests to be
if(imapcode != constant).
2013-03-02 20:29:27 +00:00
Steve Holme
459e1bffee
imap: Moved imap_append() to be with the other perform functions
2013-03-02 20:24:49 +00:00
Jiri Hruska
7b471fb344
imap: Enabled APPEND support in imap_perform()
...
Added logic in imap_perform() to perform an APPEND rather than SELECT
and FETCH if an upload has been specified.
2013-03-02 20:17:45 +00:00
Jiri Hruska
f8c8c76d39
imap: Implemented APPEND final processing
...
The APPEND operation needs to be performed in several steps:
1) We send "<tag> APPEND <mailbox> <flags> {<size>}\r\n"
2) Server responds with continuation respose "+ ...\r\n"
3) We start the transfer and send <size> bytes of data
4) Only now we end the request command line by sending "\r\n"
5) Server responds with "<tag> OK ...\r\n"
This commit performs steps 4 and 5, in the DONE phase, as more
processing is required after the transfer.
2013-03-02 19:34:25 +00:00
Jiri Hruska
90b7d0ea59
imap: Added APPEND perform and response handler functions
...
Added imap_append() function to initiate upload and imap_append_resp()
to handle the continuation response and start the transfer.
2013-03-02 19:17:18 +00:00
Jiri Hruska
1383522e3a
imap: Introduced IMAP_APPEND and IMAP_APPEND_FINAL states
2013-03-02 19:06:35 +00:00
Jiri Hruska
d46d107e0c
imap: Updated setting of transfer variables in imap_state_fetch_resp()
...
Add number of bytes retrieved from the PP cache to req.bytecount and set
req.maxdownload only when starting a proper download.
2013-03-02 18:37:56 +00:00
Jiri Hruska
25884aa197
imap: Improved FETCH response parsing
...
Added safer parsing of the untagged FETCH response line and the size of
continuation data.
2013-03-02 18:37:54 +00:00
Steve Holme
be51a46353
imap: Fixed accidentally lossing the result code
...
Accidentally lost the result code in imap_state_capability() and
imap_state_login() with commit b06a786226
.
2013-02-28 23:09:28 +00:00
Steve Holme
48596f87a9
imap: Another minor comment addition / tidy up
2013-02-28 22:51:32 +00:00
Steve Holme
b06a786226
imap: Updated the coding style for state changes after a send operation
...
Some state changes would be performed after a failure test that
performed a hard return, whilst others would be performed within a test
for success. Updated the code, for consistency, so all instances are
performed within a success test.
2013-02-28 22:46:22 +00:00
Steve Holme
b4eb08e7fb
pop3 / smtp: Small comment tidy up
...
Small tidy up to keep some comments consistant across each of the email
protocols.
2013-02-28 22:27:10 +00:00
Jiri Hruska
10549ee08f
imap: FETCH response handler cleanup before further changes
...
Removed superfluous NULL assignment after Curl_safefree() and rewrote
some comments and logging messages.
2013-02-28 22:13:34 +00:00
Steve Holme
d9235e74ed
pop3: Small tidy up of function arguments
2013-02-28 21:22:49 +00:00
Steve Holme
6ff7197e70
imap: Small tidy up of function arguments
2013-02-28 21:18:36 +00:00
Steve Holme
0be2251394
smtp: Corrected debug message for POP3_AUTH_FINAL constant
...
Following commit ad3177da24
corrected the debug message in state()
from AUTH to AUTH_FINAL.
2013-02-28 21:11:02 +00:00
Steve Holme
4cef525992
pop3: Corrected debug message for POP3_AUTH_FINAL constant
...
Following commit afad1ce753
corrected the debug message in state()
from AUTH to AUTH_FINAL.
2013-02-28 21:10:11 +00:00
Steve Holme
11a22f3264
imap: Corrected debug message for IMAP_AUTHENTICATE_FINAL constant
...
Following commit 13006f3de9
corrected the debug message in state()
from AUTHENTICATE to AUTHENTICATE_FINAL.
2013-02-28 21:09:27 +00:00
Jiri Hruska
025ba6e9be
imap: Fixed error code returned for invalid FETCH response
...
If the FETCH command does not result in an untagged response the the
UID is probably invalid. As such do not return CURLE_OK.
2013-02-28 21:00:13 +00:00
Jiri Hruska
cdea86ff67
imap: Added processing of the final FETCH responses
...
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-28 21:00:11 +00:00
Jiri Hruska
974c663471
imap: Introduced FETCH_FINAL state for processing final fetch responses
...
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-28 21:00:10 +00:00
Steve Holme
692ef0e158
imap: fix autobuild warning
...
Removed whitespace from imap_perform()
2013-02-28 10:23:50 +00:00
Steve Holme
17f032c0d9
imap: fix compiler warning
...
error: declaration of 'imap' shadows a previous local
2013-02-28 07:31:41 +00:00
Steve Holme
ad3177da24
smtp: Re-factored the final SMTP_AUTH constant
...
Changed the final SMTP_AUTH constant to SMTP_AUTH_FINAL for consistency
with the response function.
2013-02-27 21:20:55 +00:00
Steve Holme
afad1ce753
pop3: Re-factored the final POP3_AUTH constant
...
Changed the final POP3_AUTH constant to POP3_AUTH_FINAL for consistency
with the response function.
2013-02-27 21:20:11 +00:00
Steve Holme
13006f3de9
imap: Re-factored final IMAP_AUTHENTICATE constant
...
Changed the final IMAP_AUTHENTICATE constant to IMAP_AUTHENTICATE_FINAL
for consistency with the response function.
2013-02-27 21:19:48 +00:00
Steve Holme
1d86d813c3
imap: Updated the coding style of imap_state_servergreet_resp()
...
Updated the coding style, in this function, to be consistant with other
response functions rather then performing a hard return on failure.
2013-02-27 21:00:35 +00:00
Steve Holme
f53ed631b3
imap: Reversed the logic of the (un)successful tagged SELECT response
...
Reversed the logic of the unsuccessful vs successful tagged SELECT
response in imap_state_select_resp() to be more logical to read.
2013-02-27 20:53:34 +00:00
Steve Holme
5b3736b533
imap: Reversed the logic of the (un)successful tagged CAPABILITY response
...
Reversed the logic of the unsuccessful vs successful tagged CAPABILITY
response in imap_state_capability_resp() to be more logical to read.
2013-02-27 20:48:24 +00:00
Steve Holme
cce08581ac
imap: Corrected char* references with char *
...
Corrected char* references made in commit: 709b3506cd
.
2013-02-27 20:35:04 +00:00
Jiri Hruska
c368fbcb10
imap: Added processing of more than one response when sent in same packet
...
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-27 20:08:04 +00:00
Jiri Hruska
b644c47192
imap: Added skipping of SELECT command if already in the same mailbox
...
Added storage and checking of the last mailbox userd to prevent
unnecessary switching.
2013-02-27 20:08:02 +00:00
Jiri Hruska
d03aa16164
imap: Introduced the mailbox variable
...
Added the mailbox variable to the per-connection structure in
preparation for checking for an already selected mailbox.
2013-02-27 20:08:00 +00:00
Steve Holme
aa44ec62aa
email: Slight reordering of connection based variables
...
Reordered the state and ssl_done variables in order to provide more
consistency between the email protocols as well as for for an upcoming
change.
2013-02-26 23:15:16 +00:00
Steve Holme
05c03e7edd
imap: Tidied up comments for connection based variables
2013-02-26 23:07:37 +00:00
Jiri Hruska
a8eb059203
imap: Added verification of UIDVALIDITY mailbox attribute
...
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-26 22:09:21 +00:00
Jiri Hruska
59c71c7fc7
imap: Added support for parsing the UIDVALIDITY property
...
Added support for parsing the UIDVALIDITY property from the SELECT
response and storing it in the per-connection structure.
2013-02-26 22:09:19 +00:00
Jiri Hruska
58efa46a5d
imap: Introduced the mailbox_uidvalidity variable
...
Added the mailbox_uidvalidity variable to the per-connection structure
in preparation for checking the UIDVALIDITY mailbox attribute.
2013-02-26 22:09:18 +00:00
Steve Holme
acd22f05dd
imap: Corrected comment in imap_endofresp()
2013-02-26 20:40:22 +00:00
Steve Holme
ce9a0a6d65
imap: Corrected whitespace
2013-02-26 20:37:08 +00:00
Jiri Hruska
f92f341a3f
imap: Added filtering of CAPABILITY and FETCH untagged responses
...
Only responses that contain "CAPABILITY" and "FETCH", respectively,
will be sent to their response handler.
2013-02-26 20:35:41 +00:00
Jiri Hruska
91b2184e1b
imap: Added a helper function for upcoming untagged response filtering
...
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-26 20:23:13 +00:00
Jiri Hruska
1ffdc5058e
imap: Moved CAPABILITY response handling to imap_state_capability_resp()
...
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-26 19:51:16 +00:00