Revert "cleanup: general removal of TODO (and similar) comments"

This reverts commit 64e959ffe3.

Feedback-by: Dan Fandrich
URL: http://curl.haxx.se/mail/lib-2015-11/0062.html
This commit is contained in:
Daniel Stenberg
2015-11-24 09:32:42 +01:00
parent fc5d783589
commit c341311a0e
19 changed files with 97 additions and 26 deletions

View File

@@ -416,6 +416,7 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
if(result) if(result)
/* close the connection, since we can't return failure here without /* close the connection, since we can't return failure here without
cleaning up this connection properly. cleaning up this connection properly.
TODO: remove this action from here, it is not a name resolver decision.
*/ */
connclose(conn, "c-ares resolve failed"); connclose(conn, "c-ares resolve failed");

View File

@@ -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 * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * 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 * File lib/strdup.c is an exception, given that it provides a strdup
* clone implementation while using malloc. Extra care needed inside * 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 * The need for curl_memory.h inclusion is due to libcurl's feature
* of allowing library user to provide memory replacement functions, * of allowing library user to provide memory replacement functions,

View File

@@ -646,7 +646,7 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
return CURLE_RECV_ERROR; return CURLE_RECV_ERROR;
if(mcode) 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 /* we don't really care about the "msgs_in_queue" value returned in the
second argument */ second argument */

View File

