aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/asyn-ares.c1
-rw-r--r--lib/curl_memory.h4
-rw-r--r--lib/easy.c2
-rw-r--r--lib/ftp.c2
-rw-r--r--lib/http.c7
-rw-r--r--lib/http2.c5
-rw-r--r--lib/imap.c20
-rw-r--r--lib/openldap.c6
-rw-r--r--lib/rtsp.c13
-rw-r--r--lib/smtp.c6
-rw-r--r--lib/splay.c2
-rw-r--r--lib/ssh.c14
-rw-r--r--lib/telnet.c1
-rw-r--r--lib/url.c2
-rw-r--r--lib/vtls/gtls.c6
-rw-r--r--lib/vtls/openssl.c5
-rw-r--r--lib/x509asn1.c5
-rw-r--r--src/tool_cb_prg.c10
-rw-r--r--src/tool_operate.c12
19 files changed, 97 insertions, 26 deletions
diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c
index 080010222..98ecdfd71 100644
--- a/lib/asyn-ares.c
+++ b/lib/asyn-ares.c
@@ -416,6 +416,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
if(result)
/* close the connection, since we can't return failure here without
cleaning up this connection properly.
+ TODO: remove this action from here, it is not a name resolver decision.
*/
connclose(conn, "c-ares resolve failed");
diff --git a/lib/curl_memory.h b/lib/curl_memory.h
index 73bbe3fca..bc744ccd8 100644
--- a/lib/curl_memory.h
+++ b/lib/curl_memory.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -39,7 +39,7 @@
*
* File lib/strdup.c is an exception, given that it provides a strdup
* clone implementation while using malloc. Extra care needed inside
- * this one.
+ * this one. TODO: revisit this paragraph and related code.
*
* The need for curl_memory.h inclusion is due to libcurl's feature
* of allowing library user to provide memory replacement functions,
diff --git a/lib/easy.c b/lib/easy.c
index f90dd1694..48961d6da 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -646,7 +646,7 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
return CURLE_RECV_ERROR;
if(mcode)
- return CURLE_URL_MALFORMAT;
+ return CURLE_URL_MALFORMAT; /* TODO: return a proper error! */
/* we don't really care about the "msgs_in_queue" value returned in the
second argument */
diff --git a/lib/ftp.c b/lib/ftp.c
index bf35ed7da..21db56c8e 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -3659,7 +3659,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
if(!conn->bits.tcpconnect[SECONDARYSOCKET]) {
if(conn->tunnel_state[SECONDARYSOCKET] == TUNNEL_CONNECT) {
/* As we're in TUNNEL_CONNECT state now, we know the proxy name and port
- aren't used so we blank their arguments. */
+ aren't used so we blank their arguments. TODO: make this nicer */
result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0, FALSE);
return result;
diff --git a/lib/http.c b/lib/http.c
index eaa5f949c..0ed9c9844 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -2047,7 +2047,10 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
ptr = strstr(url, conn->host.dispname);
if(ptr) {
/* This is where the display name starts in the URL, now replace this
- part with the encoded name. */
+ part with the encoded name. TODO: This method of replacing the host
+ name is rather crude as I believe there's a slight risk that the
+ user has entered a user name or password that contain the host name
+ string. */
size_t currlen = strlen(conn->host.dispname);
size_t newlen = strlen(conn->host.name);
size_t urllen = strlen(url);
@@ -3329,6 +3332,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */
}
else {
+ /* TODO: do we care about the other cases here? */
nc = 0;
}
}
@@ -3559,6 +3563,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
}
if(k->auto_decoding)
+ /* TODO: we only support the first mentioned compression for now */
break;
if(checkprefix("identity", start)) {
diff --git a/lib/http2.c b/lib/http2.c
index df6cb0c73..246b64ac5 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -75,6 +75,8 @@ static int http2_perform_getsock(const struct connectdata *conn,
int bitmap = GETSOCK_BLANK;
(void)numsocks;
+ /* TODO We should check underlying socket state if it is SSL socket
+ because of renegotiation. */
sock[0] = conn->sock[FIRSTSOCKET];
if(nghttp2_session_want_read(c->h2))
@@ -574,7 +576,8 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
/* if we receive data for another handle, wake that up */
if(conn->data != data_s)
- Curl_expire(data_s, 1);
+ Curl_expire(data_s, 1); /* TODO: fix so that this can be set to 0 for
+ immediately? */
DEBUGF(infof(data_s, "%zu data received for stream %u "
"(%zu left in buffer %p, total %zu)\n",
diff --git a/lib/imap.c b/lib/imap.c
index bb0c5190f..a7409f704 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -842,7 +842,7 @@ static CURLcode imap_state_servergreet_resp(struct connectdata *conn,
if(imapcode != 'O') {
failf(data, "Got unexpected imap-server response");
- result = CURLE_FTP_WEIRD_SERVER_REPLY;
+ result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: fix this code */
}
else
result = imap_perform_capability(conn);
@@ -1033,7 +1033,7 @@ static CURLcode imap_state_list_resp(struct connectdata *conn, int imapcode,
line[len] = '\0';
}
else if(imapcode != 'O')
- result = CURLE_QUOTE_ERROR;
+ result = CURLE_QUOTE_ERROR; /* TODO: Fix error code */
else
/* End of DO phase */
state(conn, IMAP_STOP);
@@ -1105,7 +1105,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
if(imapcode != '*') {
Curl_pgrsSetDownloadSize(data, -1);
state(conn, IMAP_STOP);
- return CURLE_REMOTE_FILE_NOT_FOUND;
+ return CURLE_REMOTE_FILE_NOT_FOUND; /* TODO: Fix error code */
}
/* Something like this is received "* 1 FETCH (BODY[TEXT] {2021}\r" so parse
@@ -1174,7 +1174,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
else {
/* We don't know how to parse this line */
failf(pp->conn->data, "Failed to parse FETCH response.");
- result = CURLE_FTP_WEIRD_SERVER_REPLY;
+ result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: fix this code */
}
/* End of DO phase */
@@ -1193,7 +1193,7 @@ static CURLcode imap_state_fetch_final_resp(struct connectdata *conn,
(void)instate; /* No use for this yet */
if(imapcode != 'O')
- result = CURLE_FTP_WEIRD_SERVER_REPLY;
+ result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: Fix error code */
else
/* End of DONE phase */
state(conn, IMAP_STOP);
@@ -1262,7 +1262,7 @@ static CURLcode imap_state_search_resp(struct connectdata *conn, int imapcode,
line[len] = '\0';
}
else if(imapcode != 'O')
- result = CURLE_QUOTE_ERROR;
+ result = CURLE_QUOTE_ERROR; /* TODO: Fix error code */
else
/* End of DO phase */
state(conn, IMAP_STOP);
@@ -1506,10 +1506,10 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
/* Run the state-machine
- This _really_ should be using the imap_multi_statemach function but we
- have no general support for non-blocking DONE operations. Neither in
- the multi state machine and there are Curl_done() invokes on several
- places in the code!
+ TODO: when the multi interface is used, this _really_ should be using
+ the imap_multi_statemach function but we have no general support for
+ non-blocking DONE operations, not in the multi state machine and with
+ Curl_done() invokes on several places in the code!
*/
if(!result)
result = imap_block_statemach(conn);
diff --git a/lib/openldap.c b/lib/openldap.c
index 862813b41..e479ebc75 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -176,7 +176,9 @@ static CURLcode ldap_setup_connection(struct connectdata *conn)
li->proto = proto;
conn->proto.generic = li;
connkeep(conn, "OpenLDAP default");
-
+ /* TODO:
+ * - provide option to choose SASL Binds instead of Simple
+ */
return CURLE_OK;
}
@@ -479,6 +481,8 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
lr->nument++;
rc = ldap_get_dn_ber(li->ld, ent, &ber, &bv);
if(rc < 0) {
+ /* TODO: verify that this is really how this return code should be
+ handled */
*err = CURLE_RECV_ERROR;
return -1;
}
diff --git a/lib/rtsp.c b/lib/rtsp.c
index d190eef9f..f8e6b23dc 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -42,6 +42,16 @@
#include "curl_memory.h"
#include "memdebug.h"
+/*
+ * TODO (general)
+ * -incoming server requests
+ * -server CSeq counter
+ * -digest authentication
+ * -connect thru proxy
+ * -pipelining?
+ */
+
+
#define RTP_PKT_CHANNEL(p) ((int)((unsigned char)((p)[1])))
#define RTP_PKT_LENGTH(p) ((((int)((unsigned char)((p)[2]))) << 8) | \
@@ -212,6 +222,7 @@ static CURLcode rtsp_done(struct connectdata *conn,
else if(data->set.rtspreq == RTSPREQ_RECEIVE &&
(conn->proto.rtspc.rtp_channel == -1)) {
infof(data, "Got an RTP Receive with a CSeq of %ld\n", CSeq_recv);
+ /* TODO CPC: Server -> Client logic here */
}
}
@@ -317,6 +328,8 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done)
return CURLE_BAD_FUNCTION_ARGUMENT;
}
+ /* TODO: proxy? */
+
/* Stream URI. Default to server '*' if not specified */
if(data->set.str[STRING_RTSP_STREAM_URI]) {
p_stream_uri = data->set.str[STRING_RTSP_STREAM_URI];
diff --git a/lib/smtp.c b/lib/smtp.c
index 3eb534cd3..dada087a9 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -1256,8 +1256,10 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
/* Run the state-machine
- this should be using the smtp_multi_statemach function but we have no
- support for non-blocking DONE operations!
+ TODO: when the multi interface is used, this _really_ should be using
+ the smtp_multi_statemach function but we have no general support for
+ non-blocking DONE operations, not in the multi state machine and with
+ Curl_done() invokes on several places in the code!
*/
result = smtp_block_statemach(conn);
}
diff --git a/lib/splay.c b/lib/splay.c
index aec353b2d..b87b6cfe2 100644
--- a/lib/splay.c
+++ b/lib/splay.c
@@ -211,7 +211,7 @@ struct Curl_tree *Curl_splaygetbest(struct timeval i,
/* Deletes the very node we point out from the tree if it's there. Stores a
* pointer to the new resulting tree in 'newroot'.
*
- * Returns zero on success and non-zero on errors!
+ * Returns zero on success and non-zero on errors! TODO: document error codes.
* When returning error, it does not touch the 'newroot' pointer.
*
* NOTE: when the last node of the tree is removed, there's no tree left so
diff --git a/lib/ssh.c b/lib/ssh.c
index 2b01e94f5..f9bbdf104 100644
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -296,6 +296,10 @@ static CURLcode libssh2_session_error_to_CURLE(int err)
return CURLE_AGAIN;
}
+ /* TODO: map some more of the libssh2 errors to the more appropriate CURLcode
+ error code, and possibly add a few new SSH-related one. We must however
+ not return or even depend on libssh2 errors in the public libcurl API */
+
return CURLE_SSH;
}
@@ -2820,8 +2824,10 @@ static CURLcode ssh_connect(struct connectdata *conn, bool *done)
if(data->set.str[STRING_SSH_KNOWNHOSTS]) {
int rc;
ssh->kh = libssh2_knownhost_init(ssh->ssh_session);
- if(!ssh->kh)
+ if(!ssh->kh) {
+ /* eeek. TODO: free the ssh_session! */
return CURLE_FAILED_INIT;
+ }
/* read all known hosts from there */
rc = libssh2_knownhost_readfile(ssh->kh,
@@ -2958,8 +2964,10 @@ static CURLcode ssh_done(struct connectdata *conn, CURLcode status)
if(!status) {
/* run the state-machine
- This should be using the ssh_multi_statemach function but we have no
- support for non-blocking DONE operations!
+ TODO: when the multi interface is used, this _really_ should be using
+ the ssh_multi_statemach function but we have no general support for
+ non-blocking DONE operations, not in the multi state machine and with
+ Curl_done() invokes on several places in the code!
*/
result = ssh_block_statemach(conn, FALSE);
}
diff --git a/lib/telnet.c b/lib/telnet.c
index 3975209bd..2086aa396 100644
--- a/lib/telnet.c
+++ b/lib/telnet.c
@@ -1220,6 +1220,7 @@ CURLcode telrcv(struct connectdata *conn,
}
/* Escape and send a telnet data block */
+/* TODO: write large chunks of data instead of one byte at a time */
static CURLcode send_telnet_data(struct connectdata *conn,
char *buffer, ssize_t nread)
{
diff --git a/lib/url.c b/lib/url.c
index 1be4c2805..feb4517fc 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -6272,6 +6272,8 @@ CURLcode Curl_do(struct connectdata **connp, bool *done)
* second stage DO state which (wrongly) was introduced to support FTP's
* second connection.
*
+ * TODO: A future libcurl should be able to work away this state.
+ *
* 'complete' can return 0 for incomplete, 1 for done and -1 for go back to
* DOING state there's more work to do!
*/
diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
index 093cd4e98..1c1cc2f7b 100644
--- a/lib/vtls/gtls.c
+++ b/lib/vtls/gtls.c
@@ -1541,6 +1541,12 @@ static int Curl_gtls_seed(struct SessionHandle *data)
if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] ||
data->set.str[STRING_SSL_EGDSOCKET]) {
+
+ /* TODO: to a good job seeding the RNG
+ This may involve the gcry_control function and these options:
+ GCRYCTL_SET_RANDOM_SEED_FILE
+ GCRYCTL_SET_RNDEGD_SOCKET
+ */
ssl_seeded = TRUE;
}
return 0;
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index 57d945ab9..b2520e83d 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -2385,6 +2385,11 @@ static CURLcode get_cert_chain(struct connectdata *conn,
print_pubkey_BN(dh, priv_key, i);
print_pubkey_BN(dh, pub_key, i);
break;
+#if 0
+ case EVP_PKEY_EC: /* symbol not present in OpenSSL 0.9.6 */
+ /* left TODO */
+ break;
+#endif
}
EVP_PKEY_free(pubkey);
}
diff --git a/lib/x509asn1.c b/lib/x509asn1.c
index 0cf8ee55b..a3dfd646b 100644
--- a/lib/x509asn1.c
+++ b/lib/x509asn1.c
@@ -857,6 +857,11 @@ static void do_pubkey(struct SessionHandle * data, int certnum,
do_pubkey_field(data, certnum, "dh(g)", &elem);
do_pubkey_field(data, certnum, "dh(pub_key)", &pk);
}
+#if 0 /* Patent-encumbered. */
+ else if(curl_strequal(algo, "ecPublicKey")) {
+ /* Left TODO. */
+ }
+#endif
}
CURLcode Curl_extract_certinfo(struct connectdata * conn,
diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c
index e6ec032ab..9e3c5fb4e 100644
--- a/src/tool_cb_prg.c
+++ b/src/tool_cb_prg.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -117,8 +117,11 @@ void progressbarinit(struct ProgressData *bar,
if(config->use_resume)
bar->initial_size = config->resume_from;
+/* TODO: get terminal width through ansi escapes or something similar.
+ try to update width when xterm is resized... - 19990617 larsa */
#ifndef __EMX__
- /* OS/2 users most likely won't have this env var set, and besides that
+ /* 20000318 mgs
+ * OS/2 users most likely won't have this env var set, and besides that
* we're using our own way to determine screen width */
colp = curlx_getenv("COLUMNS");
if(colp) {
@@ -133,7 +136,8 @@ void progressbarinit(struct ProgressData *bar,
else
bar->width = 79;
#else
- /* We use this emx library call to get the screen width, and subtract
+ /* 20000318 mgs
+ * We use this emx library call to get the screen width, and subtract
* one from what we got in order to avoid a problem with the cursor
* advancing to the next line if we print a string that is as long as
* the screen is wide. */
diff --git a/src/tool_operate.c b/src/tool_operate.c
index b84b54c39..66ab0fabb 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -116,6 +116,7 @@ CURLcode curl_easy_perform_ev(CURL *easy);
static bool is_fatal_error(CURLcode code)
{
switch(code) {
+ /* TODO: Should CURLE_SSL_CACERT be included as critical error ? */
case CURLE_FAILED_INIT:
case CURLE_OUT_OF_MEMORY:
case CURLE_UNKNOWN_OPTION:
@@ -855,6 +856,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
#if !defined(CURL_DISABLE_PROXY)
{
+ /* TODO: Make this a run-time check instead of compile-time one. */
+
my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
@@ -1460,6 +1463,10 @@ static CURLcode operate_do(struct GlobalConfig *global,
* file (or terminal). If we write to a file, we must rewind
* or close/re-open the file so that the next attempt starts
* over from the beginning.
+ *
+ * TODO: similar action for the upload case. We might need
+ * to start over reading from a previous point if we have
+ * uploaded something when this was returned.
*/
break;
}
@@ -1534,6 +1541,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
download was not successful. */
long response;
if(CURLE_OK == result) {
+ /* TODO We want to try next resource when download was
+ not successful. How to know that? */
char *effective_url = NULL;
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
if(effective_url &&
@@ -1715,6 +1724,9 @@ static CURLcode operate_do(struct GlobalConfig *global,
break;
mlres = mlres->next;
if(mlres == NULL)
+ /* TODO If metalink_next_res is 1 and mlres is NULL,
+ * set res to error code
+ */
break;
}
else