summaryrefslogtreecommitdiff
path: root/lib/pingpong.c
Commit message (Collapse)AuthorAgeFilesLines
* code cleanup: we prefer 'CURLcode result'Daniel Stenberg2014-10-241-19/+17
| | | | | | | | | | | | | | ... for the local variable name in functions holding the return code. Using the same name universally makes code easier to read and follow. Also, unify code for checking for CURLcode errors with: if(result) or if(!result) instead of if(result == CURLE_OK), if(CURLE_OK == result) or if(result != CURLE_OK)
* Curl_pp_flushsend: skip superfluous assignmentDaniel Stenberg2014-10-241-4/+2
| | | | Detected by cppcheck.
* Curl_pp_readresp: remove superfluous assignmentDaniel Stenberg2014-10-241-3/+1
| | | | | | Variable already assigned a few lines up. Detected by cppcheck.
* Curl_pp_readresp: use memmove not memcpy, possibly overlapping areasDaniel Stenberg2013-12-241-1/+1
| | | | Fixes commit 1deac31eba7
* Curl_pp_readresp: replace stupid loop with memcpyDaniel Stenberg2013-12-221-4/+2
|
* Curl_pp_readresp: zero terminate lineDaniel Stenberg2013-12-221-1/+1
| | | | | | | | | The comment in the code mentions the zero terminating after having copied data, but it mistakingly zero terminated the source data and not the destination! This caused the test 864 problem discussed on the list: http://curl.haxx.se/mail/lib-2013-12/0113.html Signed-off-by: Daniel Stenberg <daniel@haxx.se>
* vtls: renamed sslgen.[ch] to vtls.[ch]Daniel Stenberg2013-12-201-1/+1
|
* vtls: created subdir, moved sslgen.[ch] there, updated all include linesDaniel Stenberg2013-12-201-1/+1
|
* pingpong: Check SSL library buffers for already read dataJiri Hruska2013-09-091-0/+4
| | | | | | Otherwise the connection can get stuck during various phases, waiting for new data on the socket using select() etc., but it will never be received as the data has already been read into SSL library.
* FTP: remove krb4 supportDaniel Stenberg2013-08-251-8/+7
| | | | | | | | | | We've announced this pending removal for a long time and we've repeatedly asked if anyone would care or if anyone objects. Nobody has objected. It has probably not even been working for a good while since nobody has tested/used this code recently. The stuff in krb4.h that was generic enough to be used by other sources is now present in security.h
* pingpong.c: Fix enumerated type mixed with another typeSteve Holme2013-03-031-2/+2
|
* Fixed checking the socket if there is data waiting in the cacheJiri Hruska2013-02-221-3/+7
| | | | | | Use Curl_pp_moredata() in Curl_pp_multi_statemach() to check if there is more data to be received, rather than the socket state, as a task could hang waiting for more data from the socket itself.
* pingpong: Introduce Curl_pp_moredata()Jiri Hruska2013-02-221-0/+4
| | | | | | | | | | | | | | A simple function to test whether the PP is not sending and there are still more data in its receiver cache. This will be later utilized to: 1) Change Curl_pp_multi_statemach() and Curl_pp_easy_statemach() to not test socket state and just call user's statemach_act() function when there are more data to process, because otherwise the task would just hang, waiting for more data from the socket. 2) Allow PP users to read multiple responses by looping as long as there are more data available and current phase is not finished. (Currently needed for correct processing of IMAP SELECT responses.)
* compiler warning fix: declaration of 'wait' shadows a global declarationDaniel Stenberg2013-02-181-3/+3
| | | | | | | | It seems older gcc installations (at least) will cause warnings if we name a variable 'wait'. Now changed to 'block' instead. Reported by: Jiří Hruška Bug: http://curl.haxx.se/mail/lib-2013-02/0247.html
* rename "easy" statemachines: call them block insteadDaniel Stenberg2013-02-151-52/+22
| | | | | | ... 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.
* pingpong: Optimised the endofresp() functionSteve Holme2013-02-121-1/+1
| | | | | | | | | | 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.
* build: fix circular header inclusion with other packagesYang Tse2013-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit renames lib/setup.h to lib/curl_setup.h and renames lib/setup_once.h to lib/curl_setup_once.h. Removes the need and usage of a header inclusion guard foreign to libcurl. [1] Removes the need and presence of an alarming notice we carried in old setup_once.h [2] ---------------------------------------- 1 - lib/setup_once.h used __SETUP_ONCE_H macro as header inclusion guard up to commit ec691ca3 which changed this to HEADER_CURL_SETUP_ONCE_H, this single inclusion guard is enough to ensure that inclusion of lib/setup_once.h done from lib/setup.h is only done once. Additionally lib/setup.h has always used __SETUP_ONCE_H macro to protect inclusion of setup_once.h even after commit ec691ca3, this was to avoid a circular header inclusion triggered when building a c-ares enabled version with c-ares sources available which also has a setup_once.h header. Commit ec691ca3 exposes the real nature of __SETUP_ONCE_H usage in lib/setup.h, it is a header inclusion guard foreign to libcurl belonging to c-ares's setup_once.h The renaming this commit does, fixes the circular header inclusion, and as such removes the need and usage of a header inclusion guard foreign to libcurl. Macro __SETUP_ONCE_H no longer used in libcurl. 2 - Due to the circular interdependency of old lib/setup_once.h and the c-ares setup_once.h header, old file lib/setup_once.h has carried back from 2006 up to now days an alarming and prominent notice about the need of keeping libcurl's and c-ares's setup_once.h in sync. Given that this commit fixes the circular interdependency, the need and presence of mentioned notice is removed. All mentioned interdependencies come back from now old days when the c-ares project lived inside a curl subdirectory. This commit removes last traces of such fact.
* Revert changes relative to lib/*.[ch] recent renamingYang Tse2013-01-061-0/+538
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts renaming and usage of lib/*.h header files done 28-12-2012, reverting 2 commits: f871de0... build: make use of 76 lib/*.h renamed files ffd8e12... build: rename 76 lib/*.h files This also reverts removal of redundant include guard (redundant thanks to changes in above commits) done 2-12-2013, reverting 1 commit: c087374... curl_setup.h: remove redundant include guard This also reverts renaming and usage of lib/*.c source files done 3-12-2013, reverting 3 commits: 13606bb... build: make use of 93 lib/*.c renamed files 5b6e792... build: rename 93 lib/*.c files 7d83dff... build: commit 13606bbfde follow-up 1 Start of related discussion thread: http://curl.haxx.se/mail/lib-2013-01/0012.html Asking for confirmation on pushing this revertion commit: http://curl.haxx.se/mail/lib-2013-01/0048.html Confirmation summary: http://curl.haxx.se/mail/lib-2013-01/0079.html NOTICE: The list of 2 files that have been modified by other intermixed commits, while renamed, and also by at least one of the 6 commits this one reverts follows below. These 2 files will exhibit a hole in history unless git's '--follow' option is used when viewing logs. lib/curl_imap.h lib/curl_smtp.h
* build: rename 93 lib/*.c filesYang Tse2013-01-031-538/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 93 lib/*.c source files renamed to use our standard naming scheme. This commit only does the file renaming. ---------------------------------------- renamed: lib/amigaos.c -> lib/curl_amigaos.c renamed: lib/asyn-ares.c -> lib/curl_asyn_ares.c renamed: lib/asyn-thread.c -> lib/curl_asyn_thread.c renamed: lib/axtls.c -> lib/curl_axtls.c renamed: lib/base64.c -> lib/curl_base64.c renamed: lib/bundles.c -> lib/curl_bundles.c renamed: lib/conncache.c -> lib/curl_conncache.c renamed: lib/connect.c -> lib/curl_connect.c renamed: lib/content_encoding.c -> lib/curl_content_encoding.c renamed: lib/cookie.c -> lib/curl_cookie.c renamed: lib/cyassl.c -> lib/curl_cyassl.c renamed: lib/dict.c -> lib/curl_dict.c renamed: lib/easy.c -> lib/curl_easy.c renamed: lib/escape.c -> lib/curl_escape.c renamed: lib/file.c -> lib/curl_file.c renamed: lib/fileinfo.c -> lib/curl_fileinfo.c renamed: lib/formdata.c -> lib/curl_formdata.c renamed: lib/ftp.c -> lib/curl_ftp.c renamed: lib/ftplistparser.c -> lib/curl_ftplistparser.c renamed: lib/getenv.c -> lib/curl_getenv.c renamed: lib/getinfo.c -> lib/curl_getinfo.c renamed: lib/gopher.c -> lib/curl_gopher.c renamed: lib/gtls.c -> lib/curl_gtls.c renamed: lib/hash.c -> lib/curl_hash.c renamed: lib/hmac.c -> lib/curl_hmac.c renamed: lib/hostasyn.c -> lib/curl_hostasyn.c renamed: lib/hostcheck.c -> lib/curl_hostcheck.c renamed: lib/hostip.c -> lib/curl_hostip.c renamed: lib/hostip4.c -> lib/curl_hostip4.c renamed: lib/hostip6.c -> lib/curl_hostip6.c renamed: lib/hostsyn.c -> lib/curl_hostsyn.c renamed: lib/http.c -> lib/curl_http.c renamed: lib/http_chunks.c -> lib/curl_http_chunks.c renamed: lib/http_digest.c -> lib/curl_http_digest.c renamed: lib/http_negotiate.c -> lib/curl_http_negotiate.c renamed: lib/http_negotiate_sspi.c -> lib/curl_http_negotiate_sspi.c renamed: lib/http_proxy.c -> lib/curl_http_proxy.c renamed: lib/idn_win32.c -> lib/curl_idn_win32.c renamed: lib/if2ip.c -> lib/curl_if2ip.c renamed: lib/imap.c -> lib/curl_imap.c renamed: lib/inet_ntop.c -> lib/curl_inet_ntop.c renamed: lib/inet_pton.c -> lib/curl_inet_pton.c renamed: lib/krb4.c -> lib/curl_krb4.c renamed: lib/krb5.c -> lib/curl_krb5.c renamed: lib/ldap.c -> lib/curl_ldap.c renamed: lib/llist.c -> lib/curl_llist.c renamed: lib/md4.c -> lib/curl_md4.c renamed: lib/md5.c -> lib/curl_md5.c renamed: lib/memdebug.c -> lib/curl_memdebug.c renamed: lib/mprintf.c -> lib/curl_mprintf.c renamed: lib/multi.c -> lib/curl_multi.c renamed: lib/netrc.c -> lib/curl_netrc.c renamed: lib/non-ascii.c -> lib/curl_non_ascii.c renamed: lib/curl_non-ascii.h -> lib/curl_non_ascii.h renamed: lib/nonblock.c -> lib/curl_nonblock.c renamed: lib/nss.c -> lib/curl_nss.c renamed: lib/nwlib.c -> lib/curl_nwlib.c renamed: lib/nwos.c -> lib/curl_nwos.c renamed: lib/openldap.c -> lib/curl_openldap.c renamed: lib/parsedate.c -> lib/curl_parsedate.c renamed: lib/pingpong.c -> lib/curl_pingpong.c renamed: lib/polarssl.c -> lib/curl_polarssl.c renamed: lib/pop3.c -> lib/curl_pop3.c renamed: lib/progress.c -> lib/curl_progress.c renamed: lib/qssl.c -> lib/curl_qssl.c renamed: lib/rawstr.c -> lib/curl_rawstr.c renamed: lib/rtsp.c -> lib/curl_rtsp.c renamed: lib/security.c -> lib/curl_security.c renamed: lib/select.c -> lib/curl_select.c renamed: lib/sendf.c -> lib/curl_sendf.c renamed: lib/share.c -> lib/curl_share.c renamed: lib/slist.c -> lib/curl_slist.c renamed: lib/smtp.c -> lib/curl_smtp.c renamed: lib/socks.c -> lib/curl_socks.c renamed: lib/socks_gssapi.c -> lib/curl_socks_gssapi.c renamed: lib/socks_sspi.c -> lib/curl_socks_sspi.c renamed: lib/speedcheck.c -> lib/curl_speedcheck.c renamed: lib/splay.c -> lib/curl_splay.c renamed: lib/ssh.c -> lib/curl_ssh.c renamed: lib/sslgen.c -> lib/curl_sslgen.c renamed: lib/ssluse.c -> lib/curl_ssluse.c renamed: lib/strdup.c -> lib/curl_strdup.c renamed: lib/strequal.c -> lib/curl_strequal.c renamed: lib/strerror.c -> lib/curl_strerror.c renamed: lib/strtok.c -> lib/curl_strtok.c renamed: lib/strtoofft.c -> lib/curl_strtoofft.c renamed: lib/telnet.c -> lib/curl_telnet.c renamed: lib/tftp.c -> lib/curl_tftp.c renamed: lib/timeval.c -> lib/curl_timeval.c renamed: lib/transfer.c -> lib/curl_transfer.c renamed: lib/url.c -> lib/curl_url.c renamed: lib/version.c -> lib/curl_version.c renamed: lib/warnless.c -> lib/curl_warnless.c renamed: lib/wildcard.c -> lib/curl_wildcard.c ----------------------------------------
* build: make use of 93 lib/*.c renamed filesYang Tse2013-01-031-2/+2
| | | | | | 93 *.c source files renamed to use our standard naming scheme. This change affects 77 files in libcurl's source tree.
* build: make use of 76 lib/*.h renamed filesYang Tse2012-12-281-10/+10
| | | | | | 76 private header files renamed to use our standard naming scheme. This change affects 322 files in libcurl's source tree.
* FTP: prevent the multi interface from blockingDaniel Stenberg2012-11-041-1/+4
| | | | | | | | | | | | | | | As pointed out in Bug report #3579064, curl_multi_perform() would wrongly use a blocking mechanism internally for some commands which could lead to for example a very long block if the LIST response never showed. The solution was to make sure to properly continue to use the multi interface non-blocking state machine. The new test 1501 verifies the fix. Bug: http://curl.haxx.se/bug/view.cgi?id=3579064 Reported by: Guido Berhoerster
* pingpong: change two comments wrongly referring "FTP"Daniel Stenberg2011-11-061-5/+4
| | | | | Just a sign of where the code originally was ripped out from. Now it is generic "pingpong".
* pingpong.c: avoid a memmove call in function Curl_pp_vsendfYang Tse2011-09-051-4/+7
|
* pingpong.c: fix Curl_pp_vsendf() arbitrary restrictions on command lengthYang Tse2011-08-291-34/+32
| | | | This removes command length restrictions on calling functions.
* Curl_socket_ready: make timeout a 'long'Daniel Stenberg2011-06-041-1/+1
| | | | | It was mostly typecasted to int all over the code so switching to long instead all over should be a net gain.
* source cleanup: unify look, style and indent levelsDaniel Stenberg2011-04-271-5/+5
| | | | | By the use of a the new lib/checksrc.pl script that checks that our basic source style rules are followed.
* CURL_DOES_CONVERSIONS: cleanupDaniel Stenberg2011-04-201-10/+5
| | | | | Massively reduce #ifdefs all over (23 #ifdef lines less so far) Moved conversion-specific code to non-ascii.c
* Trival comment fix.Brad Hards2010-12-181-1/+1
|
* urldata: Capitalize enum protect_level values.Julien Chaffraix2010-11-131-5/+4
| | | | | This makes it easier to spot the enum values from the variables. Removed some unneeded DEBUGASSERT added in the previous commit.
* security: tighten enum protection_level usage.Julien Chaffraix2010-11-131-2/+4
| | | | | | | | | | While changing Curl_sec_read_msg to accept an enum protection_level instead of an int, I went ahead and fixed the usage of the associated fields. Some code was assuming that prot_clear == 0. Fixed those to use the proper value. Added assertions prior to any code that would set the protection level.
* Removed a leftover mention of FTP in an error messageDan Fandrich2010-10-281-1/+1
|
* build: add typecast to avoid warningDaniel Stenberg2010-08-021-1/+1
| | | | | There is an implicit conversion from "unsigned long" to "long"; rounding, sign extension, or loss of accuracy may result.
* pingpong: Fix indentation (whitespace change only)Ben Greear2010-07-211-2/+2
| | | | Signed-off-by: Ben Greear <greearb@candelatech.com>
* sendrecv: split the I/O handling into private handlerHoward Chu2010-05-071-2/+1
| | | | | | | | | | | | | | Howard Chu brought the bulk work of this patch that properly moves out the sending and recving of data to the parts of the code that are properly responsible for the various ways of doing so. Daniel Stenberg assisted with polishing a few bits and fixed some minor flaws in the original patch. Another upside of this patch is that we now abuse CURLcodes less with the "magic" -1 return codes and instead use CURLE_AGAIN more consistently.
* remove the CVSish $Id$ linesDaniel Stenberg2010-03-241-1/+0
|
* - Made the pingpong timeout code properly deal with the response timeout ANDDaniel Stenberg2010-03-021-14/+19
| | | | | | | | | | the global timeout if set. Also, as was reported in the bug report #2956437 by Ryan Chan, the time stamp to use as basis for the per command timeout was not set properly in the DONE phase for FTP (and not for SMTP) so I fixed that just now. This was a regression compared to 7.19.7 due to the conversion of FTP code over to the generic pingpong concepts. http://curl.haxx.se/bug/view.cgi?id=2956437
* remove assignment never usedDaniel Stenberg2010-03-021-2/+2
|
* Fix compiler warningsYang Tse2009-12-141-1/+1
|
* introducing IMAP, POP3 and SMTP support (still lots of polish left to do)Daniel Stenberg2009-12-121-0/+536