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/curl_rtmp.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/curl_rtmp.c')
-rw-r--r-- | lib/curl_rtmp.c | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/lib/curl_rtmp.c b/lib/curl_rtmp.c index ba471a2a1..9ac9611ea 100644 --- a/lib/curl_rtmp.c +++ b/lib/curl_rtmp.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com> * * This software is licensed as described in the file COPYING, which @@ -48,11 +48,13 @@ #define DEF_BUFTIME (2*60*60*1000) /* 2 hours */ -static CURLcode rtmp_setup_connection(struct connectdata *conn); -static CURLcode rtmp_do(struct connectdata *conn, bool *done); -static CURLcode rtmp_done(struct connectdata *conn, CURLcode, bool premature); -static CURLcode rtmp_connect(struct connectdata *conn, bool *done); -static CURLcode rtmp_disconnect(struct connectdata *conn, bool dead); +static CURLcode rtmp_setup_connection(struct Curl_easy *data, + struct connectdata *conn); +static CURLcode rtmp_do(struct Curl_easy *data, bool *done); +static CURLcode rtmp_done(struct Curl_easy *data, CURLcode, bool premature); +static CURLcode rtmp_connect(struct Curl_easy *data, bool *done); +static CURLcode rtmp_disconnect(struct Curl_easy *data, + struct connectdata *conn, bool dead); static Curl_recv rtmp_recv; static Curl_send rtmp_send; @@ -193,7 +195,8 @@ const struct Curl_handler Curl_handler_rtmpts = { PROTOPT_NONE /* flags*/ }; -static CURLcode rtmp_setup_connection(struct connectdata *conn) +static CURLcode rtmp_setup_connection(struct Curl_easy *data, + struct connectdata *conn) { RTMP *r = RTMP_Alloc(); if(!r) @@ -201,7 +204,7 @@ static CURLcode rtmp_setup_connection(struct connectdata *conn) RTMP_Init(r); RTMP_SetBufferMS(r, DEF_BUFTIME); - if(!RTMP_SetupURL(r, conn->data->change.url)) { + if(!RTMP_SetupURL(r, data->change.url)) { RTMP_Free(r); return CURLE_URL_MALFORMAT; } @@ -209,8 +212,9 @@ static CURLcode rtmp_setup_connection(struct connectdata *conn) return CURLE_OK; } -static CURLcode rtmp_connect(struct connectdata *conn, bool *done) +static CURLcode rtmp_connect(struct Curl_easy *data, bool *done) { + struct connectdata *conn = data->conn; RTMP *r = conn->proto.rtmp; SET_RCVTIMEO(tv, 10); @@ -243,9 +247,9 @@ static CURLcode rtmp_connect(struct connectdata *conn, bool *done) return CURLE_OK; } -static CURLcode rtmp_do(struct connectdata *conn, bool *done) +static CURLcode rtmp_do(struct Curl_easy *data, bool *done) { - struct Curl_easy *data = conn->data; + struct connectdata *conn = data->conn; RTMP *r = conn->proto.rtmp; if(!RTMP_ConnectStream(r, 0)) @@ -261,20 +265,22 @@ static CURLcode rtmp_do(struct connectdata *conn, bool *done) return CURLE_OK; } -static CURLcode rtmp_done(struct connectdata *conn, CURLcode status, +static CURLcode rtmp_done(struct Curl_easy *data, CURLcode status, bool premature) { - (void)conn; /* unused */ + (void)data; /* unused */ (void)status; /* unused */ (void)premature; /* unused */ return CURLE_OK; } -static CURLcode rtmp_disconnect(struct connectdata *conn, +static CURLcode rtmp_disconnect(struct Curl_easy *data, + struct connectdata *conn, bool dead_connection) { RTMP *r = conn->proto.rtmp; + (void)data; (void)dead_connection; if(r) { conn->proto.rtmp = NULL; @@ -284,9 +290,10 @@ static CURLcode rtmp_disconnect(struct connectdata *conn, return CURLE_OK; } -static ssize_t rtmp_recv(struct connectdata *conn, int sockindex, char *buf, +static ssize_t rtmp_recv(struct Curl_easy *data, int sockindex, char *buf, size_t len, CURLcode *err) { + struct connectdata *conn = data->conn; RTMP *r = conn->proto.rtmp; ssize_t nread; @@ -295,8 +302,8 @@ static ssize_t rtmp_recv(struct connectdata *conn, int sockindex, char *buf, nread = RTMP_Read(r, buf, curlx_uztosi(len)); if(nread < 0) { if(r->m_read.status == RTMP_READ_COMPLETE || - r->m_read.status == RTMP_READ_EOF) { - conn->data->req.size = conn->data->req.bytecount; + r->m_read.status == RTMP_READ_EOF) { + data->req.size = data->req.bytecount; nread = 0; } else @@ -305,9 +312,10 @@ static ssize_t rtmp_recv(struct connectdata *conn, int sockindex, char *buf, return nread; } -static ssize_t rtmp_send(struct connectdata *conn, int sockindex, +static ssize_t rtmp_send(struct Curl_easy *data, int sockindex, const void *buf, size_t len, CURLcode *err) { + struct connectdata *conn = data->conn; RTMP *r = conn->proto.rtmp; ssize_t num; |