@@ -3659,7 +3659,7 @@ static CURLcode ftp_do_more(struct connectdata *conn, int *completep)
if(!conn->bits.tcpconnect[SECONDARYSOCKET]) { if(!conn->bits.tcpconnect[SECONDARYSOCKET]) {
if(conn->tunnel_state[SECONDARYSOCKET] == TUNNEL_CONNECT) { if(conn->tunnel_state[SECONDARYSOCKET] == TUNNEL_CONNECT) {
/* As we're in TUNNEL_CONNECT state now, we know the proxy name and port /* 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); result = Curl_proxyCONNECT(conn, SECONDARYSOCKET, NULL, 0, FALSE);
return result; return result;

View File

@@ -2047,7 +2047,10 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
ptr = strstr(url, conn->host.dispname); ptr = strstr(url, conn->host.dispname);
if(ptr) { if(ptr) {
/* This is where the display name starts in the URL, now replace this /* 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 currlen = strlen(conn->host.dispname);
size_t newlen = strlen(conn->host.name); size_t newlen = strlen(conn->host.name);
size_t urllen = strlen(url); 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 */ conn->httpversion = 11; /* For us, RTSP acts like HTTP 1.1 */
} }
else { else {
/* TODO: do we care about the other cases here? */
nc = 0; nc = 0;
} }
} }
@@ -3559,6 +3563,7 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,
} }
if(k->auto_decoding) if(k->auto_decoding)
/* TODO: we only support the first mentioned compression for now */
break; break;
if(checkprefix("identity", start)) { if(checkprefix("identity", start)) {

View File

@@ -75,6 +75,8 @@ static int http2_perform_getsock(const struct connectdata *conn,
int bitmap = GETSOCK_BLANK; int bitmap = GETSOCK_BLANK;
(void)numsocks; (void)numsocks;
/* TODO We should check underlying socket state if it is SSL socket
because of renegotiation. */
sock[0] = conn->sock[FIRSTSOCKET]; sock[0] = conn->sock[FIRSTSOCKET];
if(nghttp2_session_want_read(c->h2)) 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 we receive data for another handle, wake that up */
if(conn->data != data_s) 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 " DEBUGF(infof(data_s, "%zu data received for stream %u "
"(%zu left in buffer %p, total %zu)\n", "(%zu left in buffer %p, total %zu)\n",

View File

@@ -842,7 +842,7 @@ static CURLcode imap_state_servergreet_resp(struct connectdata *conn,
if(imapcode != 'O') { if(imapcode != 'O') {
failf(data, "Got unexpected imap-server response"); failf(data, "Got unexpected imap-server response");
result = CURLE_FTP_WEIRD_SERVER_REPLY; result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: fix this code */
} }
else else
result = imap_perform_capability(conn); result = imap_perform_capability(conn);
@@ -1033,7 +1033,7 @@ static CURLcode imap_state_list_resp(struct connectdata *conn, int imapcode,
line[len] = '\0'; line[len] = '\0';
} }
else if(imapcode != 'O') else if(imapcode != 'O')
result = CURLE_QUOTE_ERROR; result = CURLE_QUOTE_ERROR; /* TODO: Fix error code */
else else
/* End of DO phase */ /* End of DO phase */
state(conn, IMAP_STOP); state(conn, IMAP_STOP);
@@ -1105,7 +1105,7 @@ static CURLcode imap_state_fetch_resp(struct connectdata *conn, int imapcode,
if(imapcode != '*') { if(imapcode != '*') {
Curl_pgrsSetDownloadSize(data, -1); Curl_pgrsSetDownloadSize(data, -1);
state(conn, IMAP_STOP); 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 /* 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 { else {
/* We don't know how to parse this line */ /* We don't know how to parse this line */
failf(pp->conn->data, "Failed to parse FETCH response."); 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 */ /* 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 */ (void)instate; /* No use for this yet */
if(imapcode != 'O') if(imapcode != 'O')
result = CURLE_FTP_WEIRD_SERVER_REPLY; result = CURLE_FTP_WEIRD_SERVER_REPLY; /* TODO: Fix error code */
else else
/* End of DONE phase */ /* End of DONE phase */
state(conn, IMAP_STOP); state(conn, IMAP_STOP);
@@ -1262,7 +1262,7 @@ static CURLcode imap_state_search_resp(struct connectdata *conn, int imapcode,
line[len] = '\0'; line[len] = '\0';
} }
else if(imapcode != 'O') else if(imapcode != 'O')
result = CURLE_QUOTE_ERROR; result = CURLE_QUOTE_ERROR; /* TODO: Fix error code */
else else
/* End of DO phase */ /* End of DO phase */
state(conn, IMAP_STOP); state(conn, IMAP_STOP);
@@ -1506,10 +1506,10 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
/* Run the state-machine /* Run the state-machine
This _really_ should be using the imap_multi_statemach function but we TODO: when the multi interface is used, this _really_ should be using
have no general support for non-blocking DONE operations. Neither in the imap_multi_statemach function but we have no general support for
the multi state machine and there are Curl_done() invokes on several non-blocking DONE operations, not in the multi state machine and with
places in the code! Curl_done() invokes on several places in the code!
*/ */
if(!result) if(!result)
result = imap_block_statemach(conn); result = imap_block_statemach(conn);

View File

@@ -176,7 +176,9 @@ static CURLcode ldap_setup_connection(struct connectdata *conn)
li->proto = proto; li->proto = proto;
conn->proto.generic = li; conn->proto.generic = li;
connkeep(conn, "OpenLDAP default"); connkeep(conn, "OpenLDAP default");
/* TODO:
* - provide option to choose SASL Binds instead of Simple
*/
return CURLE_OK; return CURLE_OK;
} }
@@ -479,6 +481,8 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
lr->nument++; lr->nument++;
rc = ldap_get_dn_ber(li->ld, ent, &ber, &bv); rc = ldap_get_dn_ber(li->ld, ent, &ber, &bv);
if(rc < 0) { if(rc < 0) {
/* TODO: verify that this is really how this return code should be
handled */
*err = CURLE_RECV_ERROR; *err = CURLE_RECV_ERROR;
return -1; return -1;
} }

View File

@@ -42,6 +42,16 @@
#include "curl_memory.h" #include "curl_memory.h"
#include "memdebug.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_CHANNEL(p) ((int)((unsigned char)((p)[1])))
#define RTP_PKT_LENGTH(p) ((((int)((unsigned char)((p)[2]))) << 8) | \ #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 && else if(data->set.rtspreq == RTSPREQ_RECEIVE &&
(conn->proto.rtspc.rtp_channel == -1)) { (conn->proto.rtspc.rtp_channel == -1)) {
infof(data, "Got an RTP Receive with a CSeq of %ld\n", CSeq_recv); 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; return CURLE_BAD_FUNCTION_ARGUMENT;
} }
/* TODO: proxy? */
/* Stream URI. Default to server '*' if not specified */ /* Stream URI. Default to server '*' if not specified */
if(data->set.str[STRING_RTSP_STREAM_URI]) { if(data->set.str[STRING_RTSP_STREAM_URI]) {
p_stream_uri = data->set.str[STRING_RTSP_STREAM_URI]; p_stream_uri = data->set.str[STRING_RTSP_STREAM_URI];

View File

@@ -1256,8 +1256,10 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
/* Run the state-machine /* Run the state-machine
this should be using the smtp_multi_statemach function but we have no TODO: when the multi interface is used, this _really_ should be using
support for non-blocking DONE operations! 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); result = smtp_block_statemach(conn);
} }

View File

@@ -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 /* Deletes the very node we point out from the tree if it's there. Stores a
* pointer to the new resulting tree in 'newroot'. * 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. * 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 * NOTE: when the last node of the tree is removed, there's no tree left so

View File

@@ -296,6 +296,10 @@ static CURLcode libssh2_session_error_to_CURLE(int err)
return CURLE_AGAIN; 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; return CURLE_SSH;
} }
@@ -2820,8 +2824,10 @@ static CURLcode ssh_connect(struct connectdata *conn, bool *done)
if(data->set.str[STRING_SSH_KNOWNHOSTS]) { if(data->set.str[STRING_SSH_KNOWNHOSTS]) {
int rc; int rc;
ssh->kh = libssh2_knownhost_init(ssh->ssh_session); ssh->kh = libssh2_knownhost_init(ssh->ssh_session);
if(!ssh->kh) if(!ssh->kh) {
/* eeek. TODO: free the ssh_session! */
return CURLE_FAILED_INIT; return CURLE_FAILED_INIT;
}
/* read all known hosts from there */ /* read all known hosts from there */
rc = libssh2_knownhost_readfile(ssh->kh, rc = libssh2_knownhost_readfile(ssh->kh,
@@ -2958,8 +2964,10 @@ static CURLcode ssh_done(struct connectdata *conn, CURLcode status)
if(!status) { if(!status) {
/* run the state-machine /* run the state-machine
This should be using the ssh_multi_statemach function but we have no TODO: when the multi interface is used, this _really_ should be using
support for non-blocking DONE operations! 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); result = ssh_block_statemach(conn, FALSE);
} }

View File

@@ -1220,6 +1220,7 @@ CURLcode telrcv(struct connectdata *conn,
} }
/* Escape and send a telnet data block */ /* 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, static CURLcode send_telnet_data(struct connectdata *conn,
char *buffer, ssize_t nread) char *buffer, ssize_t nread)
{ {

View File

@@ -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 stage DO state which (wrongly) was introduced to support FTP's
* second connection. * 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 * 'complete' can return 0 for incomplete, 1 for done and -1 for go back to
* DOING state there's more work to do! * DOING state there's more work to do!
*/ */

View File

@@ -1541,6 +1541,12 @@ static int Curl_gtls_seed(struct SessionHandle *data)
if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] || if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] ||
data->set.str[STRING_SSL_EGDSOCKET]) { 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; ssl_seeded = TRUE;
} }
return 0; return 0;

View File

@@ -2385,6 +2385,11 @@ static CURLcode get_cert_chain(struct connectdata *conn,
print_pubkey_BN(dh, priv_key, i); print_pubkey_BN(dh, priv_key, i);
print_pubkey_BN(dh, pub_key, i); print_pubkey_BN(dh, pub_key, i);
break; break;
#if 0
case EVP_PKEY_EC: /* symbol not present in OpenSSL 0.9.6 */
/* left TODO */
break;
#endif
} }
EVP_PKEY_free(pubkey); EVP_PKEY_free(pubkey);
} }

