CURL *curl_easy_duphandle(CURL *d)
{
struct Curl_easy *data = d;
- struct Curl_easy *outcurl = calloc(1, sizeof(struct Curl_easy));
+ struct Curl_easy *outcurl = NULL;
+
+ if(!GOOD_EASY_HANDLE(data))
+ goto fail;
+ outcurl = calloc(1, sizeof(struct Curl_easy));
if(!outcurl)
goto fail;
void curl_easy_reset(CURL *d)
{
struct Curl_easy *data = d;
+ if(!GOOD_EASY_HANDLE(data))
+ return;
+
Curl_req_hard_reset(&data->req, data);
Curl_hash_clean(&data->meta_hash);
struct connectdata *c;
struct Curl_easy *data = d;
+ if(!GOOD_EASY_HANDLE(data))
+ return CURLE_BAD_FUNCTION_ARGUMENT;
if(Curl_is_in_callback(data))
return CURLE_RECURSIVE_API_CALL;
size_t written = 0;
CURLcode result;
struct Curl_easy *data = d;
+ if(!GOOD_EASY_HANDLE(data))
+ return CURLE_BAD_FUNCTION_ARGUMENT;
if(Curl_is_in_callback(data))
return CURLE_RECURSIVE_API_CALL;
}
}
-static CURLcode ws_send_raw_blocking(CURL *data, struct websocket *ws,
+static CURLcode ws_send_raw_blocking(struct Curl_easy *data,
+ struct websocket *ws,
const char *buffer, size_t buflen);
typedef ssize_t ws_write_payload(const unsigned char *buf, size_t buflen,
*nread = 0;
*metap = NULL;
+ if(!GOOD_EASY_HANDLE(data))
+ return CURLE_BAD_FUNCTION_ARGUMENT;
if(!conn) {
/* Unhappy hack with lifetimes of transfers and connection */
return CURLE_OK;
}
-static CURLcode ws_send_raw_blocking(CURL *d, struct websocket *ws,
+static CURLcode ws_send_raw_blocking(struct Curl_easy *data,
+ struct websocket *ws,
const char *buffer, size_t buflen)
{
CURLcode result = CURLE_OK;
size_t nwritten;
- struct Curl_easy *data = d;
(void)ws;
while(buflen) {
CURLcode result = CURLE_OK;
struct Curl_easy *data = d;
+ if(!GOOD_EASY_HANDLE(data))
+ return CURLE_BAD_FUNCTION_ARGUMENT;
CURL_TRC_WS(data, "curl_ws_send(len=%zu, fragsize=%" FMT_OFF_T
", flags=%x), raw=%d",
buflen, fragsize, flags, data->set.ws_raw_mode);