diff options
author | Daniel Stenberg <daniel@haxx.se> | 2021-01-08 17:58:15 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-01-17 23:56:09 +0100 |
commit | 215db086e09665ee7af9b646ad6c4d6e281001ac (patch) | |
tree | 50c74f8456df87e86de6d72e90190a3563083a1a /lib/gopher.c | |
parent | 0d26ab9ed3ac29da2a383d313e93df3e9f5295a2 (diff) | |
download | curl-215db086e09665ee7af9b646ad6c4d6e281001ac.tar.gz |
lib: pass in 'struct Curl_easy *' to most functions
... in most cases instead of 'struct connectdata *' but in some cases in
addition to.
- We mostly operate on transfers and not connections.
- We need the transfer handle to log, store data and more. Everything in
libcurl is driven by a transfer (the CURL * in the public API).
- This work clarifies and separates the transfers from the connections
better.
- We should avoid "conn->data". Since individual connections can be used
by many transfers when multiplexing, making sure that conn->data
points to the current and correct transfer at all times is difficult
and has been notoriously error-prone over the years. The goal is to
ultimately remove the conn->data pointer for this reason.
Closes #6425
Diffstat (limited to 'lib/gopher.c')
-rw-r--r-- | lib/gopher.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/gopher.c b/lib/gopher.c index 0f6825ef2..085426815 100644 --- a/lib/gopher.c +++ b/lib/gopher.c @@ -46,10 +46,10 @@ * Forward declarations. */ -static CURLcode gopher_do(struct connectdata *conn, bool *done); +static CURLcode gopher_do(struct Curl_easy *data, bool *done); #ifdef USE_SSL -static CURLcode gopher_connect(struct connectdata *conn, bool *done); -static CURLcode gopher_connecting(struct connectdata *conn, bool *done); +static CURLcode gopher_connect(struct Curl_easy *data, bool *done); +static CURLcode gopher_connecting(struct Curl_easy *data, bool *done); #endif /* @@ -103,15 +103,16 @@ const struct Curl_handler Curl_handler_gophers = { PROTOPT_SSL /* flags */ }; -static CURLcode gopher_connect(struct connectdata *conn, bool *done) +static CURLcode gopher_connect(struct Curl_easy *data, bool *done) { - (void)conn; + (void)data; (void)done; return CURLE_OK; } -static CURLcode gopher_connecting(struct connectdata *conn, bool *done) +static CURLcode gopher_connecting(struct Curl_easy *data, bool *done) { + struct connectdata *conn = data->conn; CURLcode result = Curl_ssl_connect(conn, FIRSTSOCKET); if(result) connclose(conn, "Failed TLS connection"); @@ -120,10 +121,10 @@ static CURLcode gopher_connecting(struct connectdata *conn, bool *done) } #endif -static CURLcode gopher_do(struct connectdata *conn, bool *done) +static CURLcode gopher_do(struct Curl_easy *data, bool *done) { CURLcode result = CURLE_OK; - struct Curl_easy *data = conn->data; + struct connectdata *conn = data->conn; curl_socket_t sockfd = conn->sock[FIRSTSOCKET]; char *gopherpath; char *path = data->state.up.path; @@ -177,9 +178,9 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done) if(strlen(sel) < 1) break; - result = Curl_write(conn, sockfd, sel, k, &amount); + result = Curl_write(data, sockfd, sel, k, &amount); if(!result) { /* Which may not have written it all! */ - result = Curl_client_write(conn, CLIENTWRITE_HEADER, sel, amount); + result = Curl_client_write(data, CLIENTWRITE_HEADER, sel, amount); if(result) break; @@ -219,12 +220,12 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done) free(sel_org); if(!result) - result = Curl_write(conn, sockfd, "\r\n", 2, &amount); + result = Curl_write(data, sockfd, "\r\n", 2, &amount); if(result) { failf(data, "Failed sending Gopher request"); return result; } - result = Curl_client_write(conn, CLIENTWRITE_HEADER, (char *)"\r\n", 2); + result = Curl_client_write(data, CLIENTWRITE_HEADER, (char *)"\r\n", 2); if(result) return result; |