View File

@@ -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(g)", &elem);
do_pubkey_field(data, certnum, "dh(pub_key)", &pk); 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, CURLcode Curl_extract_certinfo(struct connectdata * conn,

View File

@@ -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 * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@@ -117,8 +117,11 @@ void progressbarinit(struct ProgressData *bar,
if(config->use_resume) if(config->use_resume)
bar->initial_size = config->resume_from; 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__ #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 */ * we're using our own way to determine screen width */
colp = curlx_getenv("COLUMNS"); colp = curlx_getenv("COLUMNS");
if(colp) { if(colp) {
@@ -133,7 +136,8 @@ void progressbarinit(struct ProgressData *bar,
else else
bar->width = 79; bar->width = 79;
#else #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 * 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 * advancing to the next line if we print a string that is as long as
* the screen is wide. */ * the screen is wide. */

View File

@@ -116,6 +116,7 @@ CURLcode curl_easy_perform_ev(CURL *easy);
static bool is_fatal_error(CURLcode code) static bool is_fatal_error(CURLcode code)
{ {
switch(code) { switch(code) {
/* TODO: Should CURLE_SSL_CACERT be included as critical error ? */
case CURLE_FAILED_INIT: case CURLE_FAILED_INIT:
case CURLE_OUT_OF_MEMORY: case CURLE_OUT_OF_MEMORY:
case CURLE_UNKNOWN_OPTION: case CURLE_UNKNOWN_OPTION:
@@ -855,6 +856,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
#if !defined(CURL_DISABLE_PROXY) #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_PROXY, config->proxy);
my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd); 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 * file (or terminal). If we write to a file, we must rewind
* or close/re-open the file so that the next attempt starts * or close/re-open the file so that the next attempt starts
* over from the beginning. * 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; break;
} }
@@ -1534,6 +1541,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
download was not successful. */ download was not successful. */
long response; long response;
if(CURLE_OK == result) { if(CURLE_OK == result) {
/* TODO We want to try next resource when download was
not successful. How to know that? */
char *effective_url = NULL; char *effective_url = NULL;
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url); curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
if(effective_url && if(effective_url &&
@@ -1715,6 +1724,9 @@ static CURLcode operate_do(struct GlobalConfig *global,
break; break;
mlres = mlres->next; mlres = mlres->next;
if(mlres == NULL) if(mlres == NULL)
/* TODO If metalink_next_res is 1 and mlres is NULL,
* set res to error code
*/
break; break;
} }
else else