Lines Matching refs:data
63 static CURLcode do_init_writer_stack(struct Curl_easy *data);
70 CURLcode Curl_client_write(struct Curl_easy *data, in Curl_client_write() argument
84 if(!data->req.writer_stack) { in Curl_client_write()
85 result = do_init_writer_stack(data); in Curl_client_write()
88 DEBUGASSERT(data->req.writer_stack); in Curl_client_write()
91 result = Curl_cwriter_write(data, data->req.writer_stack, type, buf, blen); in Curl_client_write()
92 CURL_TRC_WRITE(data, "client_write(type=%x, len=%zu) -> %d", in Curl_client_write()
97 static void cl_reset_writer(struct Curl_easy *data) in cl_reset_writer() argument
99 struct Curl_cwriter *writer = data->req.writer_stack; in cl_reset_writer()
101 data->req.writer_stack = writer->next; in cl_reset_writer()
102 writer->cwt->do_close(data, writer); in cl_reset_writer()
104 writer = data->req.writer_stack; in cl_reset_writer()
108 static void cl_reset_reader(struct Curl_easy *data) in cl_reset_reader() argument
110 struct Curl_creader *reader = data->req.reader_stack; in cl_reset_reader()
112 data->req.reader_stack = reader->next; in cl_reset_reader()
113 reader->crt->do_close(data, reader); in cl_reset_reader()
115 reader = data->req.reader_stack; in cl_reset_reader()
119 void Curl_client_cleanup(struct Curl_easy *data) in Curl_client_cleanup() argument
121 cl_reset_reader(data); in Curl_client_cleanup()
122 cl_reset_writer(data); in Curl_client_cleanup()
124 data->req.bytecount = 0; in Curl_client_cleanup()
125 data->req.headerline = 0; in Curl_client_cleanup()
128 void Curl_client_reset(struct Curl_easy *data) in Curl_client_reset() argument
130 if(data->req.rewind_read) { in Curl_client_reset()
132 CURL_TRC_READ(data, "client_reset, will rewind reader"); in Curl_client_reset()
135 CURL_TRC_READ(data, "client_reset, clear readers"); in Curl_client_reset()
136 cl_reset_reader(data); in Curl_client_reset()
138 cl_reset_writer(data); in Curl_client_reset()
140 data->req.bytecount = 0; in Curl_client_reset()
141 data->req.headerline = 0; in Curl_client_reset()
144 CURLcode Curl_client_start(struct Curl_easy *data) in Curl_client_start() argument
146 if(data->req.rewind_read) { in Curl_client_start()
147 struct Curl_creader *r = data->req.reader_stack; in Curl_client_start()
150 CURL_TRC_READ(data, "client start, rewind readers"); in Curl_client_start()
152 result = r->crt->rewind(data, r); in Curl_client_start()
154 failf(data, "rewind of client reader '%s' failed: %d", in Curl_client_start()
160 data->req.rewind_read = FALSE; in Curl_client_start()
161 cl_reset_reader(data); in Curl_client_start()
166 bool Curl_creader_will_rewind(struct Curl_easy *data) in Curl_creader_will_rewind() argument
168 return data->req.rewind_read; in Curl_creader_will_rewind()
171 void Curl_creader_set_rewind(struct Curl_easy *data, bool enable) in Curl_creader_set_rewind() argument
173 data->req.rewind_read = !!enable; in Curl_creader_set_rewind()
177 CURLcode Curl_cwriter_write(struct Curl_easy *data, in Curl_cwriter_write() argument
183 return writer->cwt->do_write(data, writer, type, buf, nbytes); in Curl_cwriter_write()
186 CURLcode Curl_cwriter_def_init(struct Curl_easy *data, in Curl_cwriter_def_init() argument
189 (void)data; in Curl_cwriter_def_init()
194 CURLcode Curl_cwriter_def_write(struct Curl_easy *data, in Curl_cwriter_def_write() argument
198 return Curl_cwriter_write(data, writer->next, type, buf, nbytes); in Curl_cwriter_def_write()
201 void Curl_cwriter_def_close(struct Curl_easy *data, in Curl_cwriter_def_close() argument
204 (void) data; in Curl_cwriter_def_close()
208 static size_t get_max_body_write_len(struct Curl_easy *data, curl_off_t limit) in get_max_body_write_len() argument
213 remain_diff = limit - data->req.bytecount; in get_max_body_write_len()
236 static CURLcode cw_download_write(struct Curl_easy *data, in cw_download_write() argument
246 Curl_pgrsTime(data, TIMER_STARTTRANSFER); in cw_download_write()
251 if(is_connect && data->set.suppress_connect_headers) in cw_download_write()
253 result = Curl_cwriter_write(data, writer->next, type, buf, nbytes); in cw_download_write()
254 CURL_TRC_WRITE(data, "download_write header(type=%x, blen=%zu) -> %d", in cw_download_write()
265 if(data->req.no_body && nbytes > 0) { in cw_download_write()
267 streamclose(data->conn, "ignoring body"); in cw_download_write()
268 CURL_TRC_WRITE(data, "download_write body(type=%x, blen=%zu), " in cw_download_write()
270 data->req.download_done = TRUE; in cw_download_write()
271 if(data->info.header_size) in cw_download_write()
282 if(-1 != data->req.maxdownload) { in cw_download_write()
283 size_t wmax = get_max_body_write_len(data, data->req.maxdownload); in cw_download_write()
290 data->req.download_done = TRUE; in cw_download_write()
293 if((type & CLIENTWRITE_EOS) && !data->req.no_body && in cw_download_write()
294 (data->req.maxdownload > data->req.bytecount)) { in cw_download_write()
295 failf(data, "end of response with %" FMT_OFF_T " bytes missing", in cw_download_write()
296 data->req.maxdownload - data->req.bytecount); in cw_download_write()
303 if(data->set.max_filesize && !data->req.ignorebody) { in cw_download_write()
304 size_t wmax = get_max_body_write_len(data, data->set.max_filesize); in cw_download_write()
310 if(!data->req.ignorebody && (nwrite || (type & CLIENTWRITE_EOS))) { in cw_download_write()
311 result = Curl_cwriter_write(data, writer->next, type, buf, nwrite); in cw_download_write()
312 CURL_TRC_WRITE(data, "download_write body(type=%x, blen=%zu) -> %d", in cw_download_write()
318 data->req.bytecount += nwrite; in cw_download_write()
320 data->req.bodywritten = TRUE; in cw_download_write()
322 result = Curl_pgrsSetDownloadCounter(data, data->req.bytecount); in cw_download_write()
327 if(!data->req.ignorebody) { in cw_download_write()
328 infof(data, in cw_download_write()
334 excess_len, data->req.size, data->req.maxdownload, in cw_download_write()
335 data->req.bytecount); in cw_download_write()
336 connclose(data->conn, "excess found in a read"); in cw_download_write()
339 else if((nwrite < nbytes) && !data->req.ignorebody) { in cw_download_write()
340 failf(data, "Exceeded the maximum allowed file size " in cw_download_write()
342 data->set.max_filesize, data->req.bytecount); in cw_download_write()
360 static CURLcode cw_raw_write(struct Curl_easy *data, in cw_raw_write() argument
364 if(type & CLIENTWRITE_BODY && data->set.verbose && !data->req.ignorebody) { in cw_raw_write()
365 Curl_debug(data, CURLINFO_DATA_IN, (char *)buf, nbytes); in cw_raw_write()
367 return Curl_cwriter_write(data, writer->next, type, buf, nbytes); in cw_raw_write()
381 struct Curl_easy *data, in Curl_cwriter_create() argument
398 result = cwt->do_init(data, writer); in Curl_cwriter_create()
407 void Curl_cwriter_free(struct Curl_easy *data, in Curl_cwriter_free() argument
411 writer->cwt->do_close(data, writer); in Curl_cwriter_free()
416 size_t Curl_cwriter_count(struct Curl_easy *data, Curl_cwriter_phase phase) in Curl_cwriter_count() argument
421 for(w = data->req.writer_stack; w; w = w->next) { in Curl_cwriter_count()
428 static CURLcode do_init_writer_stack(struct Curl_easy *data) in do_init_writer_stack() argument
433 DEBUGASSERT(!data->req.writer_stack); in do_init_writer_stack()
434 result = Curl_cwriter_create(&data->req.writer_stack, in do_init_writer_stack()
435 data, &Curl_cwt_out, CURL_CW_CLIENT); in do_init_writer_stack()
439 result = Curl_cwriter_create(&writer, data, &cw_download, CURL_CW_PROTOCOL); in do_init_writer_stack()
442 result = Curl_cwriter_add(data, writer); in do_init_writer_stack()
444 Curl_cwriter_free(data, writer); in do_init_writer_stack()
447 result = Curl_cwriter_create(&writer, data, &cw_raw, CURL_CW_RAW); in do_init_writer_stack()
450 result = Curl_cwriter_add(data, writer); in do_init_writer_stack()
452 Curl_cwriter_free(data, writer); in do_init_writer_stack()
457 CURLcode Curl_cwriter_add(struct Curl_easy *data, in Curl_cwriter_add() argument
461 struct Curl_cwriter **anchor = &data->req.writer_stack; in Curl_cwriter_add()
464 result = do_init_writer_stack(data); in Curl_cwriter_add()
478 struct Curl_cwriter *Curl_cwriter_get_by_name(struct Curl_easy *data, in Curl_cwriter_get_by_name() argument
482 for(writer = data->req.writer_stack; writer; writer = writer->next) { in Curl_cwriter_get_by_name()
489 struct Curl_cwriter *Curl_cwriter_get_by_type(struct Curl_easy *data, in Curl_cwriter_get_by_type() argument
493 for(writer = data->req.writer_stack; writer; writer = writer->next) { in Curl_cwriter_get_by_type()
500 void Curl_cwriter_remove_by_name(struct Curl_easy *data, in Curl_cwriter_remove_by_name() argument
503 struct Curl_cwriter **anchor = &data->req.writer_stack; in Curl_cwriter_remove_by_name()
509 Curl_cwriter_free(data, w); in Curl_cwriter_remove_by_name()
516 bool Curl_cwriter_is_paused(struct Curl_easy *data) in Curl_cwriter_is_paused() argument
518 return Curl_cw_out_is_paused(data); in Curl_cwriter_is_paused()
521 CURLcode Curl_cwriter_unpause(struct Curl_easy *data) in Curl_cwriter_unpause() argument
523 return Curl_cw_out_unpause(data); in Curl_cwriter_unpause()
526 CURLcode Curl_creader_read(struct Curl_easy *data, in Curl_creader_read() argument
534 return reader->crt->do_read(data, reader, buf, blen, nread, eos); in Curl_creader_read()
537 CURLcode Curl_creader_def_init(struct Curl_easy *data, in Curl_creader_def_init() argument
540 (void)data; in Curl_creader_def_init()
545 void Curl_creader_def_close(struct Curl_easy *data, in Curl_creader_def_close() argument
548 (void)data; in Curl_creader_def_close()
552 CURLcode Curl_creader_def_read(struct Curl_easy *data, in Curl_creader_def_read() argument
558 return reader->next->crt->do_read(data, reader->next, buf, blen, in Curl_creader_def_read()
567 bool Curl_creader_def_needs_rewind(struct Curl_easy *data, in Curl_creader_def_needs_rewind() argument
570 (void)data; in Curl_creader_def_needs_rewind()
575 curl_off_t Curl_creader_def_total_length(struct Curl_easy *data, in Curl_creader_def_total_length() argument
579 reader->next->crt->total_length(data, reader->next) : -1; in Curl_creader_def_total_length()
582 CURLcode Curl_creader_def_resume_from(struct Curl_easy *data, in Curl_creader_def_resume_from() argument
586 (void)data; in Curl_creader_def_resume_from()
592 CURLcode Curl_creader_def_rewind(struct Curl_easy *data, in Curl_creader_def_rewind() argument
595 (void)data; in Curl_creader_def_rewind()
600 CURLcode Curl_creader_def_unpause(struct Curl_easy *data, in Curl_creader_def_unpause() argument
603 (void)data; in Curl_creader_def_unpause()
608 bool Curl_creader_def_is_paused(struct Curl_easy *data, in Curl_creader_def_is_paused() argument
611 (void)data; in Curl_creader_def_is_paused()
616 void Curl_creader_def_done(struct Curl_easy *data, in Curl_creader_def_done() argument
619 (void)data; in Curl_creader_def_done()
637 static CURLcode cr_in_init(struct Curl_easy *data, struct Curl_creader *reader) in cr_in_init() argument
640 (void)data; in cr_in_init()
641 ctx->read_cb = data->state.fread_func; in cr_in_init()
642 ctx->cb_user_data = data->state.in; in cr_in_init()
649 static CURLcode cr_in_read(struct Curl_easy *data, in cr_in_read() argument
680 Curl_set_in_callback(data, TRUE); in cr_in_read()
682 Curl_set_in_callback(data, FALSE); in cr_in_read()
689 failf(data, "client read function EOF fail, " in cr_in_read()
700 failf(data, "operation aborted by callback"); in cr_in_read()
708 if(data->conn->handler->flags & PROTOPT_NONETWORK) { in cr_in_read()
712 failf(data, "Read callback asked for PAUSE when not supported"); in cr_in_read()
716 CURL_TRC_READ(data, "cr_in_read, callback returned CURL_READFUNC_PAUSE"); in cr_in_read()
718 data->req.keepon |= KEEP_SEND_PAUSE; /* mark socket send as paused */ in cr_in_read()
726 failf(data, "read function returned funny value"); in cr_in_read()
740 CURL_TRC_READ(data, "cr_in_read(len=%zu, total=%"FMT_OFF_T in cr_in_read()
747 static bool cr_in_needs_rewind(struct Curl_easy *data, in cr_in_needs_rewind() argument
751 (void)data; in cr_in_needs_rewind()
755 static curl_off_t cr_in_total_length(struct Curl_easy *data, in cr_in_total_length() argument
759 (void)data; in cr_in_total_length()
763 static CURLcode cr_in_resume_from(struct Curl_easy *data, in cr_in_resume_from() argument
770 DEBUGASSERT(data->conn); in cr_in_resume_from()
775 if(data->set.seek_func) { in cr_in_resume_from()
776 Curl_set_in_callback(data, TRUE); in cr_in_resume_from()
777 seekerr = data->set.seek_func(data->set.seek_client, offset, SEEK_SET); in cr_in_resume_from()
778 Curl_set_in_callback(data, FALSE); in cr_in_resume_from()
785 failf(data, "Could not seek stream"); in cr_in_resume_from()
797 Curl_set_in_callback(data, TRUE); in cr_in_resume_from()
800 Curl_set_in_callback(data, FALSE); in cr_in_resume_from()
806 failf(data, "Could only read %" FMT_OFF_T " bytes from the input", in cr_in_resume_from()
818 failf(data, "File already completely uploaded"); in cr_in_resume_from()
826 static CURLcode cr_in_rewind(struct Curl_easy *data, in cr_in_rewind() argument
835 if(data->set.seek_func) { in cr_in_rewind()
838 Curl_set_in_callback(data, TRUE); in cr_in_rewind()
839 err = (data->set.seek_func)(data->set.seek_client, 0, SEEK_SET); in cr_in_rewind()
840 Curl_set_in_callback(data, FALSE); in cr_in_rewind()
841 CURL_TRC_READ(data, "cr_in, rewind via set.seek_func -> %d", err); in cr_in_rewind()
843 failf(data, "seek callback returned error %d", (int)err); in cr_in_rewind()
847 else if(data->set.ioctl_func) { in cr_in_rewind()
850 Curl_set_in_callback(data, TRUE); in cr_in_rewind()
851 err = (data->set.ioctl_func)(data, CURLIOCMD_RESTARTREAD, in cr_in_rewind()
852 data->set.ioctl_client); in cr_in_rewind()
853 Curl_set_in_callback(data, FALSE); in cr_in_rewind()
854 CURL_TRC_READ(data, "cr_in, rewind via set.ioctl_func -> %d", (int)err); in cr_in_rewind()
856 failf(data, "ioctl callback returned error %d", (int)err); in cr_in_rewind()
864 if(data->state.fread_func == (curl_read_callback)fread) { in cr_in_rewind()
865 int err = fseek(data->state.in, 0, SEEK_SET); in cr_in_rewind()
866 CURL_TRC_READ(data, "cr_in, rewind via fseek -> %d(%d)", in cr_in_rewind()
874 failf(data, "necessary data rewind was not possible"); in cr_in_rewind()
880 static CURLcode cr_in_unpause(struct Curl_easy *data, in cr_in_unpause() argument
884 (void)data; in cr_in_unpause()
889 static bool cr_in_is_paused(struct Curl_easy *data, in cr_in_is_paused() argument
893 (void)data; in cr_in_is_paused()
913 struct Curl_easy *data, in Curl_creader_create() argument
930 result = crt->do_init(data, reader); in Curl_creader_create()
939 void Curl_creader_free(struct Curl_easy *data, struct Curl_creader *reader) in Curl_creader_free() argument
942 reader->crt->do_close(data, reader); in Curl_creader_free()
955 static CURLcode cr_lc_init(struct Curl_easy *data, struct Curl_creader *reader) in cr_lc_init() argument
958 (void)data; in cr_lc_init()
963 static void cr_lc_close(struct Curl_easy *data, struct Curl_creader *reader) in cr_lc_close() argument
966 (void)data; in cr_lc_close()
971 static CURLcode cr_lc_read(struct Curl_easy *data, in cr_lc_read() argument
995 result = Curl_creader_read(data, reader->next, buf, blen, &nread, &eos); in cr_lc_read()
1025 if(!data->set.crlf && (data->state.infilesize != -1)) { in cr_lc_read()
1028 data->state.infilesize++; in cr_lc_read()
1051 CURL_TRC_READ(data, "cr_lc_read(len=%zu) -> %d, nread=%zu, eos=%d", in cr_lc_read()
1056 static curl_off_t cr_lc_total_length(struct Curl_easy *data, in cr_lc_total_length() argument
1060 (void)data; in cr_lc_total_length()
1080 static CURLcode cr_lc_add(struct Curl_easy *data) in cr_lc_add() argument
1085 result = Curl_creader_create(&reader, data, &cr_lc, in cr_lc_add()
1088 result = Curl_creader_add(data, reader); in cr_lc_add()
1091 Curl_creader_free(data, reader); in cr_lc_add()
1095 static CURLcode do_init_reader_stack(struct Curl_easy *data, in do_init_reader_stack() argument
1104 DEBUGASSERT(!data->req.reader_stack); in do_init_reader_stack()
1106 data->req.reader_stack = r; in do_init_reader_stack()
1107 clen = r->crt->total_length(data, r); in do_init_reader_stack()
1110 if(clen && (data->set.crlf in do_init_reader_stack()
1112 || data->state.prefer_ascii in do_init_reader_stack()
1115 result = cr_lc_add(data); in do_init_reader_stack()
1123 CURLcode Curl_creader_set_fread(struct Curl_easy *data, curl_off_t len) in Curl_creader_set_fread() argument
1129 result = Curl_creader_create(&r, data, &cr_in, CURL_CR_CLIENT); in Curl_creader_set_fread()
1135 cl_reset_reader(data); in Curl_creader_set_fread()
1136 result = do_init_reader_stack(data, r); in Curl_creader_set_fread()
1138 CURL_TRC_READ(data, "add fread reader, len=%"FMT_OFF_T " -> %d", in Curl_creader_set_fread()
1143 CURLcode Curl_creader_add(struct Curl_easy *data, in Curl_creader_add() argument
1147 struct Curl_creader **anchor = &data->req.reader_stack; in Curl_creader_add()
1150 result = Curl_creader_set_fread(data, data->state.infilesize); in Curl_creader_add()
1164 CURLcode Curl_creader_set(struct Curl_easy *data, struct Curl_creader *r) in Curl_creader_set() argument
1172 cl_reset_reader(data); in Curl_creader_set()
1173 result = do_init_reader_stack(data, r); in Curl_creader_set()
1175 Curl_creader_free(data, r); in Curl_creader_set()
1179 CURLcode Curl_client_read(struct Curl_easy *data, char *buf, size_t blen, in Curl_client_read() argument
1189 if(!data->req.reader_stack) { in Curl_client_read()
1190 result = Curl_creader_set_fread(data, data->state.infilesize); in Curl_client_read()
1193 DEBUGASSERT(data->req.reader_stack); in Curl_client_read()
1196 result = Curl_creader_read(data, data->req.reader_stack, buf, blen, in Curl_client_read()
1198 CURL_TRC_READ(data, "client_read(len=%zu) -> %d, nread=%zu, eos=%d", in Curl_client_read()
1203 bool Curl_creader_needs_rewind(struct Curl_easy *data) in Curl_creader_needs_rewind() argument
1205 struct Curl_creader *reader = data->req.reader_stack; in Curl_creader_needs_rewind()
1207 if(reader->crt->needs_rewind(data, reader)) { in Curl_creader_needs_rewind()
1208 CURL_TRC_READ(data, "client reader needs rewind before next request"); in Curl_creader_needs_rewind()
1216 static CURLcode cr_null_read(struct Curl_easy *data, in cr_null_read() argument
1221 (void)data; in cr_null_read()
1230 static curl_off_t cr_null_total_length(struct Curl_easy *data, in cr_null_total_length() argument
1234 (void)data; in cr_null_total_length()
1254 CURLcode Curl_creader_set_null(struct Curl_easy *data) in Curl_creader_set_null() argument
1259 result = Curl_creader_create(&r, data, &cr_null, CURL_CR_CLIENT); in Curl_creader_set_null()
1263 cl_reset_reader(data); in Curl_creader_set_null()
1264 return do_init_reader_stack(data, r); in Curl_creader_set_null()
1274 static CURLcode cr_buf_read(struct Curl_easy *data, in cr_buf_read() argument
1282 (void)data; in cr_buf_read()
1295 CURL_TRC_READ(data, "cr_buf_read(len=%zu) -> 0, nread=%zu, eos=%d", in cr_buf_read()
1300 static bool cr_buf_needs_rewind(struct Curl_easy *data, in cr_buf_needs_rewind() argument
1304 (void)data; in cr_buf_needs_rewind()
1308 static curl_off_t cr_buf_total_length(struct Curl_easy *data, in cr_buf_total_length() argument
1312 (void)data; in cr_buf_total_length()
1316 static CURLcode cr_buf_resume_from(struct Curl_easy *data, in cr_buf_resume_from() argument
1323 (void)data; in cr_buf_resume_from()
1324 DEBUGASSERT(data->conn); in cr_buf_resume_from()
1354 CURLcode Curl_creader_set_buf(struct Curl_easy *data, in Curl_creader_set_buf() argument
1361 result = Curl_creader_create(&r, data, &cr_buf, CURL_CR_CLIENT); in Curl_creader_set_buf()
1369 cl_reset_reader(data); in Curl_creader_set_buf()
1370 result = do_init_reader_stack(data, r); in Curl_creader_set_buf()
1372 CURL_TRC_READ(data, "add buf reader, len=%zu -> %d", blen, result); in Curl_creader_set_buf()
1376 curl_off_t Curl_creader_total_length(struct Curl_easy *data) in Curl_creader_total_length() argument
1378 struct Curl_creader *r = data->req.reader_stack; in Curl_creader_total_length()
1379 return r ? r->crt->total_length(data, r) : -1; in Curl_creader_total_length()
1382 curl_off_t Curl_creader_client_length(struct Curl_easy *data) in Curl_creader_client_length() argument
1384 struct Curl_creader *r = data->req.reader_stack; in Curl_creader_client_length()
1387 return r ? r->crt->total_length(data, r) : -1; in Curl_creader_client_length()
1390 CURLcode Curl_creader_resume_from(struct Curl_easy *data, curl_off_t offset) in Curl_creader_resume_from() argument
1392 struct Curl_creader *r = data->req.reader_stack; in Curl_creader_resume_from()
1395 return r ? r->crt->resume_from(data, r, offset) : CURLE_READ_ERROR; in Curl_creader_resume_from()
1398 CURLcode Curl_creader_unpause(struct Curl_easy *data) in Curl_creader_unpause() argument
1400 struct Curl_creader *reader = data->req.reader_stack; in Curl_creader_unpause()
1404 result = reader->crt->unpause(data, reader); in Curl_creader_unpause()
1412 bool Curl_creader_is_paused(struct Curl_easy *data) in Curl_creader_is_paused() argument
1414 struct Curl_creader *reader = data->req.reader_stack; in Curl_creader_is_paused()
1417 if(reader->crt->is_paused(data, reader)) in Curl_creader_is_paused()
1424 void Curl_creader_done(struct Curl_easy *data, int premature) in Curl_creader_done() argument
1426 struct Curl_creader *reader = data->req.reader_stack; in Curl_creader_done()
1428 reader->crt->done(data, reader, premature); in Curl_creader_done()
1433 struct Curl_creader *Curl_creader_get_by_type(struct Curl_easy *data, in Curl_creader_get_by_type() argument
1437 for(r = data->req.reader_stack; r; r = r->next) { in Curl_creader_get_by_type()