Remove libcurl_on_cronet and dependencies.
This project was never finished, and we have no current plans to
continue development.
Bug: 973603,1055065
Change-Id: I929730aec39d84ea3c31e5d726d7b0af6d9f15cb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2079205
Reviewed-by: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Misha Efimov <mef@chromium.org>
Commit-Queue: Caleb Raitto <caraitto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#745626}
diff --git a/components/cronet/libcurl_on_cronet/OWNERS b/components/cronet/libcurl_on_cronet/OWNERS
deleted file mode 100644
index 611895d..0000000
--- a/components/cronet/libcurl_on_cronet/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-caraitto@chromium.org
-pauljensen@chromium.org
diff --git a/components/cronet/libcurl_on_cronet/README.md b/components/cronet/libcurl_on_cronet/README.md
deleted file mode 100644
index 2bc2222..0000000
--- a/components/cronet/libcurl_on_cronet/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# libcurl_on_cronet - libcurl wrapper on Cronet native API
-
-The libcurl_on_cronet library is a C++ wrapper library implemented via the
-Cronet Native C API, providing synchronous behavior for URL requests using
-the Chrome Network Stack. It uses the
-[libcurl-easy](https://curl.haxx.se/libcurl/c/libcurl-easy.html) C89 interface,
-the subset of libcurl's C API that supports synchronous URL transfers, and is
-implemented in C++ 14.
-
-## Overview
-
-The Cronet library provides a cross-platform Native API on top of the Chrome
-Network Stack, making it possible to use advanced protocols that would
-otherwise be difficult for an application to implement from scratch. The base
-asynchronous API offered by Cronet requires little overhead on top of the
-Chrome Network Stack, optimizing performance. However, it is non-trivial
-to get started using it for URL transfers, as it requires implementation of
-asynchronous components such as executors and callbacks regardless of whether
-the consuming application has or supports asynchronous, multithreaded behavior.
-
-To lower the bar for trying out Cronet, this library supports synchronous URL
-requests by implementing the underlying details required by the base
-asynchronous API. It defines a minimally functional executor and
-callback and handles management of the Cronet Engine and UrlRequest objects,
-supporting a subset of the configuration options available in the
-libcurl-easy API. This allows developers who are already familiar with libcurl
-to more easily try out Cronet, without having to initially learn a new interface
-and its corresponding workflow.
-
-### Command Line Tool
-
-There are also plans to develop a command line tool that can invoke a subset of
-the implemented API functions in the terminal. This would aid in debugging
-networking issues or test the functionality of the Chrome Network Stack in an
-easily reproducible manner, acting as a lightweight end-to-end integration test
-of the stack without the bulk of the rest of the Chromium browser. With a
-simpler binary it would be easier to narrow down the possible points of failure
-and pinpoint the root cause of a specific networking issue.
-
-This tool uses the same command line flags as the curl command supported by
-libcurl, supporting only a smaller subset of curl's available options. This
-smaller binary would be easier to debug and maintain while still maintaining
-a sense of familiarity, allowing for easy compatibility with the
-["copy as cURL"](https://developers.google.com/web/updates/2015/05/replay-a-network-request-in-curl)
-Chromium devtools feature.
-
-This library is currently in active development.
-
-## Details
-
-TODO(michelleroxas): Add more description to this as the project details
-become more fleshed out.
diff --git a/components/cronet/third_party/curl_headers/BUILD.gn b/components/cronet/third_party/curl_headers/BUILD.gn
deleted file mode 100644
index b97609d..0000000
--- a/components/cronet/third_party/curl_headers/BUILD.gn
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-config("curl_headers_include_config") {
- include_dirs = [ "//components/cronet/third_party/curl_headers/include" ]
-}
-
-source_set("curl_headers") {
- configs += [ ":curl_headers_include_config" ]
- public_configs = [ ":curl_headers_include_config" ]
-
- public = [
- "include/curl/curl.h",
- "include/curl/curlver.h",
- "include/curl/easy.h",
- "include/curl/mprintf.h",
- "include/curl/multi.h",
- "include/curl/stdcheaders.h",
- "include/curl/system.h",
- "include/curl/typecheck-gcc.h",
- "include/curl/urlapi.h",
- ]
-}
diff --git a/components/cronet/third_party/curl_headers/COPYING b/components/cronet/third_party/curl_headers/COPYING
deleted file mode 100644
index 3528bd7..0000000
--- a/components/cronet/third_party/curl_headers/COPYING
+++ /dev/null
@@ -1,22 +0,0 @@
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many
-contributors, see the THANKS file.
-
-All rights reserved.
-
-Permission to use, copy, modify, and distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization of the copyright holder.
diff --git a/components/cronet/third_party/curl_headers/LICENSE b/components/cronet/third_party/curl_headers/LICENSE
deleted file mode 100644
index 3528bd7..0000000
--- a/components/cronet/third_party/curl_headers/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many
-contributors, see the THANKS file.
-
-All rights reserved.
-
-Permission to use, copy, modify, and distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization of the copyright holder.
diff --git a/components/cronet/third_party/curl_headers/OWNERS b/components/cronet/third_party/curl_headers/OWNERS
deleted file mode 100644
index bc62f31..0000000
--- a/components/cronet/third_party/curl_headers/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-pauljensen@chromium.org
-caraitto@chromium.org
-
-# Component: Internals>Network>Library
diff --git a/components/cronet/third_party/curl_headers/README.chromium b/components/cronet/third_party/curl_headers/README.chromium
deleted file mode 100644
index e6e9bc3..0000000
--- a/components/cronet/third_party/curl_headers/README.chromium
+++ /dev/null
@@ -1,15 +0,0 @@
-Name: libcurl (headers and examples only)
-Short Name: libcurl
-URL: https://github.com/curl/curl
-Version: 7.65.1
-Revision: 69248b58f649e35b09a126c12781353e3471f5c6
-License: MIT/X11-like
-License File: NOT_SHIPPED
-Security Critical: no
-Description:
-Headers and examples from the libcurl repository. Useful for creating
-alternative implementations of the libcurl API.
-Local Modifications:
-Only includes COPYING, include/, and docs/examples/ -- all other files and
-directories from the original repository are not included -- DOES NOT contain
-the implementation of the libcurl API.
diff --git a/components/cronet/third_party/curl_headers/docs/examples/.gitignore b/components/cronet/third_party/curl_headers/docs/examples/.gitignore
deleted file mode 100644
index 3873712..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/.gitignore
+++ /dev/null
@@ -1,91 +0,0 @@
-10-at-a-time
-anyauthput
-certinfo
-chkspeed
-cookie_interface
-debug
-externalsocket
-fileupload
-fopen
-ftp-wildcard
-ftpget
-ftpgetinfo
-ftpgetresp
-ftpsget
-ftpupload
-ftpuploadfrommem
-ftpuploadresume
-getinfo
-getinmemory
-getredirect
-http-post
-http2-download
-http2-pushinmemory
-http2-serverpush
-http2-upload
-httpcustomheader
-httpput
-https
-imap
-imap-append
-imap-copy
-imap-create
-imap-delete
-imap-examine
-imap-fetch
-imap-list
-imap-lsub
-imap-multi
-imap-noop
-imap-search
-imap-ssl
-imap-store
-imap-tls
-multi-app
-multi-debugcallback
-multi-double
-multi-formadd
-multi-post
-multi-single
-parseurl
-persistent
-pop3-dele
-pop3-list
-pop3-multi
-pop3-noop
-pop3-retr
-pop3-ssl
-pop3-stat
-pop3-tls
-pop3-top
-pop3-uidl
-pop3s
-pop3slist
-post-callback
-postinmemory
-postit2
-postit2-formadd
-progressfunc
-resolve
-rtsp
-sendrecv
-sepheaders
-sftpget
-sftpuploadresume
-shared-connection-cache
-simple
-simplepost
-simplesmtp
-simplessl
-smtp-expn
-smtp-mail
-smtp-mime
-smtp-multi
-smtp-ssl
-smtp-tls
-smtp-vrfy
-sslbackend
-urlapi
-url2file
-usercertinmem
-xmlstream
diff --git a/components/cronet/third_party/curl_headers/docs/examples/10-at-a-time.c b/components/cronet/third_party/curl_headers/docs/examples/10-at-a-time.c
deleted file mode 100644
index b50eaa6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/10-at-a-time.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Download many files in parallel, in the same thread.
- * </DESC>
- */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef WIN32
-# include <unistd.h>
-#endif
-#include <curl/curl.h>
-
-static const char *urls[] = {
- "https://www.microsoft.com",
- "https://opensource.org",
- "https://www.google.com",
- "https://www.yahoo.com",
- "https://www.ibm.com",
- "https://www.mysql.com",
- "https://www.oracle.com",
- "https://www.ripe.net",
- "https://www.iana.org",
- "https://www.amazon.com",
- "https://www.netcraft.com",
- "https://www.heise.de",
- "https://www.chip.de",
- "https://www.ca.com",
- "https://www.cnet.com",
- "https://www.mozilla.org",
- "https://www.cnn.com",
- "https://www.wikipedia.org",
- "https://www.dell.com",
- "https://www.hp.com",
- "https://www.cert.org",
- "https://www.mit.edu",
- "https://www.nist.gov",
- "https://www.ebay.com",
- "https://www.playstation.com",
- "https://www.uefa.com",
- "https://www.ieee.org",
- "https://www.apple.com",
- "https://www.symantec.com",
- "https://www.zdnet.com",
- "https://www.fujitsu.com/global/",
- "https://www.supermicro.com",
- "https://www.hotmail.com",
- "https://www.ietf.org",
- "https://www.bbc.co.uk",
- "https://news.google.com",
- "https://www.foxnews.com",
- "https://www.msn.com",
- "https://www.wired.com",
- "https://www.sky.com",
- "https://www.usatoday.com",
- "https://www.cbs.com",
- "https://www.nbc.com/",
- "https://slashdot.org",
- "https://www.informationweek.com",
- "https://apache.org",
- "https://www.un.org",
-};
-
-#define MAX_PARALLEL 10 /* number of simultaneous transfers */
-#define NUM_URLS sizeof(urls)/sizeof(char *)
-
-static size_t write_cb(char *data, size_t n, size_t l, void *userp)
-{
- /* take care of the data here, ignored in this example */
- (void)data;
- (void)userp;
- return n*l;
-}
-
-static void add_transfer(CURLM *cm, int i)
-{
- CURL *eh = curl_easy_init();
- curl_easy_setopt(eh, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(eh, CURLOPT_URL, urls[i]);
- curl_easy_setopt(eh, CURLOPT_PRIVATE, urls[i]);
- curl_multi_add_handle(cm, eh);
-}
-
-int main(void)
-{
- CURLM *cm;
- CURLMsg *msg;
- unsigned int transfers = 0;
- int msgs_left = -1;
- int still_alive = 1;
-
- curl_global_init(CURL_GLOBAL_ALL);
- cm = curl_multi_init();
-
- /* Limit the amount of simultaneous connections curl should allow: */
- curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX_PARALLEL);
-
- for(transfers = 0; transfers < MAX_PARALLEL; transfers++)
- add_transfer(cm, transfers);
-
- do {
- curl_multi_perform(cm, &still_alive);
-
- while((msg = curl_multi_info_read(cm, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- char *url;
- CURL *e = msg->easy_handle;
- curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, &url);
- fprintf(stderr, "R: %d - %s <%s>\n",
- msg->data.result, curl_easy_strerror(msg->data.result), url);
- curl_multi_remove_handle(cm, e);
- curl_easy_cleanup(e);
- }
- else {
- fprintf(stderr, "E: CURLMsg (%d)\n", msg->msg);
- }
- if(transfers < NUM_URLS)
- add_transfer(cm, transfers++);
- }
- if(still_alive)
- curl_multi_wait(cm, NULL, 0, 1000, NULL);
-
- } while(still_alive || (transfers < NUM_URLS));
-
- curl_multi_cleanup(cm);
- curl_global_cleanup();
-
- return EXIT_SUCCESS;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.am b/components/cronet/third_party/curl_headers/docs/examples/Makefile.am
deleted file mode 100644
index 53867cb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.am
+++ /dev/null
@@ -1,70 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-AUTOMAKE_OPTIONS = foreign nostdinc
-
-EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
- Makefile.netware makefile.dj $(COMPLICATED_EXAMPLES)
-
-# Specify our include paths here, and do it relative to $(top_srcdir) and
-# $(top_builddir), to ensure that these paths which belong to the library
-# being currently built and tested are searched before the library which
-# might possibly already be installed in the system.
-#
-# $(top_srcdir)/include is for libcurl's external include files
-
-AM_CPPFLAGS = -I$(top_srcdir)/include
-
-LIBDIR = $(top_builddir)/lib
-
-# Avoid libcurl obsolete stuff
-AM_CPPFLAGS += -DCURL_NO_OLDIES
-
-if USE_CPPFLAG_CURL_STATICLIB
-AM_CPPFLAGS += -DCURL_STATICLIB
-endif
-
-# Prevent LIBS from being used for all link targets
-LIBS = $(BLANK_AT_MAKETIME)
-
-# Dependencies
-if USE_EXPLICIT_LIB_DEPS
-LDADD = $(LIBDIR)/libcurl.la @LIBCURL_LIBS@
-else
-LDADD = $(LIBDIR)/libcurl.la
-endif
-
-# This might hold -Werror
-CFLAGS += @CURL_CFLAG_EXTRAS@
-
-# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
-include Makefile.inc
-
-all: $(check_PROGRAMS)
-
-CHECKSRC = $(CS_$(V))
-CS_0 = @echo " RUN " $@;
-CS_1 =
-CS_ = $(CS_0)
-
-checksrc:
- $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -ASNPRINTF $(srcdir)/*.c)
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.example b/components/cronet/third_party/curl_headers/docs/examples/Makefile.example
deleted file mode 100644
index 17e614e..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.example
+++ /dev/null
@@ -1,53 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-# What to call the final executable
-TARGET = example
-
-# Which object files that the executable consists of
-OBJS= ftpget.o
-
-# What compiler to use
-CC = gcc
-
-# Compiler flags, -g for debug, -c to make an object file
-CFLAGS = -c -g
-
-# This should point to a directory that holds libcurl, if it isn't
-# in the system's standard lib dir
-# We also set a -L to include the directory where we have the openssl
-# libraries
-LDFLAGS = -L/home/dast/lib -L/usr/local/ssl/lib
-
-# We need -lcurl for the curl stuff
-# We need -lsocket and -lnsl when on Solaris
-# We need -lssl and -lcrypto when using libcurl with SSL support
-# We need -lpthread for the pthread example
-LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto
-
-# Link the target with all objects and libraries
-$(TARGET) : $(OBJS)
- $(CC) -o $(TARGET) $(OBJS) $(LDFLAGS) $(LIBS)
-
-# Compile the source files into object files
-ftpget.o : ftpget.c
- $(CC) $(CFLAGS) $<
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.inc b/components/cronet/third_party/curl_headers/docs/examples/Makefile.inc
deleted file mode 100644
index 8dd55b9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.inc
+++ /dev/null
@@ -1,47 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-# These are all libcurl example programs to be test compiled
-check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
- fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput \
- https multi-app multi-debugcallback multi-double multi-post multi-single \
- persistent post-callback postit2 sepheaders simple simplepost simplessl \
- sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \
- smtp-mail smtp-mime smtp-multi smtp-ssl smtp-tls smtp-vrfy smtp-expn \
- rtsp externalsocket resolve progressfunc pop3-retr pop3-list pop3-uidl \
- pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi \
- imap-list imap-lsub imap-fetch imap-store imap-append imap-examine \
- imap-search imap-create imap-delete imap-copy imap-noop imap-ssl \
- imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
- http2-upload http2-serverpush getredirect ftpuploadfrommem \
- ftpuploadresume sslbackend postit2-formadd multi-formadd \
- shared-connection-cache sftpuploadresume http2-pushinmemory parseurl \
- urlapi
-
-# These examples require external dependencies that may not be commonly
-# available on POSIX systems, so don't bother attempting to compile them here.
-COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
- ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
- sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
- smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
- multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
- threaded-shared-conn.c crawler.c ephiperfifo.c
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.m32 b/components/cronet/third_party/curl_headers/docs/examples/Makefile.m32
deleted file mode 100644
index 160afb6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.m32
+++ /dev/null
@@ -1,366 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-#***************************************************************************
-
-###########################################################################
-#
-## Makefile for building curl examples with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1)
-##
-## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
-#
-###########################################################################
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libmetalink package.
-ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../../libmetalink-0.1.3
-endif
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../../expat-2.1.0
-endif
-# Edit the path below to point to the base of your libxml2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../../libxml2-2.9.2
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-ifndef LDAP_SDK
-LDAP_SDK = c:/novell/ndk/cldapsdk/win32
-endif
-# Edit the path below to point to the base of your nghttp2 package.
-ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../../nghttp2-1.0.0
-endif
-
-PROOT = ../..
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
-
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -O COFF
-
-# Set environment var ARCH to your architecture to override autodetection.
-ifndef ARCH
-ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
-ARCH = w64
-else
-ARCH = w32
-endif
-endif
-
-ifeq ($(ARCH),w64)
-CFLAGS += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
-
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL = rm -f $1
-RMDIR = rm -fr $1
-MKDIR = mkdir -p $1
-COPY = -cp -afv $1 $2
-#COPYR = -cp -afr $1/* $2
-COPYR = -rsync -aC $1/* $2
-TOUCH = touch $1
-CAT = cat
-ECHONL = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL = -del 2>NUL $(subst /,\,$1)
-RMDIR = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR = -md 2>NUL $(subst /,\,$1)
-COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT = type
-ECHONL = $(ComSpec) /c echo.
-endif
-
-########################################################
-## Nothing more to do below this line!
-
-ifeq ($(findstring -dyn,$(CFG)),-dyn)
-DYN = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-RTMP = 1
-SSL = 1
-ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-SSH2 = 1
-SSL = 1
-ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-ZLIB = 1
-endif
-ifeq ($(findstring -brotli,$(CFG)),-brotli)
-BROTLI = 1
-endif
-ifeq ($(findstring -idn2,$(CFG)),-idn2)
-IDN2 = 1
-endif
-ifeq ($(findstring -winidn,$(CFG)),-winidn)
-WINIDN = 1
-endif
-ifeq ($(findstring -sspi,$(CFG)),-sspi)
-SSPI = 1
-endif
-ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
-LDAPS = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-IPV6 = 1
-endif
-ifeq ($(findstring -metalink,$(CFG)),-metalink)
-METALINK = 1
-endif
-ifeq ($(findstring -winssl,$(CFG)),-winssl)
-WINSSL = 1
-SSPI = 1
-endif
-ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
-NGHTTP2 = 1
-endif
-
-INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
-
-ifdef DYN
- curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
- curl_LDADD = -L$(PROOT)/lib -lcurldll
-else
- curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
- curl_LDADD = -L$(PROOT)/lib -lcurl
- CFLAGS += -DCURL_STATICLIB
- LDFLAGS += -static
-endif
-ifdef ARES
- ifndef DYN
- curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
- endif
- CFLAGS += -DUSE_ARES
- curl_LDADD += -L"$(LIBCARES_PATH)" -lcares
-endif
-ifdef RTMP
- CFLAGS += -DUSE_LIBRTMP
- curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
-endif
-ifdef NGHTTP2
- CFLAGS += -DUSE_NGHTTP2
- curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
-endif
-ifdef SSH2
- CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
- curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
- ifdef WINSSL
- ifndef DYN
- curl_LDADD += -lbcrypt -lcrypt32
- endif
- endif
-endif
-ifdef SSL
- ifndef OPENSSL_INCLUDE
- ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
- OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
- endif
- endif
- ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
- $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
- endif
- ifndef OPENSSL_LIBPATH
- OPENSSL_LIBS = -lssl -lcrypto
- ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
- ifdef DYN
- OPENSSL_LIBS = -lssl32 -leay32
- endif
- endif
- ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
- OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
- endif
- endif
- ifndef DYN
- OPENSSL_LIBS += -lgdi32 -lcrypt32
- endif
- INCLUDES += -I"$(OPENSSL_INCLUDE)"
- CFLAGS += -DUSE_OPENSSL
- curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
-endif
-ifdef WINSSL
- CFLAGS += -DUSE_SCHANNEL
- curl_LDADD += -lcrypt32
-endif
-ifdef ZLIB
- INCLUDES += -I"$(ZLIB_PATH)"
- CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
- curl_LDADD += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef BROTLI
- INCLUDES += -I"$(BROTLI_PATH)/include"
- CFLAGS += -DHAVE_BROTLI
- curl_LDADD += -L"$(BROTLI_PATH)/lib"
- ifdef BROTLI_LIBS
- curl_LDADD += $(BROTLI_LIBS)
- else
- curl_LDADD += -lbrotlidec
- endif
-endif
-ifdef IDN2
- CFLAGS += -DUSE_LIBIDN2
- curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
- CFLAGS += -DUSE_WIN32_IDN
- curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef METALINK
- INCLUDES += -I"$(LIBMETALINK_PATH)/include"
- CFLAGS += -DUSE_METALINK
- curl_LDADD += -L"$(LIBMETALINK_PATH)/lib" -lmetalink
- ifndef DYN
- ifeq ($(findstring libexpat_metalink_parser.o,$(shell $(AR) t "$(LIBMETALINK_PATH)/lib/libmetalink.a")),libexpat_metalink_parser.o)
- curl_LDADD += -L"$(LIBEXPAT_PATH)/lib" -lexpat
- else
- curl_LDADD += -L"$(LIBXML2_PATH)/lib" -lxml2
- endif
- endif
-endif
-ifdef SSPI
- CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef IPV6
- CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
- CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
- CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
- curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
- CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
- curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
- curl_LDADD += -lwldap32
-endif
-endif
-curl_LDADD += -lws2_32
-
-# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
-include Makefile.inc
-
-check_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS)))
-check_PROGRAMS += ftpuploadresume.exe synctime.exe
-
-.PRECIOUS: %.o
-
-
-all: $(check_PROGRAMS)
-
-%.exe: %.o $(curl_DEPENDENCIES)
- $(CC) $(LDFLAGS) -o $@ $< $(curl_LDADD)
-
-%.o: %.c
- $(CC) $(INCLUDES) $(CFLAGS) -c $<
-
-%.res: %.rc
- $(RC) $(RCFLAGS) -i $< -o $@
-
-clean:
- @$(call DEL, $(check_PROGRAMS:.exe=.o))
-
-distclean vclean: clean
- @$(call DEL, $(check_PROGRAMS))
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.netware b/components/cronet/third_party/curl_headers/docs/examples/Makefile.netware
deleted file mode 100644
index 1f50a926..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.netware
+++ /dev/null
@@ -1,415 +0,0 @@
-#################################################################
-#
-## Makefile for building curl.nlm (NetWare version - gnu make)
-## Use: make -f Makefile.netware
-##
-## Comments to: Guenter Knauf
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.32
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.4
-endif
-
-# Edit the path below to point to the base of your fbopenssl package.
-ifndef FBOPENSSL_PATH
-FBOPENSSL_PATH = ../../fbopenssl-0.4
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET = examples
-VERSION = $(LIBCURL_VERSION)
-COPYR = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR = curl ($(LIBARCH))
-MTSAFE = YES
-STACK = 8192
-SCREEN = Example Program
-# Comment the line below if you don't want to load protected automatically.
-# LDRING = 3
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
- OPT = -O2
- OBJDIR = release
-else
- OPT = -g
- OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
- METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
- # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
- MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
- CC = mwccnlm
-else
- CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
- LD = mwldnlm
- LDFLAGS = -nostdlib $< $(PRELUDE) $(LDLIBS) -o $@ -commandfile
- LIBEXT = lib
- CFLAGS += -gccinc -inline off -opt nointrinsics -proc 586
- CFLAGS += -relax_pointers
- #CFLAGS += -w on
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.o
- endif
- CFLAGS += -align 4
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
- # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
- CFLAGS += -align 1
- endif
-else
- LD = nlmconv
- LDFLAGS = -T
- LIBEXT = a
- CFLAGS += -m32
- CFLAGS += -fno-builtin -fno-strict-aliasing
- ifeq ($(findstring gcc,$(CC)),gcc)
- CFLAGS += -fpcc-struct-return
- endif
- CFLAGS += -Wall # -pedantic
- ifeq ($(LIBARCH),LIBC)
- ifeq ($(POSIXFL),1)
- PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
- else
- PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
- endif
- else
- # PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
- # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
- # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
- PRELUDE = $(NDK_ROOT)/pre/prelude.o
- CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
- endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../../include
-CURL_LIB = ../../lib
-
-INCLUDES = -I$(CURL_INC)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef LINK_STATIC
- LDLIBS = $(CURL_LIB)/libcurl.$(LIBEXT)
-ifdef WITH_ARES
- LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-else
- MODULES = libcurl.nlm
- IMPORTS = @$(CURL_LIB)/libcurl.imp
-endif
-ifdef WITH_SSH2
- # INCLUDES += -I$(LIBSSH2_PATH)/include
- ifdef LINK_STATIC
- LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
- else
- MODULES += libssh2.nlm
- IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
- endif
-endif
-ifdef WITH_RTMP
- # INCLUDES += -I$(LIBRTMP_PATH)
-ifdef LINK_STATIC
- LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
-endif
-endif
-ifdef WITH_SSL
- INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
- LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
- IMPORTS += GetProcessSwitchCount RunningProcess
-else
-endif
-ifdef WITH_ZLIB
- # INCLUDES += -I$(ZLIB_PATH)
-ifdef LINK_STATIC
- LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
-else
- MODULES += libz.nlm
- IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
-endif
-endif
-ifdef WITH_IDN
- # INCLUDES += -I$(LIBIDN_PATH)/include
- LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
-endif
-
-ifeq ($(LIBARCH),LIBC)
- INCLUDES += -I$(NDK_LIBC)/include
- # INCLUDES += -I$(NDK_LIBC)/include/nks
- # INCLUDES += -I$(NDK_LIBC)/include/winsock
- CFLAGS += -D_POSIX_SOURCE
-else
- INCLUDES += -I$(NDK_CLIB)/include/nlm
- # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
- # INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
- XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
- XDCOPT = -u
-endif
-ifdef XDCOPT
- XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL = '
-DS = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-check_PROGRAMS := $(patsubst %,%.nlm,$(strip $(check_PROGRAMS)))
-
-.PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.def $(OBJDIR)/%.xdc
-
-
-all: prebuild $(check_PROGRAMS)
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc
-
-$(OBJDIR)/%.o: %.c
- @echo Compiling $<
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
- @echo Creating $@
- @$(AWK) -f ../../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all
- @$(CP) $(check_PROGRAMS) $(INSTDIR)
-
-clean:
- -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
- -$(RM) $(check_PROGRAMS)
-
-$(OBJDIR) $(INSTDIR):
- @$(MKDIR) $@
-
-%.nlm: $(OBJDIR)/%.o $(OBJDIR)/%.def $(XDCDATA)
- @echo Linking $@
- @-$(RM) $@
- @$(LD) $(LDFLAGS) $(OBJDIR)/$(@:.nlm=.def)
-
-$(OBJDIR)/%.xdc: Makefile.netware
- @echo Creating $@
- @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
- @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
- @echo $(DL)# Do not edit this file - it is created by Make!$(DL) >> $@
- @echo $(DL)# All your changes will be lost!!$(DL) >> $@
- @echo $(DL)#$(DL) >> $@
- @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
- @echo $(DL)description "$(DESCR) $(notdir $(@:.def=)) Example"$(DL) >> $@
- @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
- @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
- @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
- @echo $(DL)screenname "$(DESCR) $(notdir $(@:.def=)) $(SCREEN)"$(DL) >> $@
-else
- @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
- @echo $(DL)debug$(DL) >> $@
-endif
- @echo $(DL)threadname "_$(notdir $(@:.def=))"$(DL) >> $@
-ifdef XDCDATA
- @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
- @echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
- @echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)start _Prelude$(DL) >> $@
- @echo $(DL)exit _Stop$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
- @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
- @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
- @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
- @echo $(DL)flag_on 64$(DL) >> $@
- @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
- @echo $(DL)start POSIX_Start$(DL) >> $@
- @echo $(DL)exit POSIX_Stop$(DL) >> $@
- @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
- @echo $(DL)start _LibCPrelude$(DL) >> $@
- @echo $(DL)exit _LibCPostlude$(DL) >> $@
- @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
- @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
- @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
- @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-# @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
- @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
- @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
- @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
- @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
- @echo $(DL)input $(PRELUDE)$(DL) >> $@
- @echo $(DL)input $(@:.def=.o)$(DL) >> $@
-ifdef LDLIBS
- @echo $(DL)input $(LDLIBS)$(DL) >> $@
-endif
- @echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
-endif
diff --git a/components/cronet/third_party/curl_headers/docs/examples/README b/components/cronet/third_party/curl_headers/docs/examples/README
deleted file mode 100644
index 078cabe..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/README
+++ /dev/null
@@ -1,38 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
-This directory is for libcurl programming examples. They are meant to show
-some simple steps on how you can build your own application to take full
-advantage of libcurl.
-
-If you end up with other small but still useful example sources, please mail
-them for submission in future packages and on the web site.
-
-BUILDING
-
-The Makefile.example is an example makefile that could be used to build these
-examples. Just edit the file according to your system and requirements first.
-
-Most examples should build fine using a command line like this:
-
- $ `curl-config --cc --cflags --libs` -o example example.c
-
-Some compilers don't like having the arguments in this order but instead
-want you do reorganize them like:
-
- $ `curl-config --cc` -o example example.c `curl-config --cflags --libs`
-
-*PLEASE* do not use the curl.haxx.se site as a test target for your libcurl
-applications/experiments. Even if some of the examples use that site as a URL
-at some places, it doesn't mean that the URLs work or that we expect you to
-actually torture our web site with your tests! Thanks.
-
-EXAMPLES
-
-Each example source code file is designed to be and work stand-alone and
-rather self-explanatory. The examples may at times lack the level of error
-checks you need in a real world, but that is then only for the sake of
-readability: to make the code smaller and easier to follow.
diff --git a/components/cronet/third_party/curl_headers/docs/examples/adddocsref.pl b/components/cronet/third_party/curl_headers/docs/examples/adddocsref.pl
deleted file mode 100755
index ce6f582..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/adddocsref.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env perl
-
-# pass files as argument(s)
-
-my $docroot="https://curl.haxx.se/libcurl/c";
-
-for $f (@ARGV) {
- open(NEW, ">$f.new");
- open(F, "<$f");
- while(<F>) {
- my $l = $_;
- if($l =~ /\/* $docroot/) {
- # just ignore preciously added refs
- }
- elsif($l =~ /^( *).*curl_easy_setopt\([^,]*, *([^ ,]*) *,/) {
- my ($prefix, $anc) = ($1, $2);
- $anc =~ s/_//g;
- print NEW "$prefix/* $docroot/curl_easy_setopt.html#$anc */\n";
- print NEW $l;
- }
- elsif($l =~ /^( *).*(curl_([^\(]*))\(/) {
- my ($prefix, $func) = ($1, $2);
- print NEW "$prefix/* $docroot/$func.html */\n";
- print NEW $l;
- }
- else {
- print NEW $l;
- }
- }
- close(F);
- close(NEW);
-
- system("mv $f $f.org");
- system("mv $f.new $f");
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/anyauthput.c b/components/cronet/third_party/curl_headers/docs/examples/anyauthput.c
deleted file mode 100644
index 14da10c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/anyauthput.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP PUT upload with authentiction using "any" method. libcurl picks the
- * one the server supports/wants.
- * </DESC>
- */
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <curl/curl.h>
-
-#ifdef WIN32
-# include <io.h>
-# define READ_3RD_ARG unsigned int
-#else
-# include <unistd.h>
-# define READ_3RD_ARG size_t
-#endif
-
-#if LIBCURL_VERSION_NUM < 0x070c03
-#error "upgrade your libcurl to no less than 7.12.3"
-#endif
-
-/*
- * This example shows a HTTP PUT operation with authentiction using "any"
- * type. It PUTs a file given as a command line argument to the URL also given
- * on the command line.
- *
- * Since libcurl 7.12.3, using "any" auth and POST/PUT requires a set ioctl
- * function.
- *
- * This example also uses its own read callback.
- */
-
-/* ioctl callback function */
-static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
-{
- int *fdp = (int *)userp;
- int fd = *fdp;
-
- (void)handle; /* not used in here */
-
- switch(cmd) {
- case CURLIOCMD_RESTARTREAD:
- /* mr libcurl kindly asks as to rewind the read data stream to start */
- if(-1 == lseek(fd, 0, SEEK_SET))
- /* couldn't rewind */
- return CURLIOE_FAILRESTART;
-
- break;
-
- default: /* ignore unknown commands */
- return CURLIOE_UNKNOWNCMD;
- }
- return CURLIOE_OK; /* success! */
-}
-
-/* read callback function, fread() look alike */
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- ssize_t retcode;
- curl_off_t nread;
-
- int *fdp = (int *)stream;
- int fd = *fdp;
-
- retcode = read(fd, ptr, (READ_3RD_ARG)(size * nmemb));
-
- nread = (curl_off_t)retcode;
-
- fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
- " bytes from file\n", nread);
-
- return retcode;
-}
-
-int main(int argc, char **argv)
-{
- CURL *curl;
- CURLcode res;
- int hd;
- struct stat file_info;
-
- char *file;
- char *url;
-
- if(argc < 3)
- return 1;
-
- file = argv[1];
- url = argv[2];
-
- /* get the file size of the local file */
- hd = open(file, O_RDONLY);
- fstat(hd, &file_info);
-
- /* In windows, this will init the winsock stuff */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* get a curl handle */
- curl = curl_easy_init();
- if(curl) {
- /* we want to use our own read function */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
- /* which file to upload */
- curl_easy_setopt(curl, CURLOPT_READDATA, (void *)&hd);
-
- /* set the ioctl function */
- curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
-
- /* pass the file descriptor to the ioctl callback as well */
- curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void *)&hd);
-
- /* enable "uploading" (which means PUT when doing HTTP) */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* specify target URL, and note that this URL should also include a file
- name, not only a directory (as you can do with GTP uploads) */
- curl_easy_setopt(curl, CURLOPT_URL, url);
-
- /* and give the size of the upload, this supports large file sizes
- on systems that have general support for it */
- curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
- (curl_off_t)file_info.st_size);
-
- /* tell libcurl we can use "any" auth, which lets the lib pick one, but it
- also costs one extra round-trip and possibly sending of all the PUT
- data twice!!! */
- curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
-
- /* set user name and password for the authentication */
- curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
-
- /* Now run off and do what you've been told! */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- close(hd); /* close the local file */
-
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/asiohiper.cpp b/components/cronet/third_party/curl_headers/docs/examples/asiohiper.cpp
deleted file mode 100644
index de14805..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/asiohiper.cpp
+++ /dev/null
@@ -1,496 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * demonstrate the use of multi socket interface with boost::asio
- * </DESC>
- */
-/*
- * This program is in c++ and uses boost::asio instead of libevent/libev.
- * Requires boost::asio, boost::bind and boost::system
- *
- * This is an adaptation of libcurl's "hiperfifo.c" and "evhiperfifo.c"
- * sample programs. This example implements a subset of the functionality from
- * hiperfifo.c, for full functionality refer hiperfifo.c or evhiperfifo.c
- *
- * Written by Lijo Antony based on hiperfifo.c by Jeff Pohlmeyer
- *
- * When running, the program creates an easy handle for a URL and
- * uses the curl_multi API to fetch it.
- *
- * Note:
- * For the sake of simplicity, URL is hard coded to "www.google.com"
- *
- * This is purely a demo app, all retrieved data is simply discarded by the
- * write callback.
- *
- * ===========================================================================
- * WARNING: This example program is known to have flaws:
- * https://github.com/curl/curl/issues/2407
- *
- * It still kept in the example repository with the hope that it might be
- * useful, and maybe some day someone who knows enough about boost::asio will
- * read this text, accept the challenge and make the example code work
- * correctly. Until then: expect this example program to fail occasionally.
- * ===========================================================================
- */
-
-
-#include <curl/curl.h>
-#include <boost/asio.hpp>
-#include <boost/bind.hpp>
-#include <iostream>
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-/* boost::asio related objects
- * using global variables for simplicity
- */
-boost::asio::io_service io_service;
-boost::asio::deadline_timer timer(io_service);
-std::map<curl_socket_t, boost::asio::ip::tcp::socket *> socket_map;
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
- CURLM *multi;
- int still_running;
-} GlobalInfo;
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
- CURL *easy;
- char *url;
- GlobalInfo *global;
- char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-static void timer_cb(const boost::system::error_code & error, GlobalInfo *g);
-
-/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
-{
- fprintf(MSG_OUT, "\nmulti_timer_cb: timeout_ms %ld", timeout_ms);
-
- /* cancel running timer */
- timer.cancel();
-
- if(timeout_ms > 0) {
- /* update timer */
- timer.expires_from_now(boost::posix_time::millisec(timeout_ms));
- timer.async_wait(boost::bind(&timer_cb, _1, g));
- }
- else if(timeout_ms == 0) {
- /* call timeout function immediately */
- boost::system::error_code error; /*success*/
- timer_cb(error, g);
- }
-
- return 0;
-}
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
- if(CURLM_OK != code) {
- const char *s;
- switch(code) {
- case CURLM_CALL_MULTI_PERFORM:
- s = "CURLM_CALL_MULTI_PERFORM";
- break;
- case CURLM_BAD_HANDLE:
- s = "CURLM_BAD_HANDLE";
- break;
- case CURLM_BAD_EASY_HANDLE:
- s = "CURLM_BAD_EASY_HANDLE";
- break;
- case CURLM_OUT_OF_MEMORY:
- s = "CURLM_OUT_OF_MEMORY";
- break;
- case CURLM_INTERNAL_ERROR:
- s = "CURLM_INTERNAL_ERROR";
- break;
- case CURLM_UNKNOWN_OPTION:
- s = "CURLM_UNKNOWN_OPTION";
- break;
- case CURLM_LAST:
- s = "CURLM_LAST";
- break;
- default:
- s = "CURLM_unknown";
- break;
- case CURLM_BAD_SOCKET:
- s = "CURLM_BAD_SOCKET";
- fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
- /* ignore this error */
- return;
- }
-
- fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
-
- exit(code);
- }
-}
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
- char *eff_url;
- CURLMsg *msg;
- int msgs_left;
- ConnInfo *conn;
- CURL *easy;
- CURLcode res;
-
- fprintf(MSG_OUT, "\nREMAINING: %d", g->still_running);
-
- while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- easy = msg->easy_handle;
- res = msg->data.result;
- curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
- curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
- fprintf(MSG_OUT, "\nDONE: %s => (%d) %s", eff_url, res, conn->error);
- curl_multi_remove_handle(g->multi, easy);
- free(conn->url);
- curl_easy_cleanup(easy);
- free(conn);
- }
- }
-}
-
-/* Called by asio when there is an action on a socket */
-static void event_cb(GlobalInfo *g, curl_socket_t s,
- int action, const boost::system::error_code & error,
- int *fdp)
-{
- fprintf(MSG_OUT, "\nevent_cb: action=%d", action);
-
- if(socket_map.find(s) == socket_map.end()) {
- fprintf(MSG_OUT, "\nevent_cb: socket already closed");
- return;
- }
-
- /* make sure the event matches what are wanted */
- if(*fdp == action || *fdp == CURL_POLL_INOUT) {
- CURLMcode rc;
- if(error)
- action = CURL_CSELECT_ERR;
- rc = curl_multi_socket_action(g->multi, s, action, &g->still_running);
-
- mcode_or_die("event_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
-
- if(g->still_running <= 0) {
- fprintf(MSG_OUT, "\nlast transfer done, kill timeout");
- timer.cancel();
- }
-
- /* keep on watching.
- * the socket may have been closed and/or fdp may have been changed
- * in curl_multi_socket_action(), so check them both */
- if(!error && socket_map.find(s) != socket_map.end() &&
- (*fdp == action || *fdp == CURL_POLL_INOUT)) {
- boost::asio::ip::tcp::socket *tcp_socket = socket_map.find(s)->second;
-
- if(action == CURL_POLL_IN) {
- tcp_socket->async_read_some(boost::asio::null_buffers(),
- boost::bind(&event_cb, g, s,
- action, _1, fdp));
- }
- if(action == CURL_POLL_OUT) {
- tcp_socket->async_write_some(boost::asio::null_buffers(),
- boost::bind(&event_cb, g, s,
- action, _1, fdp));
- }
- }
- }
-}
-
-/* Called by asio when our timeout expires */
-static void timer_cb(const boost::system::error_code & error, GlobalInfo *g)
-{
- if(!error) {
- fprintf(MSG_OUT, "\ntimer_cb: ");
-
- CURLMcode rc;
- rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
- &g->still_running);
-
- mcode_or_die("timer_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
- }
-}
-
-/* Clean up any data */
-static void remsock(int *f, GlobalInfo *g)
-{
- fprintf(MSG_OUT, "\nremsock: ");
-
- if(f) {
- free(f);
- }
-}
-
-static void setsock(int *fdp, curl_socket_t s, CURL *e, int act, int oldact,
- GlobalInfo *g)
-{
- fprintf(MSG_OUT, "\nsetsock: socket=%d, act=%d, fdp=%p", s, act, fdp);
-
- std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it =
- socket_map.find(s);
-
- if(it == socket_map.end()) {
- fprintf(MSG_OUT, "\nsocket %d is a c-ares socket, ignoring", s);
- return;
- }
-
- boost::asio::ip::tcp::socket * tcp_socket = it->second;
-
- *fdp = act;
-
- if(act == CURL_POLL_IN) {
- fprintf(MSG_OUT, "\nwatching for socket to become readable");
- if(oldact != CURL_POLL_IN && oldact != CURL_POLL_INOUT) {
- tcp_socket->async_read_some(boost::asio::null_buffers(),
- boost::bind(&event_cb, g, s,
- CURL_POLL_IN, _1, fdp));
- }
- }
- else if(act == CURL_POLL_OUT) {
- fprintf(MSG_OUT, "\nwatching for socket to become writable");
- if(oldact != CURL_POLL_OUT && oldact != CURL_POLL_INOUT) {
- tcp_socket->async_write_some(boost::asio::null_buffers(),
- boost::bind(&event_cb, g, s,
- CURL_POLL_OUT, _1, fdp));
- }
- }
- else if(act == CURL_POLL_INOUT) {
- fprintf(MSG_OUT, "\nwatching for socket to become readable & writable");
- if(oldact != CURL_POLL_IN && oldact != CURL_POLL_INOUT) {
- tcp_socket->async_read_some(boost::asio::null_buffers(),
- boost::bind(&event_cb, g, s,
- CURL_POLL_IN, _1, fdp));
- }
- if(oldact != CURL_POLL_OUT && oldact != CURL_POLL_INOUT) {
- tcp_socket->async_write_some(boost::asio::null_buffers(),
- boost::bind(&event_cb, g, s,
- CURL_POLL_OUT, _1, fdp));
- }
- }
-}
-
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
- /* fdp is used to store current action */
- int *fdp = (int *) calloc(sizeof(int), 1);
-
- setsock(fdp, s, easy, action, 0, g);
- curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
- fprintf(MSG_OUT, "\nsock_cb: socket=%d, what=%d, sockp=%p", s, what, sockp);
-
- GlobalInfo *g = (GlobalInfo*) cbp;
- int *actionp = (int *) sockp;
- const char *whatstr[] = { "none", "IN", "OUT", "INOUT", "REMOVE"};
-
- fprintf(MSG_OUT,
- "\nsocket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
-
- if(what == CURL_POLL_REMOVE) {
- fprintf(MSG_OUT, "\n");
- remsock(actionp, g);
- }
- else {
- if(!actionp) {
- fprintf(MSG_OUT, "\nAdding data: %s", whatstr[what]);
- addsock(s, e, what, g);
- }
- else {
- fprintf(MSG_OUT,
- "\nChanging action from %s to %s",
- whatstr[*actionp], whatstr[what]);
- setsock(actionp, s, e, what, *actionp, g);
- }
- }
-
- return 0;
-}
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
-{
- size_t written = size * nmemb;
- char *pBuffer = (char *)malloc(written + 1);
-
- strncpy(pBuffer, (const char *)ptr, written);
- pBuffer[written] = '\0';
-
- fprintf(MSG_OUT, "%s", pBuffer);
-
- free(pBuffer);
-
- return written;
-}
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
- double uln)
-{
- ConnInfo *conn = (ConnInfo *)p;
-
- (void)ult;
- (void)uln;
-
- fprintf(MSG_OUT, "\nProgress: %s (%g/%g)", conn->url, dlnow, dltotal);
- fprintf(MSG_OUT, "\nProgress: %s (%g)", conn->url, ult);
-
- return 0;
-}
-
-/* CURLOPT_OPENSOCKETFUNCTION */
-static curl_socket_t opensocket(void *clientp, curlsocktype purpose,
- struct curl_sockaddr *address)
-{
- fprintf(MSG_OUT, "\nopensocket :");
-
- curl_socket_t sockfd = CURL_SOCKET_BAD;
-
- /* restrict to IPv4 */
- if(purpose == CURLSOCKTYPE_IPCXN && address->family == AF_INET) {
- /* create a tcp socket object */
- boost::asio::ip::tcp::socket *tcp_socket =
- new boost::asio::ip::tcp::socket(io_service);
-
- /* open it and get the native handle*/
- boost::system::error_code ec;
- tcp_socket->open(boost::asio::ip::tcp::v4(), ec);
-
- if(ec) {
- /* An error occurred */
- std::cout << std::endl << "Couldn't open socket [" << ec << "][" <<
- ec.message() << "]";
- fprintf(MSG_OUT, "\nERROR: Returning CURL_SOCKET_BAD to signal error");
- }
- else {
- sockfd = tcp_socket->native_handle();
- fprintf(MSG_OUT, "\nOpened socket %d", sockfd);
-
- /* save it for monitoring */
- socket_map.insert(std::pair<curl_socket_t,
- boost::asio::ip::tcp::socket *>(sockfd, tcp_socket));
- }
- }
-
- return sockfd;
-}
-
-/* CURLOPT_CLOSESOCKETFUNCTION */
-static int close_socket(void *clientp, curl_socket_t item)
-{
- fprintf(MSG_OUT, "\nclose_socket : %d", item);
-
- std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it =
- socket_map.find(item);
-
- if(it != socket_map.end()) {
- delete it->second;
- socket_map.erase(it);
- }
-
- return 0;
-}
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
- ConnInfo *conn;
- CURLMcode rc;
-
- conn = (ConnInfo *) calloc(1, sizeof(ConnInfo));
-
- conn->easy = curl_easy_init();
- if(!conn->easy) {
- fprintf(MSG_OUT, "\ncurl_easy_init() failed, exiting!");
- exit(2);
- }
-
- conn->global = g;
- conn->url = strdup(url);
- curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
- curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
- curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
- curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
-
- /* call this function to get a socket */
- curl_easy_setopt(conn->easy, CURLOPT_OPENSOCKETFUNCTION, opensocket);
-
- /* call this function to close a socket */
- curl_easy_setopt(conn->easy, CURLOPT_CLOSESOCKETFUNCTION, close_socket);
-
- fprintf(MSG_OUT,
- "\nAdding easy %p to multi %p (%s)", conn->easy, g->multi, url);
- rc = curl_multi_add_handle(g->multi, conn->easy);
- mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
- /* note that the add_handle() will set a time-out to trigger very soon so
- that the necessary socket_action() call will be called by this app */
-}
-
-int main(int argc, char **argv)
-{
- GlobalInfo g;
-
- (void)argc;
- (void)argv;
-
- memset(&g, 0, sizeof(GlobalInfo));
- g.multi = curl_multi_init();
-
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
- new_conn((char *)"www.google.com", &g); /* add a URL */
-
- /* enter io_service run loop */
- io_service.run();
-
- curl_multi_cleanup(g.multi);
-
- fprintf(MSG_OUT, "\ndone.\n");
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/cacertinmem.c b/components/cronet/third_party/curl_headers/docs/examples/cacertinmem.c
deleted file mode 100644
index ea295d01..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/cacertinmem.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * CA cert in memory with OpenSSL to get a HTTPS page.
- * </DESC>
- */
-
-#include <openssl/err.h>
-#include <openssl/ssl.h>
-#include <curl/curl.h>
-#include <stdio.h>
-
-static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- fwrite(ptr, size, nmemb, (FILE *)stream);
- return (nmemb*size);
-}
-
-static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
-{
- CURLcode rv = CURLE_ABORTED_BY_CALLBACK;
-
- /** This example uses two (fake) certificates **/
- static const char mypem[] =
- "-----BEGIN CERTIFICATE-----\n"
- "MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE\n"
- "AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw\n"
- "CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ\n"
- "BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND\n"
- "VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb\n"
- "qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY\n"
- "HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo\n"
- "G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA\n"
- "0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH\n"
- "k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47\n"
- "JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m\n"
- "AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD\n"
- "vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms\n"
- "tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH\n"
- "7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h\n"
- "I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA\n"
- "h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF\n"
- "d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H\n"
- "pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7\n"
- "-----END CERTIFICATE-----\n"
- "-----BEGIN CERTIFICATE-----\n"
- "MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE\n"
- "AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x\n"
- "CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW\n"
- "MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF\n"
- "RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\n"
- "AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7\n"
- "09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7\n"
- "XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P\n"
- "gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe\n"
- "I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i\n"
- "5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi\n"
- "ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn\n"
- "MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ\n"
- "o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6\n"
- "zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN\n"
- "GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt\n"
- "r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK\n"
- "Z05phkOTOPu220+DkdRgfks+KzgHVZhepA==\n"
- "-----END CERTIFICATE-----\n";
-
- BIO *cbio = BIO_new_mem_buf(mypem, sizeof(mypem));
- X509_STORE *cts = SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
- int i;
- STACK_OF(X509_INFO) *inf;
- (void)curl;
- (void)parm;
-
- if(!cts || !cbio) {
- return rv;
- }
-
- inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL);
-
- if(!inf) {
- BIO_free(cbio);
- return rv;
- }
-
- for(i = 0; i < sk_X509_INFO_num(inf); i++) {
- X509_INFO *itmp = sk_X509_INFO_value(inf, i);
- if(itmp->x509) {
- X509_STORE_add_cert(cts, itmp->x509);
- }
- if(itmp->crl) {
- X509_STORE_add_crl(cts, itmp->crl);
- }
- }
-
- sk_X509_INFO_pop_free(inf, X509_INFO_free);
- BIO_free(cbio);
-
- rv = CURLE_OK;
- return rv;
-}
-
-int main(void)
-{
- CURL *ch;
- CURLcode rv;
-
- curl_global_init(CURL_GLOBAL_ALL);
- ch = curl_easy_init();
- curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
- curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
- curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
- curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
- curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, *writefunction);
- curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
- curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, *writefunction);
- curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
- curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
- curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
- curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
-
- /* Turn off the default CA locations, otherwise libcurl will load CA
- * certificates from the locations that were detected/specified at
- * build-time
- */
- curl_easy_setopt(ch, CURLOPT_CAINFO, NULL);
- curl_easy_setopt(ch, CURLOPT_CAPATH, NULL);
-
- /* first try: retrieve page without ca certificates -> should fail
- * unless libcurl was built --with-ca-fallback enabled at build-time
- */
- rv = curl_easy_perform(ch);
- if(rv == CURLE_OK)
- printf("*** transfer succeeded ***\n");
- else
- printf("*** transfer failed ***\n");
-
- /* use a fresh connection (optional)
- * this option seriously impacts performance of multiple transfers but
- * it is necessary order to demonstrate this example. recall that the
- * ssl ctx callback is only called _before_ an SSL connection is
- * established, therefore it will not affect existing verified SSL
- * connections already in the connection cache associated with this
- * handle. normally you would set the ssl ctx function before making
- * any transfers, and not use this option.
- */
- curl_easy_setopt(ch, CURLOPT_FRESH_CONNECT, 1L);
-
- /* second try: retrieve page using cacerts' certificate -> will succeed
- * load the certificate by installing a function doing the necessary
- * "modifications" to the SSL CONTEXT just before link init
- */
- curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
- rv = curl_easy_perform(ch);
- if(rv == CURLE_OK)
- printf("*** transfer succeeded ***\n");
- else
- printf("*** transfer failed ***\n");
-
- curl_easy_cleanup(ch);
- curl_global_cleanup();
- return rv;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/certinfo.c b/components/cronet/third_party/curl_headers/docs/examples/certinfo.c
deleted file mode 100644
index 1aee614..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/certinfo.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Extract lots of TLS certificate info.
- * </DESC>
- */
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- (void)stream;
- (void)ptr;
- return size * nmemb;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
-
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu);
-
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
- curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L);
-
- res = curl_easy_perform(curl);
-
- if(!res) {
- struct curl_certinfo *certinfo;
-
- res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &certinfo);
-
- if(!res && certinfo) {
- int i;
-
- printf("%d certs!\n", certinfo->num_of_certs);
-
- for(i = 0; i < certinfo->num_of_certs; i++) {
- struct curl_slist *slist;
-
- for(slist = certinfo->certinfo[i]; slist; slist = slist->next)
- printf("%s\n", slist->data);
-
- }
- }
-
- }
-
- curl_easy_cleanup(curl);
- }
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/chkspeed.c b/components/cronet/third_party/curl_headers/docs/examples/chkspeed.c
deleted file mode 100644
index 0b0ba72a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/chkspeed.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Show transfer timing info after download completes.
- * </DESC>
- */
-/* Example source code to show how the callback function can be used to
- * download data into a chunk of memory instead of storing it in a file.
- * After successful download we use curl_easy_getinfo() calls to get the
- * amount of downloaded bytes, the time used for the whole download, and
- * the average download speed.
- * On Linux you can create the download test files with:
- * dd if=/dev/urandom of=file_1M.bin bs=1M count=1
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include <curl/curl.h>
-
-#define URL_BASE "http://speedtest.your.domain/"
-#define URL_1M URL_BASE "file_1M.bin"
-#define URL_2M URL_BASE "file_2M.bin"
-#define URL_5M URL_BASE "file_5M.bin"
-#define URL_10M URL_BASE "file_10M.bin"
-#define URL_20M URL_BASE "file_20M.bin"
-#define URL_50M URL_BASE "file_50M.bin"
-#define URL_100M URL_BASE "file_100M.bin"
-
-#define CHKSPEED_VERSION "1.0"
-
-static size_t WriteCallback(void *ptr, size_t size, size_t nmemb, void *data)
-{
- /* we are not interested in the downloaded bytes itself,
- so we only return the size we would have saved ... */
- (void)ptr; /* unused */
- (void)data; /* unused */
- return (size_t)(size * nmemb);
-}
-
-int main(int argc, char *argv[])
-{
- CURL *curl_handle;
- CURLcode res;
- int prtall = 0, prtsep = 0, prttime = 0;
- const char *url = URL_1M;
- char *appname = argv[0];
-
- if(argc > 1) {
- /* parse input parameters */
- for(argc--, argv++; *argv; argc--, argv++) {
- if(strncasecmp(*argv, "-", 1) == 0) {
- if(strncasecmp(*argv, "-H", 2) == 0) {
- fprintf(stderr,
- "\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
- appname);
- exit(1);
- }
- else if(strncasecmp(*argv, "-V", 2) == 0) {
- fprintf(stderr, "\r%s %s - %s\n",
- appname, CHKSPEED_VERSION, curl_version());
- exit(1);
- }
- else if(strncasecmp(*argv, "-A", 2) == 0) {
- prtall = 1;
- }
- else if(strncasecmp(*argv, "-X", 2) == 0) {
- prtsep = 1;
- }
- else if(strncasecmp(*argv, "-T", 2) == 0) {
- prttime = 1;
- }
- else if(strncasecmp(*argv, "-M=", 3) == 0) {
- long m = strtol((*argv) + 3, NULL, 10);
- switch(m) {
- case 1:
- url = URL_1M;
- break;
- case 2:
- url = URL_2M;
- break;
- case 5:
- url = URL_5M;
- break;
- case 10:
- url = URL_10M;
- break;
- case 20:
- url = URL_20M;
- break;
- case 50:
- url = URL_50M;
- break;
- case 100:
- url = URL_100M;
- break;
- default:
- fprintf(stderr, "\r%s: invalid parameter %s\n",
- appname, *argv + 3);
- exit(1);
- }
- }
- else {
- fprintf(stderr, "\r%s: invalid or unknown option %s\n",
- appname, *argv);
- exit(1);
- }
- }
- else {
- url = *argv;
- }
- }
- }
-
- /* print separator line */
- if(prtsep) {
- printf("-------------------------------------------------\n");
- }
- /* print localtime */
- if(prttime) {
- time_t t = time(NULL);
- printf("Localtime: %s", ctime(&t));
- }
-
- /* init libcurl */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* init the curl session */
- curl_handle = curl_easy_init();
-
- /* specify URL to get */
- curl_easy_setopt(curl_handle, CURLOPT_URL, url);
-
- /* send all data to this function */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteCallback);
-
- /* some servers don't like requests that are made without a user-agent
- field, so we provide one */
- curl_easy_setopt(curl_handle, CURLOPT_USERAGENT,
- "libcurl-speedchecker/" CHKSPEED_VERSION);
-
- /* get it! */
- res = curl_easy_perform(curl_handle);
-
- if(CURLE_OK == res) {
- curl_off_t val;
-
- /* check for bytes downloaded */
- res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD_T, &val);
- if((CURLE_OK == res) && (val>0))
- printf("Data downloaded: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", val);
-
- /* check for total download time */
- res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME_T, &val);
- if((CURLE_OK == res) && (val>0))
- printf("Total download time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
- (val / 1000000), (long)(val % 1000000));
-
- /* check for average download speed */
- res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD_T, &val);
- if((CURLE_OK == res) && (val>0))
- printf("Average download speed: %" CURL_FORMAT_CURL_OFF_T
- " kbyte/sec.\n", val / 1024);
-
- if(prtall) {
- /* check for name resolution time */
- res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME_T, &val);
- if((CURLE_OK == res) && (val>0))
- printf("Name lookup time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
- (val / 1000000), (long)(val % 1000000));
-
- /* check for connect time */
- res = curl_easy_getinfo(curl_handle, CURLINFO_CONNECT_TIME_T, &val);
- if((CURLE_OK == res) && (val>0))
- printf("Connect time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
- (val / 1000000), (long)(val % 1000000));
- }
- }
- else {
- fprintf(stderr, "Error while fetching '%s' : %s\n",
- url, curl_easy_strerror(res));
- }
-
- /* cleanup curl stuff */
- curl_easy_cleanup(curl_handle);
-
- /* we're done with libcurl, so clean it up */
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/cookie_interface.c b/components/cronet/third_party/curl_headers/docs/examples/cookie_interface.c
deleted file mode 100644
index 32e9a1d1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/cookie_interface.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Import and export cookies with COOKIELIST.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <time.h>
-
-#include <curl/curl.h>
-
-static void
-print_cookies(CURL *curl)
-{
- CURLcode res;
- struct curl_slist *cookies;
- struct curl_slist *nc;
- int i;
-
- printf("Cookies, curl knows:\n");
- res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
- if(res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
- curl_easy_strerror(res));
- exit(1);
- }
- nc = cookies;
- i = 1;
- while(nc) {
- printf("[%d]: %s\n", i, nc->data);
- nc = nc->next;
- i++;
- }
- if(i == 1) {
- printf("(none)\n");
- }
- curl_slist_free_all(cookies);
-}
-
-int
-main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl_global_init(CURL_GLOBAL_ALL);
- curl = curl_easy_init();
- if(curl) {
- char nline[256];
-
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* start cookie engine */
- res = curl_easy_perform(curl);
- if(res != CURLE_OK) {
- fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
- return 1;
- }
-
- print_cookies(curl);
-
- printf("Erasing curl's knowledge of cookies!\n");
- curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");
-
- print_cookies(curl);
-
- printf("-----------------------------------------------\n"
- "Setting a cookie \"PREF\" via cookie interface:\n");
-#ifdef WIN32
-#define snprintf _snprintf
-#endif
- /* Netscape format cookie */
- snprintf(nline, sizeof(nline), "%s\t%s\t%s\t%s\t%lu\t%s\t%s",
- ".example.com", "TRUE", "/", "FALSE",
- (unsigned long)time(NULL) + 31337UL,
- "PREF", "hello example, i like you very much!");
- res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
- if(res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
- curl_easy_strerror(res));
- return 1;
- }
-
- /* HTTP-header style cookie. If you use the Set-Cookie format and don't
- specify a domain then the cookie is sent for any domain and will not be
- modified, likely not what you intended. Starting in 7.43.0 any-domain
- cookies will not be exported either. For more information refer to the
- CURLOPT_COOKIELIST documentation.
- */
- snprintf(nline, sizeof(nline),
- "Set-Cookie: OLD_PREF=3d141414bf4209321; "
- "expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.example.com");
- res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
- if(res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
- curl_easy_strerror(res));
- return 1;
- }
-
- print_cookies(curl);
-
- res = curl_easy_perform(curl);
- if(res != CURLE_OK) {
- fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
- return 1;
- }
-
- curl_easy_cleanup(curl);
- }
- else {
- fprintf(stderr, "Curl init failed!\n");
- return 1;
- }
-
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/crawler.c b/components/cronet/third_party/curl_headers/docs/examples/crawler.c
deleted file mode 100644
index 496d88c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/crawler.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Web crawler based on curl and libxml2.
- * Copyright (C) 2018 Jeroen Ooms <jeroenooms@gmail.com>
- * License: MIT
- *
- * To compile:
- * gcc crawler.c $(pkg-config --cflags --libs libxml-2.0 libcurl)
- *
- */
-/* <DESC>
- * Web crawler based on curl and libxml2 to stress-test curl with
- * hundreds of concurrent connections to various servers.
- * </DESC>
- */
-
-/* Parameters */
-int max_con = 200;
-int max_total = 20000;
-int max_requests = 500;
-int max_link_per_page = 5;
-int follow_relative_links = 0;
-char *start_page = "https://www.reuters.com";
-
-#include <libxml/HTMLparser.h>
-#include <libxml/xpath.h>
-#include <libxml/uri.h>
-#include <curl/curl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <signal.h>
-
-int pending_interrupt = 0;
-void sighandler(int dummy)
-{
- pending_interrupt = 1;
-}
-
-/* resizable buffer */
-typedef struct {
- char *buf;
- size_t size;
-} memory;
-
-size_t grow_buffer(void *contents, size_t sz, size_t nmemb, void *ctx)
-{
- size_t realsize = sz * nmemb;
- memory *mem = (memory*) ctx;
- char *ptr = realloc(mem->buf, mem->size + realsize);
- if(!ptr) {
- /* out of memory */
- printf("not enough memory (realloc returned NULL)\n");
- return 0;
- }
- mem->buf = ptr;
- memcpy(&(mem->buf[mem->size]), contents, realsize);
- mem->size += realsize;
- return realsize;
-}
-
-CURL *make_handle(char *url)
-{
- CURL *handle = curl_easy_init();
-
- /* Important: use HTTP2 over HTTPS */
- curl_easy_setopt(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
- curl_easy_setopt(handle, CURLOPT_URL, url);
-
- /* buffer body */
- memory *mem = malloc(sizeof(memory));
- mem->size = 0;
- mem->buf = malloc(1);
- curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, grow_buffer);
- curl_easy_setopt(handle, CURLOPT_WRITEDATA, mem);
- curl_easy_setopt(handle, CURLOPT_PRIVATE, mem);
-
- /* For completeness */
- curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "");
- curl_easy_setopt(handle, CURLOPT_TIMEOUT, 5L);
- curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L);
- curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 10L);
- curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 2L);
- curl_easy_setopt(handle, CURLOPT_COOKIEFILE, "");
- curl_easy_setopt(handle, CURLOPT_FILETIME, 1L);
- curl_easy_setopt(handle, CURLOPT_USERAGENT, "mini crawler");
- curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
- curl_easy_setopt(handle, CURLOPT_UNRESTRICTED_AUTH, 1L);
- curl_easy_setopt(handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
- curl_easy_setopt(handle, CURLOPT_EXPECT_100_TIMEOUT_MS, 0L);
- return handle;
-}
-
-/* HREF finder implemented in libxml2 but could be any HTML parser */
-size_t follow_links(CURLM *multi_handle, memory *mem, char *url)
-{
- int opts = HTML_PARSE_NOBLANKS | HTML_PARSE_NOERROR | \
- HTML_PARSE_NOWARNING | HTML_PARSE_NONET;
- htmlDocPtr doc = htmlReadMemory(mem->buf, mem->size, url, NULL, opts);
- if(!doc)
- return 0;
- xmlChar *xpath = (xmlChar*) "//a/@href";
- xmlXPathContextPtr context = xmlXPathNewContext(doc);
- xmlXPathObjectPtr result = xmlXPathEvalExpression(xpath, context);
- xmlXPathFreeContext(context);
- if(!result)
- return 0;
- xmlNodeSetPtr nodeset = result->nodesetval;
- if(xmlXPathNodeSetIsEmpty(nodeset)) {
- xmlXPathFreeObject(result);
- return 0;
- }
- size_t count = 0;
- for(int i = 0; i < nodeset->nodeNr; i++) {
- double r = rand();
- int x = r * nodeset->nodeNr / RAND_MAX;
- const xmlNode *node = nodeset->nodeTab[x]->xmlChildrenNode;
- xmlChar *href = xmlNodeListGetString(doc, node, 1);
- if(follow_relative_links) {
- xmlChar *orig = href;
- href = xmlBuildURI(href, (xmlChar *) url);
- xmlFree(orig);
- }
- char *link = (char *) href;
- if(!link || strlen(link) < 20)
- continue;
- if(!strncmp(link, "http://", 7) || !strncmp(link, "https://", 8)) {
- curl_multi_add_handle(multi_handle, make_handle(link));
- if(count++ == max_link_per_page)
- break;
- }
- xmlFree(link);
- }
- xmlXPathFreeObject(result);
- return count;
-}
-
-int is_html(char *ctype)
-{
- return ctype != NULL && strlen(ctype) > 10 && strstr(ctype, "text/html");
-}
-
-int main(void)
-{
- signal(SIGINT, sighandler);
- LIBXML_TEST_VERSION;
- curl_global_init(CURL_GLOBAL_DEFAULT);
- CURLM *multi_handle = curl_multi_init();
- curl_multi_setopt(multi_handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, max_con);
- curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 6L);
-
- /* enables http/2 if available */
-#ifdef CURLPIPE_MULTIPLEX
- curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-#endif
-
- /* sets html start page */
- curl_multi_add_handle(multi_handle, make_handle(start_page));
-
- int msgs_left;
- int pending = 0;
- int complete = 0;
- int still_running = 1;
- while(still_running && !pending_interrupt) {
- int numfds;
- curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
- curl_multi_perform(multi_handle, &still_running);
-
- /* See how the transfers went */
- CURLMsg *m = NULL;
- while((m = curl_multi_info_read(multi_handle, &msgs_left))) {
- if(m->msg == CURLMSG_DONE) {
- CURL *handle = m->easy_handle;
- char *url;
- memory *mem;
- curl_easy_getinfo(handle, CURLINFO_PRIVATE, &mem);
- curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, &url);
- if(m->data.result == CURLE_OK) {
- long res_status;
- curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &res_status);
- if(res_status == 200) {
- char *ctype;
- curl_easy_getinfo(handle, CURLINFO_CONTENT_TYPE, &ctype);
- printf("[%d] HTTP 200 (%s): %s\n", complete, ctype, url);
- if(is_html(ctype) && mem->size > 100) {
- if(pending < max_requests && (complete + pending) < max_total) {
- pending += follow_links(multi_handle, mem, url);
- still_running = 1;
- }
- }
- }
- else {
- printf("[%d] HTTP %d: %s\n", complete, (int) res_status, url);
- }
- }
- else {
- printf("[%d] Connection failure: %s\n", complete, url);
- }
- curl_multi_remove_handle(multi_handle, handle);
- curl_easy_cleanup(handle);
- free(mem->buf);
- free(mem);
- complete++;
- pending--;
- }
- }
- }
- curl_multi_cleanup(multi_handle);
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/curlgtk.c b/components/cronet/third_party/curl_headers/docs/examples/curlgtk.c
deleted file mode 100644
index 4083c8f..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/curlgtk.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*****************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
- */
-/* <DESC>
- * use the libcurl in a gtk-threaded application
- * </DESC>
- */
-
-#include <stdio.h>
-#include <gtk/gtk.h>
-
-#include <curl/curl.h>
-
-GtkWidget *Bar;
-
-size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
- return fwrite(ptr, size, nmemb, stream);
-}
-
-size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
- return fread(ptr, size, nmemb, stream);
-}
-
-int my_progress_func(GtkWidget *bar,
- double t, /* dltotal */
- double d, /* dlnow */
- double ultotal,
- double ulnow)
-{
-/* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/
- gdk_threads_enter();
- gtk_progress_set_value(GTK_PROGRESS(bar), d*100.0/t);
- gdk_threads_leave();
- return 0;
-}
-
-void *my_thread(void *ptr)
-{
- CURL *curl;
-
- curl = curl_easy_init();
- if(curl) {
- gchar *url = ptr;
- const char *filename = "test.curl";
- FILE *outfile = fopen(filename, "wb");
-
- curl_easy_setopt(curl, CURLOPT_URL, url);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func);
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func);
- curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
- curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);
- curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar);
-
- curl_easy_perform(curl);
-
- fclose(outfile);
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return NULL;
-}
-
-int main(int argc, char **argv)
-{
- GtkWidget *Window, *Frame, *Frame2;
- GtkAdjustment *adj;
-
- /* Must initialize libcurl before any threads are started */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* Init thread */
- g_thread_init(NULL);
-
- gtk_init(&argc, &argv);
- Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- Frame = gtk_frame_new(NULL);
- gtk_frame_set_shadow_type(GTK_FRAME(Frame), GTK_SHADOW_OUT);
- gtk_container_add(GTK_CONTAINER(Window), Frame);
- Frame2 = gtk_frame_new(NULL);
- gtk_frame_set_shadow_type(GTK_FRAME(Frame2), GTK_SHADOW_IN);
- gtk_container_add(GTK_CONTAINER(Frame), Frame2);
- gtk_container_set_border_width(GTK_CONTAINER(Frame2), 5);
- adj = (GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
- Bar = gtk_progress_bar_new_with_adjustment(adj);
- gtk_container_add(GTK_CONTAINER(Frame2), Bar);
- gtk_widget_show_all(Window);
-
- if(!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
- g_warning("can't create the thread");
-
-
- gdk_threads_enter();
- gtk_main();
- gdk_threads_leave();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/curlx.c b/components/cronet/third_party/curl_headers/docs/examples/curlx.c
deleted file mode 100644
index df4ab3f..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/curlx.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- curlx.c Authors: Peter Sylvester, Jean-Paul Merlin
-
- This is a little program to demonstrate the usage of
-
- - an ssl initialisation callback setting a user key and trustbases
- coming from a pkcs12 file
- - using an ssl application callback to find a URI in the
- certificate presented during ssl session establishment.
-
-*/
-/* <DESC>
- * demonstrates use of SSL context callback, requires OpenSSL
- * </DESC>
- */
-
-/*
- * Copyright (c) 2003 The OpenEvidence Project. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions, the following disclaimer,
- * and the original OpenSSL and SSLeay Licences below.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions, the following disclaimer
- * and the original OpenSSL and SSLeay Licences below in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgments:
- * "This product includes software developed by the Openevidence Project
- * for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com)."
- *
- * 4. The names "OpenEvidence Toolkit" and "OpenEvidence Project" must not be
- * used to endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * openevidence-core@openevidence.org.
- *
- * 5. Products derived from this software may not be called "OpenEvidence"
- * nor may "OpenEvidence" appear in their names without prior written
- * permission of the OpenEvidence Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgments:
- * "This product includes software developed by the OpenEvidence Project
- * for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com)."
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenEvidence PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenEvidence PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <curl/curl.h>
-#include <openssl/x509v3.h>
-#include <openssl/x509_vfy.h>
-#include <openssl/crypto.h>
-#include <openssl/lhash.h>
-#include <openssl/objects.h>
-#include <openssl/err.h>
-#include <openssl/evp.h>
-#include <openssl/x509.h>
-#include <openssl/pkcs12.h>
-#include <openssl/bio.h>
-#include <openssl/ssl.h>
-
-static const char *curlx_usage[]={
- "usage: curlx args\n",
- " -p12 arg - tia file ",
- " -envpass arg - environment variable which content the tia private"
- " key password",
- " -out arg - output file (response)- default stdout",
- " -in arg - input file (request)- default stdin",
- " -connect arg - URL of the server for the connection ex:"
- " www.openevidence.org",
- " -mimetype arg - MIME type for data in ex : application/timestamp-query"
- " or application/dvcs -default application/timestamp-query",
- " -acceptmime arg - MIME type acceptable for the response ex : "
- "application/timestamp-response or application/dvcs -default none",
- " -accesstype arg - an Object identifier in an AIA/SIA method, e.g."
- " AD_DVCS or ad_timestamping",
- NULL
-};
-
-/*
-
-./curlx -p12 psy.p12 -envpass XX -in request -verbose -accesstype AD_DVCS
--mimetype application/dvcs -acceptmime application/dvcs -out response
-
-*/
-
-/*
- * We use this ZERO_NULL to avoid picky compiler warnings,
- * when assigning a NULL pointer to a function pointer var.
- */
-
-#define ZERO_NULL 0
-
-/* This is a context that we pass to all callbacks */
-
-typedef struct sslctxparm_st {
- unsigned char *p12file;
- const char *pst;
- PKCS12 *p12;
- EVP_PKEY *pkey;
- X509 *usercert;
- STACK_OF(X509) * ca;
- CURL *curl;
- BIO *errorbio;
- int accesstype;
- int verbose;
-
-} sslctxparm;
-
-/* some helper function. */
-
-static char *ia5string(ASN1_IA5STRING *ia5)
-{
- char *tmp;
- if(!ia5 || !ia5->length)
- return NULL;
- tmp = OPENSSL_malloc(ia5->length + 1);
- memcpy(tmp, ia5->data, ia5->length);
- tmp[ia5->length] = 0;
- return tmp;
-}
-
-/* A convenience routine to get an access URI. */
-static unsigned char *my_get_ext(X509 *cert, const int type,
- int extensiontype)
-{
- int i;
- STACK_OF(ACCESS_DESCRIPTION) * accessinfo;
- accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL);
-
- if(!sk_ACCESS_DESCRIPTION_num(accessinfo))
- return NULL;
- for(i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
- ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
- if(OBJ_obj2nid(ad->method) == type) {
- if(ad->location->type == GEN_URI) {
- return ia5string(ad->location->d.ia5);
- }
- return NULL;
- }
- }
- return NULL;
-}
-
-/* This is an application verification call back, it does not
- perform any addition verification but tries to find a URL
- in the presented certificate. If found, this will become
- the URL to be used in the POST.
-*/
-
-static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
-{
- sslctxparm * p = (sslctxparm *) arg;
- int ok;
-
- if(p->verbose > 2)
- BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
-
- ok = X509_verify_cert(ctx);
- if(ok && ctx->cert) {
- unsigned char *accessinfo;
- if(p->verbose > 1)
- X509_print_ex(p->errorbio, ctx->cert, 0, 0);
-
- accessinfo = my_get_ext(ctx->cert, p->accesstype, NID_sinfo_access);
- if(accessinfo) {
- if(p->verbose)
- BIO_printf(p->errorbio, "Setting URL from SIA to: %s\n", accessinfo);
-
- curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
- }
- else if(accessinfo = my_get_ext(ctx->cert, p->accesstype,
- NID_info_access)) {
- if(p->verbose)
- BIO_printf(p->errorbio, "Setting URL from AIA to: %s\n", accessinfo);
-
- curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
- }
- }
- if(p->verbose > 2)
- BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with %d\n", ok);
-
- return ok;
-}
-
-
-/* The SSL initialisation callback. The callback sets:
- - a private key and certificate
- - a trusted ca certificate
- - a preferred cipherlist
- - an application verification callback (the function above)
-*/
-
-static CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm)
-{
- sslctxparm *p = (sslctxparm *) parm;
- SSL_CTX *ctx = (SSL_CTX *) sslctx;
-
- if(!SSL_CTX_use_certificate(ctx, p->usercert)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n");
- goto err;
- }
- if(!SSL_CTX_use_PrivateKey(ctx, p->pkey)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n");
- goto err;
- }
-
- if(!SSL_CTX_check_private_key(ctx)) {
- BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n");
- goto err;
- }
-
- SSL_CTX_set_quiet_shutdown(ctx, 1);
- SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
- SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
-
- X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx),
- sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
-
- SSL_CTX_set_verify_depth(ctx, 2);
- SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, ZERO_NULL);
- SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);
-
- return CURLE_OK;
- err:
- ERR_print_errors(p->errorbio);
- return CURLE_SSL_CERTPROBLEM;
-
-}
-
-int main(int argc, char **argv)
-{
- BIO* in = NULL;
- BIO* out = NULL;
-
- char *outfile = NULL;
- char *infile = NULL;
-
- int tabLength = 100;
- char *binaryptr;
- char *mimetype;
- char *mimetypeaccept = NULL;
- char *contenttype;
- const char **pp;
- unsigned char *hostporturl = NULL;
- BIO *p12bio;
- char **args = argv + 1;
- unsigned char *serverurl;
- sslctxparm p;
- char *response;
-
- CURLcode res;
- struct curl_slist *headers = NULL;
- int badarg = 0;
-
- binaryptr = malloc(tabLength);
-
- p.verbose = 0;
- p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- /* we need some more for the P12 decoding */
-
- OpenSSL_add_all_ciphers();
- OpenSSL_add_all_digests();
- ERR_load_crypto_strings();
-
- while(*args && *args[0] == '-') {
- if(!strcmp (*args, "-in")) {
- if(args[1]) {
- infile = *(++args);
- }
- else
- badarg = 1;
- }
- else if(!strcmp (*args, "-out")) {
- if(args[1]) {
- outfile = *(++args);
- }
- else
- badarg = 1;
- }
- else if(!strcmp (*args, "-p12")) {
- if(args[1]) {
- p.p12file = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-envpass") == 0) {
- if(args[1]) {
- p.pst = getenv(*(++args));
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-connect") == 0) {
- if(args[1]) {
- hostporturl = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-mimetype") == 0) {
- if(args[1]) {
- mimetype = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-acceptmime") == 0) {
- if(args[1]) {
- mimetypeaccept = *(++args);
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-accesstype") == 0) {
- if(args[1]) {
- p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0));
- if(p.accesstype == 0)
- badarg = 1;
- }
- else
- badarg = 1;
- }
- else if(strcmp(*args, "-verbose") == 0) {
- p.verbose++;
- }
- else
- badarg = 1;
- args++;
- }
-
- if(mimetype == NULL || mimetypeaccept == NULL)
- badarg = 1;
-
- if(badarg) {
- for(pp = curlx_usage; (*pp != NULL); pp++)
- BIO_printf(p.errorbio, "%s\n", *pp);
- BIO_printf(p.errorbio, "\n");
- goto err;
- }
-
- /* set input */
-
- in = BIO_new(BIO_s_file());
- if(in == NULL) {
- BIO_printf(p.errorbio, "Error setting input bio\n");
- goto err;
- }
- else if(infile == NULL)
- BIO_set_fp(in, stdin, BIO_NOCLOSE|BIO_FP_TEXT);
- else if(BIO_read_filename(in, infile) <= 0) {
- BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
- BIO_free(in);
- goto err;
- }
-
- /* set output */
-
- out = BIO_new(BIO_s_file());
- if(out == NULL) {
- BIO_printf(p.errorbio, "Error setting output bio.\n");
- goto err;
- }
- else if(outfile == NULL)
- BIO_set_fp(out, stdout, BIO_NOCLOSE|BIO_FP_TEXT);
- else if(BIO_write_filename(out, outfile) <= 0) {
- BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
- BIO_free(out);
- goto err;
- }
-
-
- p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
-
- p.curl = curl_easy_init();
- if(!p.curl) {
- BIO_printf(p.errorbio, "Cannot init curl lib\n");
- goto err;
- }
-
- p12bio = BIO_new_file(p.p12file, "rb");
- if(!p12bio) {
- BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file);
- goto err;
- }
- p.p12 = d2i_PKCS12_bio(p12bio, NULL);
- if(!p.p12) {
- BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file);
- goto err;
- }
-
- p.ca = NULL;
- if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
- BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
- goto err;
- }
-
- if(sk_X509_num(p.ca) <= 0) {
- BIO_printf(p.errorbio, "No trustworthy CA given.%s\n", p.p12file);
- goto err;
- }
-
- if(p.verbose > 1)
- X509_print_ex(p.errorbio, p.usercert, 0, 0);
-
- /* determine URL to go */
-
- if(hostporturl) {
- size_t len = strlen(hostporturl) + 9;
- serverurl = malloc(len);
- snprintf(serverurl, len, "https://%s", hostporturl);
- }
- else if(p.accesstype != 0) { /* see whether we can find an AIA or SIA for a
- given access type */
- serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access);
- if(!serverurl) {
- int j = 0;
- BIO_printf(p.errorbio, "no service URL in user cert "
- "cherching in others certificats\n");
- for(j = 0; j<sk_X509_num(p.ca); j++) {
- serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
- NID_info_access);
- if(serverurl)
- break;
- serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
- NID_sinfo_access);
- if(serverurl)
- break;
- }
- }
- }
-
- if(!serverurl) {
- BIO_printf(p.errorbio, "no service URL in certificats,"
- " check '-accesstype (AD_DVCS | ad_timestamping)'"
- " or use '-connect'\n");
- goto err;
- }
-
- if(p.verbose)
- BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
-
- curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);
-
- /* Now specify the POST binary data */
-
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
-
- /* pass our list of custom made headers */
-
- contenttype = malloc(15 + strlen(mimetype));
- snprintf(contenttype, 15 + strlen(mimetype), "Content-type: %s", mimetype);
- headers = curl_slist_append(headers, contenttype);
- curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
-
- if(p.verbose)
- BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
-
- {
- FILE *outfp;
- BIO_get_fp(out, &outfp);
- curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
- }
-
- res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun);
-
- if(res != CURLE_OK)
- BIO_printf(p.errorbio, "%d %s=%d %d\n", __LINE__,
- "CURLOPT_SSL_CTX_FUNCTION", CURLOPT_SSL_CTX_FUNCTION, res);
-
- curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
-
- {
- char *ptr;
- int lu; int i = 0;
- while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) {
- i += lu;
- if(i == tabLength) {
- tabLength += 100;
- ptr = realloc(binaryptr, tabLength); /* should be more careful */
- if(!ptr) {
- /* out of memory */
- BIO_printf(p.errorbio, "out of memory (realloc returned NULL)\n");
- goto fail;
- }
- binaryptr = ptr;
- ptr = NULL;
- }
- }
- tabLength = i;
- }
- /* Now specify the POST binary data */
-
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
-
-
- /* Perform the request, res will get the return code */
-
- BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
- res = curl_easy_perform(p.curl));
- {
- curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
- if(mimetypeaccept && p.verbose) {
- if(!strcmp(mimetypeaccept, response))
- BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
- response);
- else
- BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
- "mime type, it is %s instead of %s\n",
- response, mimetypeaccept);
- }
- }
-
- /*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
-
-/* free the header list*/
-fail:
- curl_slist_free_all(headers);
-
- /* always cleanup */
- curl_easy_cleanup(p.curl);
-
- BIO_free(in);
- BIO_free(out);
- return (EXIT_SUCCESS);
-
- err: BIO_printf(p.errorbio, "error");
- exit(1);
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/debug.c b/components/cronet/third_party/curl_headers/docs/examples/debug.c
deleted file mode 100644
index 884184a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/debug.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Show how CURLOPT_DEBUGFUNCTION can be used.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-struct data {
- char trace_ascii; /* 1 or 0 */
-};
-
-static
-void dump(const char *text,
- FILE *stream, unsigned char *ptr, size_t size,
- char nohex)
-{
- size_t i;
- size_t c;
-
- unsigned int width = 0x10;
-
- if(nohex)
- /* without the hex output, we can fit more on screen */
- width = 0x40;
-
- fprintf(stream, "%s, %10.10lu bytes (0x%8.8lx)\n",
- text, (unsigned long)size, (unsigned long)size);
-
- for(i = 0; i<size; i += width) {
-
- fprintf(stream, "%4.4lx: ", (unsigned long)i);
-
- if(!nohex) {
- /* hex not disabled, show it */
- for(c = 0; c < width; c++)
- if(i + c < size)
- fprintf(stream, "%02x ", ptr[i + c]);
- else
- fputs(" ", stream);
- }
-
- for(c = 0; (c < width) && (i + c < size); c++) {
- /* check for 0D0A; if found, skip past and start a new line of output */
- if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
- ptr[i + c + 1] == 0x0A) {
- i += (c + 2 - width);
- break;
- }
- fprintf(stream, "%c",
- (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
- /* check again for 0D0A, to avoid an extra \n if it's at width */
- if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
- ptr[i + c + 2] == 0x0A) {
- i += (c + 3 - width);
- break;
- }
- }
- fputc('\n', stream); /* newline */
- }
- fflush(stream);
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
- char *data, size_t size,
- void *userp)
-{
- struct data *config = (struct data *)userp;
- const char *text;
- (void)handle; /* prevent compiler warning */
-
- switch(type) {
- case CURLINFO_TEXT:
- fprintf(stderr, "== Info: %s", data);
- /* FALLTHROUGH */
- default: /* in case a new one is introduced to shock us */
- return 0;
-
- case CURLINFO_HEADER_OUT:
- text = "=> Send header";
- break;
- case CURLINFO_DATA_OUT:
- text = "=> Send data";
- break;
- case CURLINFO_SSL_DATA_OUT:
- text = "=> Send SSL data";
- break;
- case CURLINFO_HEADER_IN:
- text = "<= Recv header";
- break;
- case CURLINFO_DATA_IN:
- text = "<= Recv data";
- break;
- case CURLINFO_SSL_DATA_IN:
- text = "<= Recv SSL data";
- break;
- }
-
- dump(text, stderr, (unsigned char *)data, size, config->trace_ascii);
- return 0;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct data config;
-
- config.trace_ascii = 1; /* enable ascii tracing */
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
- curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &config);
-
- /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* example.com is redirected, so we tell libcurl to follow redirection */
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ephiperfifo.c b/components/cronet/third_party/curl_headers/docs/examples/ephiperfifo.c
deleted file mode 100644
index bc4b0f0..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ephiperfifo.c
+++ /dev/null
@@ -1,551 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket API usage with epoll and timerfd
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- * download many files at once.
- *
- * This example features the same basic functionality as hiperfifo.c does,
- * but this uses epoll and timerfd instead of libevent.
- *
- * Written by Jeff Pohlmeyer, converted to use epoll by Josh Bialkowski
-
-Requires a linux system with epoll
-
-When running, the program creates the named pipe "hiper.fifo"
-
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
-
-
-Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
-
-Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
-
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
-
-Note:
- For the sake of simplicity, URL length is limited to 1023 char's !
-
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
-
-*/
-
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/epoll.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/timerfd.h>
-#include <sys/types.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-
-#ifdef __GNUC__
-#define _Unused __attribute__((unused))
-#else
-#define _Unused
-#endif
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
- int epfd; /* epoll filedescriptor */
- int tfd; /* timer filedescriptor */
- int fifofd; /* fifo filedescriptor */
- CURLM *multi;
- int still_running;
- FILE *input;
-} GlobalInfo;
-
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
- CURL *easy;
- char *url;
- GlobalInfo *global;
- char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo
-{
- curl_socket_t sockfd;
- CURL *easy;
- int action;
- long timeout;
- GlobalInfo *global;
-} SockInfo;
-
-#define __case(code) \
- case code: s = __STRING(code)
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
- if(CURLM_OK != code) {
- const char *s;
- switch(code) {
- __case(CURLM_BAD_HANDLE); break;
- __case(CURLM_BAD_EASY_HANDLE); break;
- __case(CURLM_OUT_OF_MEMORY); break;
- __case(CURLM_INTERNAL_ERROR); break;
- __case(CURLM_UNKNOWN_OPTION); break;
- __case(CURLM_LAST); break;
- default: s = "CURLM_unknown"; break;
- __case(CURLM_BAD_SOCKET);
- fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
- /* ignore this error */
- return;
- }
- fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
- exit(code);
- }
-}
-
-static void timer_cb(GlobalInfo* g, int revents);
-
-/* Update the timer after curl_multi library does it's thing. Curl will
- * inform us through this callback what it wants the new timeout to be,
- * after it does some work. */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
-{
- struct itimerspec its;
-
- fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
-
- if(timeout_ms > 0) {
- its.it_interval.tv_sec = 1;
- its.it_interval.tv_nsec = 0;
- its.it_value.tv_sec = timeout_ms / 1000;
- its.it_value.tv_nsec = (timeout_ms % 1000) * 1000 * 1000;
- }
- else if(timeout_ms == 0) {
- /* libcurl wants us to timeout now, however setting both fields of
- * new_value.it_value to zero disarms the timer. The closest we can
- * do is to schedule the timer to fire in 1 ns. */
- its.it_interval.tv_sec = 1;
- its.it_interval.tv_nsec = 0;
- its.it_value.tv_sec = 0;
- its.it_value.tv_nsec = 1;
- }
- else {
- memset(&its, 0, sizeof(struct itimerspec));
- }
-
- timerfd_settime(g->tfd, /*flags=*/0, &its, NULL);
- return 0;
-}
-
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
- char *eff_url;
- CURLMsg *msg;
- int msgs_left;
- ConnInfo *conn;
- CURL *easy;
- CURLcode res;
-
- fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- easy = msg->easy_handle;
- res = msg->data.result;
- curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
- curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
- fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
- curl_multi_remove_handle(g->multi, easy);
- free(conn->url);
- curl_easy_cleanup(easy);
- free(conn);
- }
- }
-}
-
-/* Called by libevent when we get action on a multi socket filedescriptor*/
-static void event_cb(GlobalInfo *g, int fd, int revents)
-{
- CURLMcode rc;
- struct itimerspec its;
-
- int action = ((revents & EPOLLIN) ? CURL_CSELECT_IN : 0) |
- ((revents & EPOLLOUT) ? CURL_CSELECT_OUT : 0);
-
- rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
- mcode_or_die("event_cb: curl_multi_socket_action", rc);
-
- check_multi_info(g);
- if(g->still_running <= 0) {
- fprintf(MSG_OUT, "last transfer done, kill timeout\n");
- memset(&its, 0, sizeof(struct itimerspec));
- timerfd_settime(g->tfd, 0, &its, NULL);
- }
-}
-
-/* Called by main loop when our timeout expires */
-static void timer_cb(GlobalInfo* g, int revents)
-{
- CURLMcode rc;
- uint64_t count = 0;
- ssize_t err = 0;
-
- err = read(g->tfd, &count, sizeof(uint64_t));
- if(err == -1) {
- /* Note that we may call the timer callback even if the timerfd isn't
- * readable. It's possible that there are multiple events stored in the
- * epoll buffer (i.e. the timer may have fired multiple times). The
- * event count is cleared after the first call so future events in the
- * epoll buffer will fail to read from the timer. */
- if(errno == EAGAIN) {
- fprintf(MSG_OUT, "EAGAIN on tfd %d\n", g->tfd);
- return;
- }
- }
- if(err != sizeof(uint64_t)) {
- fprintf(stderr, "read(tfd) == %ld", err);
- perror("read(tfd)");
- }
-
- rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
- mcode_or_die("timer_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
-}
-
-
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f, GlobalInfo* g)
-{
- if(f) {
- if(f->sockfd) {
- if(epoll_ctl(g->epfd, EPOLL_CTL_DEL, f->sockfd, NULL))
- fprintf(stderr, "EPOLL_CTL_DEL failed for fd: %d : %s\n",
- f->sockfd, strerror(errno));
- }
- free(f);
- }
-}
-
-
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
- GlobalInfo *g)
-{
- struct epoll_event ev;
- int kind = ((act & CURL_POLL_IN) ? EPOLLIN : 0) |
- ((act & CURL_POLL_OUT) ? EPOLLOUT : 0);
-
- if(f->sockfd) {
- if(epoll_ctl(g->epfd, EPOLL_CTL_DEL, f->sockfd, NULL))
- fprintf(stderr, "EPOLL_CTL_DEL failed for fd: %d : %s\n",
- f->sockfd, strerror(errno));
- }
-
- f->sockfd = s;
- f->action = act;
- f->easy = e;
-
- ev.events = kind;
- ev.data.fd = s;
- if(epoll_ctl(g->epfd, EPOLL_CTL_ADD, s, &ev))
- fprintf(stderr, "EPOLL_CTL_ADD failed for fd: %d : %s\n",
- s, strerror(errno));
-}
-
-
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
- SockInfo *fdp = (SockInfo*)calloc(sizeof(SockInfo), 1);
-
- fdp->global = g;
- setsock(fdp, s, easy, action, g);
- curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
- GlobalInfo *g = (GlobalInfo*) cbp;
- SockInfo *fdp = (SockInfo*) sockp;
- const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
-
- fprintf(MSG_OUT,
- "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if(what == CURL_POLL_REMOVE) {
- fprintf(MSG_OUT, "\n");
- remsock(fdp, g);
- }
- else {
- if(!fdp) {
- fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
- addsock(s, e, what, g);
- }
- else {
- fprintf(MSG_OUT,
- "Changing action from %s to %s\n",
- whatstr[fdp->action], whatstr[what]);
- setsock(fdp, s, e, what, g);
- }
- }
- return 0;
-}
-
-
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
- void *data)
-{
- size_t realsize = size * nmemb;
- (void)_Unused;
- (void)data;
-
- return realsize;
-}
-
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
- double uln _Unused)
-{
- ConnInfo *conn = (ConnInfo *)p;
-
- fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
- return 0;
-}
-
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
- ConnInfo *conn;
- CURLMcode rc;
-
- conn = (ConnInfo*)calloc(1, sizeof(ConnInfo));
- conn->error[0]='\0';
-
- conn->easy = curl_easy_init();
- if(!conn->easy) {
- fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
- exit(2);
- }
- conn->global = g;
- conn->url = strdup(url);
- curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
- curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
- curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
- fprintf(MSG_OUT,
- "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
- rc = curl_multi_add_handle(g->multi, conn->easy);
- mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
- /* note that the add_handle() will set a time-out to trigger very soon so
- that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called whenever data is received from the fifo */
-static void fifo_cb(GlobalInfo* g, int revents)
-{
- char s[1024];
- long int rv = 0;
- int n = 0;
-
- do {
- s[0]='\0';
- rv = fscanf(g->input, "%1023s%n", s, &n);
- s[n]='\0';
- if(n && s[0]) {
- new_conn(s, g); /* if we read a URL, go get it! */
- }
- else
- break;
- } while(rv != EOF);
-}
-
-/* Create a named pipe and tell libevent to monitor it */
-static const char *fifo = "hiper.fifo";
-static int init_fifo(GlobalInfo *g)
-{
- struct stat st;
- curl_socket_t sockfd;
- struct epoll_event epev;
-
- fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if(lstat (fifo, &st) == 0) {
- if((st.st_mode & S_IFMT) == S_IFREG) {
- errno = EEXIST;
- perror("lstat");
- exit(1);
- }
- }
- unlink(fifo);
- if(mkfifo (fifo, 0600) == -1) {
- perror("mkfifo");
- exit(1);
- }
- sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if(sockfd == -1) {
- perror("open");
- exit(1);
- }
-
- g->fifofd = sockfd;
- g->input = fdopen(sockfd, "r");
-
- epev.events = EPOLLIN;
- epev.data.fd = sockfd;
- epoll_ctl(g->epfd, EPOLL_CTL_ADD, sockfd, &epev);
-
- fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
- return 0;
-}
-
-static void clean_fifo(GlobalInfo *g)
-{
- epoll_ctl(g->epfd, EPOLL_CTL_DEL, g->fifofd, NULL);
- fclose(g->input);
- unlink(fifo);
-}
-
-
-int g_should_exit_ = 0;
-
-void SignalHandler(int signo)
-{
- if(signo == SIGINT) {
- g_should_exit_ = 1;
- }
-}
-
-int main(int argc _Unused, char **argv _Unused)
-{
- GlobalInfo g;
- struct itimerspec its;
- struct epoll_event ev;
- struct epoll_event events[10];
-
- g_should_exit_ = 0;
- signal(SIGINT, SignalHandler);
-
- memset(&g, 0, sizeof(GlobalInfo));
- g.epfd = epoll_create1(EPOLL_CLOEXEC);
- if(g.epfd == -1) {
- perror("epoll_create1 failed");
- exit(1);
- }
-
- g.tfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
- if(g.tfd == -1) {
- perror("timerfd_create failed");
- exit(1);
- }
-
- memset(&its, 0, sizeof(struct itimerspec));
- its.it_interval.tv_sec = 1;
- its.it_value.tv_sec = 1;
- timerfd_settime(g.tfd, 0, &its, NULL);
-
- ev.events = EPOLLIN;
- ev.data.fd = g.tfd;
- epoll_ctl(g.epfd, EPOLL_CTL_ADD, g.tfd, &ev);
-
- init_fifo(&g);
- g.multi = curl_multi_init();
-
- /* setup the generic multi interface options we want */
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
- /* we don't call any curl_multi_socket*() function yet as we have no handles
- added! */
-
- fprintf(MSG_OUT, "Entering wait loop\n");
- fflush(MSG_OUT);
- while(!g_should_exit_) {
- int idx;
- int err = epoll_wait(g.epfd, events,
- sizeof(events)/sizeof(struct epoll_event), 10000);
- if(err == -1) {
- if(errno == EINTR) {
- fprintf(MSG_OUT, "note: wait interrupted\n");
- continue;
- }
- else {
- perror("epoll_wait");
- exit(1);
- }
- }
-
- for(idx = 0; idx < err; ++idx) {
- if(events[idx].data.fd == g.fifofd) {
- fifo_cb(&g, events[idx].events);
- }
- else if(events[idx].data.fd == g.tfd) {
- timer_cb(&g, events[idx].events);
- }
- else {
- event_cb(&g, events[idx].data.fd, events[idx].events);
- }
- }
- }
-
- fprintf(MSG_OUT, "Exiting normally.\n");
- fflush(MSG_OUT);
-
- curl_multi_cleanup(g.multi);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/evhiperfifo.c b/components/cronet/third_party/curl_headers/docs/examples/evhiperfifo.c
deleted file mode 100644
index 4d77d52..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/evhiperfifo.c
+++ /dev/null
@@ -1,448 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket interface together with libev
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- * download many files at once.
- *
- * This example features the same basic functionality as hiperfifo.c does,
- * but this uses libev instead of libevent.
- *
- * Written by Jeff Pohlmeyer, converted to use libev by Markus Koetter
-
-Requires libev and a (POSIX?) system that has mkfifo().
-
-This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
-sample programs.
-
-When running, the program creates the named pipe "hiper.fifo"
-
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
-
-
-Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
-
-Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
-
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
-
-Note:
- For the sake of simplicity, URL length is limited to 1023 char's !
-
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
-
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/poll.h>
-#include <curl/curl.h>
-#include <ev.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-
-#define DPRINT(x...) printf(x)
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
- struct ev_loop *loop;
- struct ev_io fifo_event;
- struct ev_timer timer_event;
- CURLM *multi;
- int still_running;
- FILE *input;
-} GlobalInfo;
-
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
- CURL *easy;
- char *url;
- GlobalInfo *global;
- char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo
-{
- curl_socket_t sockfd;
- CURL *easy;
- int action;
- long timeout;
- struct ev_io ev;
- int evset;
- GlobalInfo *global;
-} SockInfo;
-
-static void timer_cb(EV_P_ struct ev_timer *w, int revents);
-
-/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
-{
- DPRINT("%s %li\n", __PRETTY_FUNCTION__, timeout_ms);
- ev_timer_stop(g->loop, &g->timer_event);
- if(timeout_ms >= 0) {
- /* -1 means delete, other values are timeout times in milliseconds */
- double t = timeout_ms / 1000;
- ev_timer_init(&g->timer_event, timer_cb, t, 0.);
- ev_timer_start(g->loop, &g->timer_event);
- }
- return 0;
-}
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
- if(CURLM_OK != code) {
- const char *s;
- switch(code) {
- case CURLM_BAD_HANDLE:
- s = "CURLM_BAD_HANDLE";
- break;
- case CURLM_BAD_EASY_HANDLE:
- s = "CURLM_BAD_EASY_HANDLE";
- break;
- case CURLM_OUT_OF_MEMORY:
- s = "CURLM_OUT_OF_MEMORY";
- break;
- case CURLM_INTERNAL_ERROR:
- s = "CURLM_INTERNAL_ERROR";
- break;
- case CURLM_UNKNOWN_OPTION:
- s = "CURLM_UNKNOWN_OPTION";
- break;
- case CURLM_LAST:
- s = "CURLM_LAST";
- break;
- default:
- s = "CURLM_unknown";
- break;
- case CURLM_BAD_SOCKET:
- s = "CURLM_BAD_SOCKET";
- fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
- /* ignore this error */
- return;
- }
- fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
- exit(code);
- }
-}
-
-
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
- char *eff_url;
- CURLMsg *msg;
- int msgs_left;
- ConnInfo *conn;
- CURL *easy;
- CURLcode res;
-
- fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- easy = msg->easy_handle;
- res = msg->data.result;
- curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
- curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
- fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
- curl_multi_remove_handle(g->multi, easy);
- free(conn->url);
- curl_easy_cleanup(easy);
- free(conn);
- }
- }
-}
-
-
-
-/* Called by libevent when we get action on a multi socket */
-static void event_cb(EV_P_ struct ev_io *w, int revents)
-{
- DPRINT("%s w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
- GlobalInfo *g = (GlobalInfo*) w->data;
- CURLMcode rc;
-
- int action = ((revents & EV_READ) ? CURL_POLL_IN : 0) |
- ((revents & EV_WRITE) ? CURL_POLL_OUT : 0);
- rc = curl_multi_socket_action(g->multi, w->fd, action, &g->still_running);
- mcode_or_die("event_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
- if(g->still_running <= 0) {
- fprintf(MSG_OUT, "last transfer done, kill timeout\n");
- ev_timer_stop(g->loop, &g->timer_event);
- }
-}
-
-/* Called by libevent when our timeout expires */
-static void timer_cb(EV_P_ struct ev_timer *w, int revents)
-{
- DPRINT("%s w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
-
- GlobalInfo *g = (GlobalInfo *)w->data;
- CURLMcode rc;
-
- rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
- &g->still_running);
- mcode_or_die("timer_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
-}
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f, GlobalInfo *g)
-{
- printf("%s \n", __PRETTY_FUNCTION__);
- if(f) {
- if(f->evset)
- ev_io_stop(g->loop, &f->ev);
- free(f);
- }
-}
-
-
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
- GlobalInfo *g)
-{
- printf("%s \n", __PRETTY_FUNCTION__);
-
- int kind = ((act & CURL_POLL_IN) ? EV_READ : 0) |
- ((act & CURL_POLL_OUT) ? EV_WRITE : 0);
-
- f->sockfd = s;
- f->action = act;
- f->easy = e;
- if(f->evset)
- ev_io_stop(g->loop, &f->ev);
- ev_io_init(&f->ev, event_cb, f->sockfd, kind);
- f->ev.data = g;
- f->evset = 1;
- ev_io_start(g->loop, &f->ev);
-}
-
-
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
- SockInfo *fdp = calloc(sizeof(SockInfo), 1);
-
- fdp->global = g;
- setsock(fdp, s, easy, action, g);
- curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
- DPRINT("%s e %p s %i what %i cbp %p sockp %p\n",
- __PRETTY_FUNCTION__, e, s, what, cbp, sockp);
-
- GlobalInfo *g = (GlobalInfo*) cbp;
- SockInfo *fdp = (SockInfo*) sockp;
- const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE"};
-
- fprintf(MSG_OUT,
- "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if(what == CURL_POLL_REMOVE) {
- fprintf(MSG_OUT, "\n");
- remsock(fdp, g);
- }
- else {
- if(!fdp) {
- fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
- addsock(s, e, what, g);
- }
- else {
- fprintf(MSG_OUT,
- "Changing action from %s to %s\n",
- whatstr[fdp->action], whatstr[what]);
- setsock(fdp, s, e, what, g);
- }
- }
- return 0;
-}
-
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
-{
- size_t realsize = size * nmemb;
- ConnInfo *conn = (ConnInfo*) data;
- (void)ptr;
- (void)conn;
- return realsize;
-}
-
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
- double uln)
-{
- ConnInfo *conn = (ConnInfo *)p;
- (void)ult;
- (void)uln;
-
- fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
- return 0;
-}
-
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
- ConnInfo *conn;
- CURLMcode rc;
-
- conn = calloc(1, sizeof(ConnInfo));
- conn->error[0]='\0';
-
- conn->easy = curl_easy_init();
- if(!conn->easy) {
- fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
- exit(2);
- }
- conn->global = g;
- conn->url = strdup(url);
- curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
- curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
- curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
-
- fprintf(MSG_OUT,
- "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
- rc = curl_multi_add_handle(g->multi, conn->easy);
- mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
- /* note that the add_handle() will set a time-out to trigger very soon so
- that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called whenever data is received from the fifo */
-static void fifo_cb(EV_P_ struct ev_io *w, int revents)
-{
- char s[1024];
- long int rv = 0;
- int n = 0;
- GlobalInfo *g = (GlobalInfo *)w->data;
-
- do {
- s[0]='\0';
- rv = fscanf(g->input, "%1023s%n", s, &n);
- s[n]='\0';
- if(n && s[0]) {
- new_conn(s, g); /* if we read a URL, go get it! */
- }
- else
- break;
- } while(rv != EOF);
-}
-
-/* Create a named pipe and tell libevent to monitor it */
-static int init_fifo(GlobalInfo *g)
-{
- struct stat st;
- static const char *fifo = "hiper.fifo";
- curl_socket_t sockfd;
-
- fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if(lstat (fifo, &st) == 0) {
- if((st.st_mode & S_IFMT) == S_IFREG) {
- errno = EEXIST;
- perror("lstat");
- exit(1);
- }
- }
- unlink(fifo);
- if(mkfifo (fifo, 0600) == -1) {
- perror("mkfifo");
- exit(1);
- }
- sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if(sockfd == -1) {
- perror("open");
- exit(1);
- }
- g->input = fdopen(sockfd, "r");
-
- fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
- ev_io_init(&g->fifo_event, fifo_cb, sockfd, EV_READ);
- ev_io_start(g->loop, &g->fifo_event);
- return (0);
-}
-
-int main(int argc, char **argv)
-{
- GlobalInfo g;
- (void)argc;
- (void)argv;
-
- memset(&g, 0, sizeof(GlobalInfo));
- g.loop = ev_default_loop(0);
-
- init_fifo(&g);
- g.multi = curl_multi_init();
-
- ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
- g.timer_event.data = &g;
- g.fifo_event.data = &g;
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
- /* we don't call any curl_multi_socket*() function yet as we have no handles
- added! */
-
- ev_loop(g.loop, 0);
- curl_multi_cleanup(g.multi);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/externalsocket.c b/components/cronet/third_party/curl_headers/docs/examples/externalsocket.c
deleted file mode 100644
index d89b041..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/externalsocket.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * An example demonstrating how an application can pass in a custom
- * socket to libcurl to use. This example also handles the connect itself.
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <curl/curl.h>
-
-#ifdef WIN32
-#include <windows.h>
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#define close closesocket
-#else
-#include <sys/types.h> /* socket types */
-#include <sys/socket.h> /* socket definitions */
-#include <netinet/in.h>
-#include <arpa/inet.h> /* inet (3) functions */
-#include <unistd.h> /* misc. Unix functions */
-#endif
-
-#include <errno.h>
-
-/* The IP address and port number to connect to */
-#define IPADDR "127.0.0.1"
-#define PORTNUM 80
-
-#ifndef INADDR_NONE
-#define INADDR_NONE 0xffffffff
-#endif
-
-static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
- return written;
-}
-
-static int closecb(void *clientp, curl_socket_t item)
-{
- (void)clientp;
- printf("libcurl wants to close %d now\n", (int)item);
- return 0;
-}
-
-static curl_socket_t opensocket(void *clientp,
- curlsocktype purpose,
- struct curl_sockaddr *address)
-{
- curl_socket_t sockfd;
- (void)purpose;
- (void)address;
- sockfd = *(curl_socket_t *)clientp;
- /* the actual externally set socket is passed in via the OPENSOCKETDATA
- option */
- return sockfd;
-}
-
-static int sockopt_callback(void *clientp, curl_socket_t curlfd,
- curlsocktype purpose)
-{
- (void)clientp;
- (void)curlfd;
- (void)purpose;
- /* This return code was added in libcurl 7.21.5 */
- return CURL_SOCKOPT_ALREADY_CONNECTED;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct sockaddr_in servaddr; /* socket address structure */
- curl_socket_t sockfd;
-
-#ifdef WIN32
- WSADATA wsaData;
- int initwsa = WSAStartup(MAKEWORD(2, 0), &wsaData);
- if(initwsa != 0) {
- printf("WSAStartup failed: %d\n", initwsa);
- return 1;
- }
-#endif
-
- curl = curl_easy_init();
- if(curl) {
- /*
- * Note that libcurl will internally think that you connect to the host
- * and port that you specify in the URL option.
- */
- curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
-
- /* Create the socket "manually" */
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if(sockfd == CURL_SOCKET_BAD) {
- printf("Error creating listening socket.\n");
- return 3;
- }
-
- memset(&servaddr, 0, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons(PORTNUM);
-
- servaddr.sin_addr.s_addr = inet_addr(IPADDR);
- if(INADDR_NONE == servaddr.sin_addr.s_addr) {
- close(sockfd);
- return 2;
- }
-
- if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) ==
- -1) {
- close(sockfd);
- printf("client error: connect: %s\n", strerror(errno));
- return 1;
- }
-
- /* no progress meter please */
- curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
-
- /* send all data to this function */
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
-
- /* call this function to get a socket */
- curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket);
- curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd);
-
- /* call this function to close sockets */
- curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closecb);
- curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &sockfd);
-
- /* call this function to set options for the socket */
- curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
-
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
-
- res = curl_easy_perform(curl);
-
- curl_easy_cleanup(curl);
-
- close(sockfd);
-
- if(res) {
- printf("libcurl error: %d\n", res);
- return 4;
- }
- }
-
-#ifdef WIN32
- WSACleanup();
-#endif
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/fileupload.c b/components/cronet/third_party/curl_headers/docs/examples/fileupload.c
deleted file mode 100644
index 8128608..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/fileupload.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Upload to a file:// URL
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct stat file_info;
- curl_off_t speed_upload, total_time;
- FILE *fd;
-
- fd = fopen("debugit", "rb"); /* open file to upload */
- if(!fd)
- return 1; /* can't continue */
-
- /* to get the file size */
- if(fstat(fileno(fd), &file_info) != 0)
- return 1; /* can't continue */
-
- curl = curl_easy_init();
- if(curl) {
- /* upload to this place */
- curl_easy_setopt(curl, CURLOPT_URL,
- "file:///home/dast/src/curl/debug/new");
-
- /* tell it to "upload" to the URL */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* set where to read from (on Windows you need to use READFUNCTION too) */
- curl_easy_setopt(curl, CURLOPT_READDATA, fd);
-
- /* and give the size of the upload (optional) */
- curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
- (curl_off_t)file_info.st_size);
-
- /* enable verbose for easier tracing */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK) {
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- }
- else {
- /* now extract transfer info */
- curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed_upload);
- curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total_time);
-
- fprintf(stderr, "Speed: %" CURL_FORMAT_CURL_OFF_T " bytes/sec during %"
- CURL_FORMAT_CURL_OFF_T ".%06ld seconds\n",
- speed_upload,
- (total_time / 1000000), (long)(total_time % 1000000));
-
- }
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- fclose(fd);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/fopen.c b/components/cronet/third_party/curl_headers/docs/examples/fopen.c
deleted file mode 100644
index f1706fb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/fopen.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/*****************************************************************************
- *
- * This example source code introduces a c library buffered I/O interface to
- * URL reads it supports fopen(), fread(), fgets(), feof(), fclose(),
- * rewind(). Supported functions have identical prototypes to their normal c
- * lib namesakes and are preceaded by url_ .
- *
- * Using this code you can replace your program's fopen() with url_fopen()
- * and fread() with url_fread() and it become possible to read remote streams
- * instead of (only) local files. Local files (ie those that can be directly
- * fopened) will drop back to using the underlying clib implementations
- *
- * See the main() function at the bottom that shows an app that retrieves from
- * a specified url using fgets() and fread() and saves as two output files.
- *
- * Copyright (c) 2003, 2017 Simtec Electronics
- *
- * Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
- * reference to original curl example code
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This example requires libcurl 7.9.7 or later.
- */
-/* <DESC>
- * implements an fopen() abstraction allowing reading from URLs
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#ifndef WIN32
-# include <sys/time.h>
-#endif
-#include <stdlib.h>
-#include <errno.h>
-
-#include <curl/curl.h>
-
-enum fcurl_type_e {
- CFTYPE_NONE = 0,
- CFTYPE_FILE = 1,
- CFTYPE_CURL = 2
-};
-
-struct fcurl_data
-{
- enum fcurl_type_e type; /* type of handle */
- union {
- CURL *curl;
- FILE *file;
- } handle; /* handle */
-
- char *buffer; /* buffer to store cached data*/
- size_t buffer_len; /* currently allocated buffers length */
- size_t buffer_pos; /* end of data in buffer*/
- int still_running; /* Is background url fetch still in progress */
-};
-
-typedef struct fcurl_data URL_FILE;
-
-/* exported functions */
-URL_FILE *url_fopen(const char *url, const char *operation);
-int url_fclose(URL_FILE *file);
-int url_feof(URL_FILE *file);
-size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
-char *url_fgets(char *ptr, size_t size, URL_FILE *file);
-void url_rewind(URL_FILE *file);
-
-/* we use a global one for convenience */
-static CURLM *multi_handle;
-
-/* curl calls this routine to get more data */
-static size_t write_callback(char *buffer,
- size_t size,
- size_t nitems,
- void *userp)
-{
- char *newbuff;
- size_t rembuff;
-
- URL_FILE *url = (URL_FILE *)userp;
- size *= nitems;
-
- rembuff = url->buffer_len - url->buffer_pos; /* remaining space in buffer */
-
- if(size > rembuff) {
- /* not enough space in buffer */
- newbuff = realloc(url->buffer, url->buffer_len + (size - rembuff));
- if(newbuff == NULL) {
- fprintf(stderr, "callback buffer grow failed\n");
- size = rembuff;
- }
- else {
- /* realloc succeeded increase buffer size*/
- url->buffer_len += size - rembuff;
- url->buffer = newbuff;
- }
- }
-
- memcpy(&url->buffer[url->buffer_pos], buffer, size);
- url->buffer_pos += size;
-
- return size;
-}
-
-/* use to attempt to fill the read buffer up to requested number of bytes */
-static int fill_buffer(URL_FILE *file, size_t want)
-{
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- struct timeval timeout;
- int rc;
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- /* only attempt to fill buffer if transactions still running and buffer
- * doesn't exceed required size already
- */
- if((!file->still_running) || (file->buffer_pos > want))
- return 0;
-
- /* attempt to fill buffer */
- do {
- int maxfd = -1;
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to fail on */
- timeout.tv_sec = 60; /* 1 minute */
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
-
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &file->still_running);
- break;
- }
- } while(file->still_running && (file->buffer_pos < want));
- return 1;
-}
-
-/* use to remove want bytes from the front of a files buffer */
-static int use_buffer(URL_FILE *file, size_t want)
-{
- /* sort out buffer */
- if((file->buffer_pos - want) <= 0) {
- /* ditch buffer - write will recreate */
- free(file->buffer);
- file->buffer = NULL;
- file->buffer_pos = 0;
- file->buffer_len = 0;
- }
- else {
- /* move rest down make it available for later */
- memmove(file->buffer,
- &file->buffer[want],
- (file->buffer_pos - want));
-
- file->buffer_pos -= want;
- }
- return 0;
-}
-
-URL_FILE *url_fopen(const char *url, const char *operation)
-{
- /* this code could check for URLs or types in the 'url' and
- basically use the real fopen() for standard files */
-
- URL_FILE *file;
- (void)operation;
-
- file = calloc(1, sizeof(URL_FILE));
- if(!file)
- return NULL;
-
- file->handle.file = fopen(url, operation);
- if(file->handle.file)
- file->type = CFTYPE_FILE; /* marked as URL */
-
- else {
- file->type = CFTYPE_CURL; /* marked as URL */
- file->handle.curl = curl_easy_init();
-
- curl_easy_setopt(file->handle.curl, CURLOPT_URL, url);
- curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file);
- curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, 0L);
- curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback);
-
- if(!multi_handle)
- multi_handle = curl_multi_init();
-
- curl_multi_add_handle(multi_handle, file->handle.curl);
-
- /* lets start the fetch */
- curl_multi_perform(multi_handle, &file->still_running);
-
- if((file->buffer_pos == 0) && (!file->still_running)) {
- /* if still_running is 0 now, we should return NULL */
-
- /* make sure the easy handle is not in the multi handle anymore */
- curl_multi_remove_handle(multi_handle, file->handle.curl);
-
- /* cleanup */
- curl_easy_cleanup(file->handle.curl);
-
- free(file);
-
- file = NULL;
- }
- }
- return file;
-}
-
-int url_fclose(URL_FILE *file)
-{
- int ret = 0;/* default is good return */
-
- switch(file->type) {
- case CFTYPE_FILE:
- ret = fclose(file->handle.file); /* passthrough */
- break;
-
- case CFTYPE_CURL:
- /* make sure the easy handle is not in the multi handle anymore */
- curl_multi_remove_handle(multi_handle, file->handle.curl);
-
- /* cleanup */
- curl_easy_cleanup(file->handle.curl);
- break;
-
- default: /* unknown or supported type - oh dear */
- ret = EOF;
- errno = EBADF;
- break;
- }
-
- free(file->buffer);/* free any allocated buffer space */
- free(file);
-
- return ret;
-}
-
-int url_feof(URL_FILE *file)
-{
- int ret = 0;
-
- switch(file->type) {
- case CFTYPE_FILE:
- ret = feof(file->handle.file);
- break;
-
- case CFTYPE_CURL:
- if((file->buffer_pos == 0) && (!file->still_running))
- ret = 1;
- break;
-
- default: /* unknown or supported type - oh dear */
- ret = -1;
- errno = EBADF;
- break;
- }
- return ret;
-}
-
-size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
-{
- size_t want;
-
- switch(file->type) {
- case CFTYPE_FILE:
- want = fread(ptr, size, nmemb, file->handle.file);
- break;
-
- case CFTYPE_CURL:
- want = nmemb * size;
-
- fill_buffer(file, want);
-
- /* check if there's data in the buffer - if not fill_buffer()
- * either errored or EOF */
- if(!file->buffer_pos)
- return 0;
-
- /* ensure only available data is considered */
- if(file->buffer_pos < want)
- want = file->buffer_pos;
-
- /* xfer data to caller */
- memcpy(ptr, file->buffer, want);
-
- use_buffer(file, want);
-
- want = want / size; /* number of items */
- break;
-
- default: /* unknown or supported type - oh dear */
- want = 0;
- errno = EBADF;
- break;
-
- }
- return want;
-}
-
-char *url_fgets(char *ptr, size_t size, URL_FILE *file)
-{
- size_t want = size - 1;/* always need to leave room for zero termination */
- size_t loop;
-
- switch(file->type) {
- case CFTYPE_FILE:
- ptr = fgets(ptr, (int)size, file->handle.file);
- break;
-
- case CFTYPE_CURL:
- fill_buffer(file, want);
-
- /* check if there's data in the buffer - if not fill either errored or
- * EOF */
- if(!file->buffer_pos)
- return NULL;
-
- /* ensure only available data is considered */
- if(file->buffer_pos < want)
- want = file->buffer_pos;
-
- /*buffer contains data */
- /* look for newline or eof */
- for(loop = 0; loop < want; loop++) {
- if(file->buffer[loop] == '\n') {
- want = loop + 1;/* include newline */
- break;
- }
- }
-
- /* xfer data to caller */
- memcpy(ptr, file->buffer, want);
- ptr[want] = 0;/* always null terminate */
-
- use_buffer(file, want);
-
- break;
-
- default: /* unknown or supported type - oh dear */
- ptr = NULL;
- errno = EBADF;
- break;
- }
-
- return ptr;/*success */
-}
-
-void url_rewind(URL_FILE *file)
-{
- switch(file->type) {
- case CFTYPE_FILE:
- rewind(file->handle.file); /* passthrough */
- break;
-
- case CFTYPE_CURL:
- /* halt transaction */
- curl_multi_remove_handle(multi_handle, file->handle.curl);
-
- /* restart */
- curl_multi_add_handle(multi_handle, file->handle.curl);
-
- /* ditch buffer - write will recreate - resets stream pos*/
- free(file->buffer);
- file->buffer = NULL;
- file->buffer_pos = 0;
- file->buffer_len = 0;
-
- break;
-
- default: /* unknown or supported type - oh dear */
- break;
- }
-}
-
-#define FGETSFILE "fgets.test"
-#define FREADFILE "fread.test"
-#define REWINDFILE "rewind.test"
-
-/* Small main program to retrieve from a url using fgets and fread saving the
- * output to two test files (note the fgets method will corrupt binary files if
- * they contain 0 chars */
-int main(int argc, char *argv[])
-{
- URL_FILE *handle;
- FILE *outf;
-
- size_t nread;
- char buffer[256];
- const char *url;
-
- if(argc < 2)
- url = "http://192.168.7.3/testfile";/* default to testurl */
- else
- url = argv[1];/* use passed url */
-
- /* copy from url line by line with fgets */
- outf = fopen(FGETSFILE, "wb+");
- if(!outf) {
- perror("couldn't open fgets output file\n");
- return 1;
- }
-
- handle = url_fopen(url, "r");
- if(!handle) {
- printf("couldn't url_fopen() %s\n", url);
- fclose(outf);
- return 2;
- }
-
- while(!url_feof(handle)) {
- url_fgets(buffer, sizeof(buffer), handle);
- fwrite(buffer, 1, strlen(buffer), outf);
- }
-
- url_fclose(handle);
-
- fclose(outf);
-
-
- /* Copy from url with fread */
- outf = fopen(FREADFILE, "wb+");
- if(!outf) {
- perror("couldn't open fread output file\n");
- return 1;
- }
-
- handle = url_fopen("testfile", "r");
- if(!handle) {
- printf("couldn't url_fopen() testfile\n");
- fclose(outf);
- return 2;
- }
-
- do {
- nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer, 1, nread, outf);
- } while(nread);
-
- url_fclose(handle);
-
- fclose(outf);
-
-
- /* Test rewind */
- outf = fopen(REWINDFILE, "wb+");
- if(!outf) {
- perror("couldn't open fread output file\n");
- return 1;
- }
-
- handle = url_fopen("testfile", "r");
- if(!handle) {
- printf("couldn't url_fopen() testfile\n");
- fclose(outf);
- return 2;
- }
-
- nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer, 1, nread, outf);
- url_rewind(handle);
-
- buffer[0]='\n';
- fwrite(buffer, 1, 1, outf);
-
- nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer, 1, nread, outf);
-
- url_fclose(handle);
-
- fclose(outf);
-
- return 0;/* all done */
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftp-wildcard.c b/components/cronet/third_party/curl_headers/docs/examples/ftp-wildcard.c
deleted file mode 100644
index f249bc1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftp-wildcard.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * FTP wildcard pattern matching
- * </DESC>
- */
-#include <curl/curl.h>
-#include <stdio.h>
-
-struct callback_data {
- FILE *output;
-};
-
-static long file_is_coming(struct curl_fileinfo *finfo,
- struct callback_data *data,
- int remains);
-
-static long file_is_downloaded(struct callback_data *data);
-
-static size_t write_it(char *buff, size_t size, size_t nmemb,
- void *cb_data);
-
-int main(int argc, char **argv)
-{
- int rc = CURLE_OK;
-
- /* curl easy handle */
- CURL *handle;
-
- /* help data */
- struct callback_data data = { 0 };
-
- /* global initialization */
- rc = curl_global_init(CURL_GLOBAL_ALL);
- if(rc)
- return rc;
-
- /* initialization of easy handle */
- handle = curl_easy_init();
- if(!handle) {
- curl_global_cleanup();
- return CURLE_OUT_OF_MEMORY;
- }
-
- /* turn on wildcard matching */
- curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
-
- /* callback is called before download of concrete file started */
- curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
-
- /* callback is called after data from the file have been transferred */
- curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
-
- /* this callback will write contents into files */
- curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_it);
-
- /* put transfer data into callbacks */
- curl_easy_setopt(handle, CURLOPT_CHUNK_DATA, &data);
- curl_easy_setopt(handle, CURLOPT_WRITEDATA, &data);
-
- /* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
-
- /* set an URL containing wildcard pattern (only in the last part) */
- if(argc == 2)
- curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
- else
- curl_easy_setopt(handle, CURLOPT_URL, "ftp://example.com/test/*");
-
- /* and start transfer! */
- rc = curl_easy_perform(handle);
-
- curl_easy_cleanup(handle);
- curl_global_cleanup();
- return rc;
-}
-
-static long file_is_coming(struct curl_fileinfo *finfo,
- struct callback_data *data,
- int remains)
-{
- printf("%3d %40s %10luB ", remains, finfo->filename,
- (unsigned long)finfo->size);
-
- switch(finfo->filetype) {
- case CURLFILETYPE_DIRECTORY:
- printf(" DIR\n");
- break;
- case CURLFILETYPE_FILE:
- printf("FILE ");
- break;
- default:
- printf("OTHER\n");
- break;
- }
-
- if(finfo->filetype == CURLFILETYPE_FILE) {
- /* do not transfer files >= 50B */
- if(finfo->size > 50) {
- printf("SKIPPED\n");
- return CURL_CHUNK_BGN_FUNC_SKIP;
- }
-
- data->output = fopen(finfo->filename, "wb");
- if(!data->output) {
- return CURL_CHUNK_BGN_FUNC_FAIL;
- }
- }
-
- return CURL_CHUNK_BGN_FUNC_OK;
-}
-
-static long file_is_downloaded(struct callback_data *data)
-{
- if(data->output) {
- printf("DOWNLOADED\n");
- fclose(data->output);
- data->output = 0x0;
- }
- return CURL_CHUNK_END_FUNC_OK;
-}
-
-static size_t write_it(char *buff, size_t size, size_t nmemb,
- void *cb_data)
-{
- struct callback_data *data = cb_data;
- size_t written = 0;
- if(data->output)
- written = fwrite(buff, size, nmemb, data->output);
- else
- /* listing output */
- written = fwrite(buff, size, nmemb, stdout);
- return written;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpget.c b/components/cronet/third_party/curl_headers/docs/examples/ftpget.c
deleted file mode 100644
index fc7ab4a39..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpget.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Get a single file from an FTP server.
- * </DESC>
- */
-
-struct FtpFile {
- const char *filename;
- FILE *stream;
-};
-
-static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
-{
- struct FtpFile *out = (struct FtpFile *)stream;
- if(!out->stream) {
- /* open file for writing */
- out->stream = fopen(out->filename, "wb");
- if(!out->stream)
- return -1; /* failure, can't open file to write */
- }
- return fwrite(buffer, size, nmemb, out->stream);
-}
-
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct FtpFile ftpfile = {
- "curl.tar.gz", /* name to store the file as if successful */
- NULL
- };
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- /*
- * You better replace the URL with one that works!
- */
- curl_easy_setopt(curl, CURLOPT_URL,
- "ftp://ftp.example.com/curl/curl-7.9.2.tar.gz");
- /* Define our callback to get called when there's data to be written */
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
- /* Set a pointer to our struct to pass to the callback */
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
-
- /* Switch on full protocol/debug output */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- res = curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- if(CURLE_OK != res) {
- /* we failed */
- fprintf(stderr, "curl told us %d\n", res);
- }
- }
-
- if(ftpfile.stream)
- fclose(ftpfile.stream); /* close the local file */
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpgetinfo.c b/components/cronet/third_party/curl_headers/docs/examples/ftpgetinfo.c
deleted file mode 100644
index db16408..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpgetinfo.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Checks a single file's size and mtime from an FTP server.
- * </DESC>
- */
-
-static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
-{
- (void)ptr;
- (void)data;
- /* we are not interested in the headers itself,
- so we only return the size we would have saved ... */
- return (size_t)(size * nmemb);
-}
-
-int main(void)
-{
- char ftpurl[] = "ftp://ftp.example.com/gnu/binutils/binutils-2.19.1.tar.bz2";
- CURL *curl;
- CURLcode res;
- long filetime = -1;
- double filesize = 0.0;
- const char *filename = strrchr(ftpurl, '/') + 1;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, ftpurl);
- /* No download if the file */
- curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
- /* Ask for filetime */
- curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
- curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, throw_away);
- curl_easy_setopt(curl, CURLOPT_HEADER, 0L);
- /* Switch on full protocol/debug output */
- /* curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); */
-
- res = curl_easy_perform(curl);
-
- if(CURLE_OK == res) {
- /* https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
- res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
- if((CURLE_OK == res) && (filetime >= 0)) {
- time_t file_time = (time_t)filetime;
- printf("filetime %s: %s", filename, ctime(&file_time));
- }
- res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
- &filesize);
- if((CURLE_OK == res) && (filesize>0.0))
- printf("filesize %s: %0.0f bytes\n", filename, filesize);
- }
- else {
- /* we failed */
- fprintf(stderr, "curl told us %d\n", res);
- }
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpgetresp.c b/components/cronet/third_party/curl_headers/docs/examples/ftpgetresp.c
deleted file mode 100644
index 7dc34407..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpgetresp.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Similar to ftpget.c but also stores the received response-lines
- * in a separate file using our own callback!
- * </DESC>
- */
-static size_t
-write_response(void *ptr, size_t size, size_t nmemb, void *data)
-{
- FILE *writehere = (FILE *)data;
- return fwrite(ptr, size, nmemb, writehere);
-}
-
-#define FTPBODY "ftp-list"
-#define FTPHEADERS "ftp-responses"
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- FILE *ftpfile;
- FILE *respfile;
-
- /* local file name to store the file as */
- ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */
-
- /* local file name to store the FTP server's response lines in */
- respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */
-
- curl = curl_easy_init();
- if(curl) {
- /* Get a file listing from sunet */
- curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/");
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);
- /* If you intend to use this on windows with a libcurl DLL, you must use
- CURLOPT_WRITEFUNCTION as well */
- curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
- curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile);
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- fclose(ftpfile); /* close the local file */
- fclose(respfile); /* close the response file */
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpsget.c b/components/cronet/third_party/curl_headers/docs/examples/ftpsget.c
deleted file mode 100644
index 91162e62..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpsget.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Get a single file from an FTPS server.
- * </DESC>
- */
-
-struct FtpFile {
- const char *filename;
- FILE *stream;
-};
-
-static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
- void *stream)
-{
- struct FtpFile *out = (struct FtpFile *)stream;
- if(!out->stream) {
- /* open file for writing */
- out->stream = fopen(out->filename, "wb");
- if(!out->stream)
- return -1; /* failure, can't open file to write */
- }
- return fwrite(buffer, size, nmemb, out->stream);
-}
-
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct FtpFile ftpfile = {
- "yourfile.bin", /* name to store the file as if successful */
- NULL
- };
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- /*
- * You better replace the URL with one that works! Note that we use an
- * FTP:// URL with standard explicit FTPS. You can also do FTPS:// URLs if
- * you want to do the rarer kind of transfers: implicit.
- */
- curl_easy_setopt(curl, CURLOPT_URL,
- "ftp://user@server/home/user/file.txt");
- /* Define our callback to get called when there's data to be written */
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
- /* Set a pointer to our struct to pass to the callback */
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
-
- /* We activate SSL and we require it for both control and data */
- curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
-
- /* Switch on full protocol/debug output */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- res = curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- if(CURLE_OK != res) {
- /* we failed */
- fprintf(stderr, "curl told us %d\n", res);
- }
- }
-
- if(ftpfile.stream)
- fclose(ftpfile.stream); /* close the local file */
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpupload.c b/components/cronet/third_party/curl_headers/docs/examples/ftpupload.c
deleted file mode 100644
index bd77bb1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpupload.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#ifdef WIN32
-#include <io.h>
-#else
-#include <unistd.h>
-#endif
-
-/* <DESC>
- * Performs an FTP upload and renames the file just after a successful
- * transfer.
- * </DESC>
- */
-
-#define LOCAL_FILE "/tmp/uploadthis.txt"
-#define UPLOAD_FILE_AS "while-uploading.txt"
-#define REMOTE_URL "ftp://example.com/" UPLOAD_FILE_AS
-#define RENAME_FILE_TO "renamed-and-fine.txt"
-
-/* NOTE: if you want this example to work on Windows with libcurl as a
- DLL, you MUST also provide a read callback with CURLOPT_READFUNCTION.
- Failing to do so will give you a crash since a DLL may not use the
- variable's memory when passed in to it from an app like this. */
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- curl_off_t nread;
- /* in real-world cases, this would probably get this data differently
- as this fread() stuff is exactly what the library already would do
- by default internally */
- size_t retcode = fread(ptr, size, nmemb, stream);
-
- nread = (curl_off_t)retcode;
-
- fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
- " bytes from file\n", nread);
- return retcode;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- FILE *hd_src;
- struct stat file_info;
- curl_off_t fsize;
-
- struct curl_slist *headerlist = NULL;
- static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
- static const char buf_2 [] = "RNTO " RENAME_FILE_TO;
-
- /* get the file size of the local file */
- if(stat(LOCAL_FILE, &file_info)) {
- printf("Couldn't open '%s': %s\n", LOCAL_FILE, strerror(errno));
- return 1;
- }
- fsize = (curl_off_t)file_info.st_size;
-
- printf("Local file size: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", fsize);
-
- /* get a FILE * of the same file */
- hd_src = fopen(LOCAL_FILE, "rb");
-
- /* In windows, this will init the winsock stuff */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* get a curl handle */
- curl = curl_easy_init();
- if(curl) {
- /* build a list of commands to pass to libcurl */
- headerlist = curl_slist_append(headerlist, buf_1);
- headerlist = curl_slist_append(headerlist, buf_2);
-
- /* we want to use our own read function */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
- /* enable uploading */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* specify target */
- curl_easy_setopt(curl, CURLOPT_URL, REMOTE_URL);
-
- /* pass in that last of FTP commands to run after the transfer */
- curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
-
- /* now specify which file to upload */
- curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
-
- /* Set the size of the file to upload (optional). If you give a *_LARGE
- option you MUST make sure that the type of the passed-in argument is a
- curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you must
- make sure that to pass in a type 'long' argument. */
- curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
- (curl_off_t)fsize);
-
- /* Now run off and do what you've been told! */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* clean up the FTP commands list */
- curl_slist_free_all(headerlist);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- fclose(hd_src); /* close the local file */
-
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadfrommem.c b/components/cronet/third_party/curl_headers/docs/examples/ftpuploadfrommem.c
deleted file mode 100644
index 134cda3..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadfrommem.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * FTP upload a file from memory
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-static const char data[]=
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
- "Nam rhoncus odio id venenatis volutpat. Vestibulum dapibus "
- "bibendum ullamcorper. Maecenas finibus elit augue, vel "
- "condimentum odio maximus nec. In hac habitasse platea dictumst. "
- "Vestibulum vel dolor et turpis rutrum finibus ac at nulla. "
- "Vivamus nec neque ac elit blandit pretium vitae maximus ipsum. "
- "Quisque sodales magna vel erat auctor, sed pellentesque nisi "
- "rhoncus. Donec vehicula maximus pretium. Aliquam eu tincidunt "
- "lorem.";
-
-struct WriteThis {
- const char *readptr;
- size_t sizeleft;
-};
-
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct WriteThis *upload = (struct WriteThis *)userp;
- size_t max = size*nmemb;
-
- if(max < 1)
- return 0;
-
- if(upload->sizeleft) {
- size_t copylen = max;
- if(copylen > upload->sizeleft)
- copylen = upload->sizeleft;
- memcpy(ptr, upload->readptr, copylen);
- upload->readptr += copylen;
- upload->sizeleft -= copylen;
- return copylen;
- }
-
- return 0; /* no more data left to deliver */
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- struct WriteThis upload;
-
- upload.readptr = data;
- upload.sizeleft = strlen(data);
-
- /* In windows, this will init the winsock stuff */
- res = curl_global_init(CURL_GLOBAL_DEFAULT);
- /* Check for errors */
- if(res != CURLE_OK) {
- fprintf(stderr, "curl_global_init() failed: %s\n",
- curl_easy_strerror(res));
- return 1;
- }
-
- /* get a curl handle */
- curl = curl_easy_init();
- if(curl) {
- /* First set the URL, the target file */
- curl_easy_setopt(curl, CURLOPT_URL,
- "ftp://example.com/path/to/upload/file");
-
- /* User and password for the FTP login */
- curl_easy_setopt(curl, CURLOPT_USERPWD, "login:secret");
-
- /* Now specify we want to UPLOAD data */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* we want to use our own read function */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
- /* pointer to pass to our read function */
- curl_easy_setopt(curl, CURLOPT_READDATA, &upload);
-
- /* get verbose debug output please */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Set the expected upload size. */
- curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
- (curl_off_t)upload.sizeleft);
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadresume.c b/components/cronet/third_party/curl_headers/docs/examples/ftpuploadresume.c
deleted file mode 100644
index fc7f803..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadresume.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Upload to FTP, resuming failed transfers.
- * </DESC>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* parse headers for Content-Length */
-static size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb,
- void *stream)
-{
- int r;
- long len = 0;
-
- r = sscanf(ptr, "Content-Length: %ld\n", &len);
- if(r)
- *((long *) stream) = len;
-
- return size * nmemb;
-}
-
-/* discard downloaded data */
-static size_t discardfunc(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- (void)ptr;
- (void)stream;
- return size * nmemb;
-}
-
-/* read data to upload */
-static size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- FILE *f = stream;
- size_t n;
-
- if(ferror(f))
- return CURL_READFUNC_ABORT;
-
- n = fread(ptr, size, nmemb, f) * size;
-
- return n;
-}
-
-
-static int upload(CURL *curlhandle, const char *remotepath,
- const char *localpath, long timeout, long tries)
-{
- FILE *f;
- long uploaded_len = 0;
- CURLcode r = CURLE_GOT_NOTHING;
- int c;
-
- f = fopen(localpath, "rb");
- if(!f) {
- perror(NULL);
- return 0;
- }
-
- curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
-
- curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
-
- if(timeout)
- curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
-
- curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
- curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);
-
- curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, discardfunc);
-
- curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
- curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
-
- /* disable passive mode */
- curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-");
- curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
-
- curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
-
- for(c = 0; (r != CURLE_OK) && (c < tries); c++) {
- /* are we resuming? */
- if(c) { /* yes */
- /* determine the length of the file already written */
-
- /*
- * With NOBODY and NOHEADER, libcurl will issue a SIZE
- * command, but the only way to retrieve the result is
- * to parse the returned Content-Length header. Thus,
- * getcontentlengthfunc(). We need discardfunc() above
- * because HEADER will dump the headers to stdout
- * without it.
- */
- curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 1L);
- curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
-
- r = curl_easy_perform(curlhandle);
- if(r != CURLE_OK)
- continue;
-
- curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 0L);
- curl_easy_setopt(curlhandle, CURLOPT_HEADER, 0L);
-
- fseek(f, uploaded_len, SEEK_SET);
-
- curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
- }
- else { /* no */
- curl_easy_setopt(curlhandle, CURLOPT_APPEND, 0L);
- }
-
- r = curl_easy_perform(curlhandle);
- }
-
- fclose(f);
-
- if(r == CURLE_OK)
- return 1;
- else {
- fprintf(stderr, "%s\n", curl_easy_strerror(r));
- return 0;
- }
-}
-
-int main(void)
-{
- CURL *curlhandle = NULL;
-
- curl_global_init(CURL_GLOBAL_ALL);
- curlhandle = curl_easy_init();
-
- upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file",
- 0, 3);
-
- curl_easy_cleanup(curlhandle);
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/getinfo.c b/components/cronet/third_party/curl_headers/docs/examples/getinfo.c
deleted file mode 100644
index d5a820d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/getinfo.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Use getinfo to get content-type after completed transfer.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
- res = curl_easy_perform(curl);
-
- if(CURLE_OK == res) {
- char *ct;
- /* ask for the content-type */
- res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
-
- if((CURLE_OK == res) && ct)
- printf("We received Content-Type: %s\n", ct);
- }
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/getinmemory.c b/components/cronet/third_party/curl_headers/docs/examples/getinmemory.c
deleted file mode 100644
index 130d821..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/getinmemory.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Shows how the write callback function can be used to download data into a
- * chunk of memory instead of storing it in a file.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-struct MemoryStruct {
- char *memory;
- size_t size;
-};
-
-static size_t
-WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
-{
- size_t realsize = size * nmemb;
- struct MemoryStruct *mem = (struct MemoryStruct *)userp;
-
- char *ptr = realloc(mem->memory, mem->size + realsize + 1);
- if(ptr == NULL) {
- /* out of memory! */
- printf("not enough memory (realloc returned NULL)\n");
- return 0;
- }
-
- mem->memory = ptr;
- memcpy(&(mem->memory[mem->size]), contents, realsize);
- mem->size += realsize;
- mem->memory[mem->size] = 0;
-
- return realsize;
-}
-
-int main(void)
-{
- CURL *curl_handle;
- CURLcode res;
-
- struct MemoryStruct chunk;
-
- chunk.memory = malloc(1); /* will be grown as needed by the realloc above */
- chunk.size = 0; /* no data at this point */
-
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* init the curl session */
- curl_handle = curl_easy_init();
-
- /* specify URL to get */
- curl_easy_setopt(curl_handle, CURLOPT_URL, "https://www.example.com/");
-
- /* send all data to this function */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
-
- /* we pass our 'chunk' struct to the callback function */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
-
- /* some servers don't like requests that are made without a user-agent
- field, so we provide one */
- curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
-
- /* get it! */
- res = curl_easy_perform(curl_handle);
-
- /* check for errors */
- if(res != CURLE_OK) {
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
- }
- else {
- /*
- * Now, our chunk.memory points to a memory block that is chunk.size
- * bytes big and contains the remote file.
- *
- * Do something nice with it!
- */
-
- printf("%lu bytes retrieved\n", (unsigned long)chunk.size);
- }
-
- /* cleanup curl stuff */
- curl_easy_cleanup(curl_handle);
-
- free(chunk.memory);
-
- /* we're done with libcurl, so clean it up */
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/getredirect.c b/components/cronet/third_party/curl_headers/docs/examples/getredirect.c
deleted file mode 100644
index 64157f9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/getredirect.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Show how to extract Location: header and URL to redirect to.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- char *location;
- long response_code;
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-
- /* example.com is redirected, figure out the redirection! */
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
- else {
- res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
- if((res == CURLE_OK) &&
- ((response_code / 100) != 3)) {
- /* a redirect implies a 3xx response code */
- fprintf(stderr, "Not a redirect.\n");
- }
- else {
- res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &location);
-
- if((res == CURLE_OK) && location) {
- /* This is the new absolute URL that you could redirect to, even if
- * the Location: response header may have been a relative URL. */
- printf("Redirected to: %s\n", location);
- }
- }
- }
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ghiper.c b/components/cronet/third_party/curl_headers/docs/examples/ghiper.c
deleted file mode 100644
index 1fa3b59..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ghiper.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket API usage together with with glib2
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- * download many files at once.
- *
- * Written by Jeff Pohlmeyer
-
- Requires glib-2.x and a (POSIX?) system that has mkfifo().
-
- This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
- sample programs, adapted to use glib's g_io_channel in place of libevent.
-
- When running, the program creates the named pipe "hiper.fifo"
-
- Whenever there is input into the fifo, the program reads the input as a list
- of URL's and creates some new easy handles to fetch each URL via the
- curl_multi "hiper" API.
-
-
- Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
-
- Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
-
- The fifo buffer is handled almost instantly, so you can even add more URL's
- while the previous requests are still being downloaded.
-
- This is purely a demo app, all retrieved data is simply discarded by the write
- callback.
-
-*/
-
-#include <glib.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <curl/curl.h>
-
-#define MSG_OUT g_print /* Change to "g_error" to write to stderr */
-#define SHOW_VERBOSE 0 /* Set to non-zero for libcurl messages */
-#define SHOW_PROGRESS 0 /* Set to non-zero to enable progress callback */
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo {
- CURLM *multi;
- guint timer_event;
- int still_running;
-} GlobalInfo;
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo {
- CURL *easy;
- char *url;
- GlobalInfo *global;
- char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo {
- curl_socket_t sockfd;
- CURL *easy;
- int action;
- long timeout;
- GIOChannel *ch;
- guint ev;
- GlobalInfo *global;
-} SockInfo;
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
- if(CURLM_OK != code) {
- const char *s;
- switch(code) {
- case CURLM_BAD_HANDLE: s = "CURLM_BAD_HANDLE"; break;
- case CURLM_BAD_EASY_HANDLE: s = "CURLM_BAD_EASY_HANDLE"; break;
- case CURLM_OUT_OF_MEMORY: s = "CURLM_OUT_OF_MEMORY"; break;
- case CURLM_INTERNAL_ERROR: s = "CURLM_INTERNAL_ERROR"; break;
- case CURLM_BAD_SOCKET: s = "CURLM_BAD_SOCKET"; break;
- case CURLM_UNKNOWN_OPTION: s = "CURLM_UNKNOWN_OPTION"; break;
- case CURLM_LAST: s = "CURLM_LAST"; break;
- default: s = "CURLM_unknown";
- }
- MSG_OUT("ERROR: %s returns %s\n", where, s);
- exit(code);
- }
-}
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
- char *eff_url;
- CURLMsg *msg;
- int msgs_left;
- ConnInfo *conn;
- CURL *easy;
- CURLcode res;
-
- MSG_OUT("REMAINING: %d\n", g->still_running);
- while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- easy = msg->easy_handle;
- res = msg->data.result;
- curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
- curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
- MSG_OUT("DONE: %s => (%d) %s\n", eff_url, res, conn->error);
- curl_multi_remove_handle(g->multi, easy);
- free(conn->url);
- curl_easy_cleanup(easy);
- free(conn);
- }
- }
-}
-
-/* Called by glib when our timeout expires */
-static gboolean timer_cb(gpointer data)
-{
- GlobalInfo *g = (GlobalInfo *)data;
- CURLMcode rc;
-
- rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
- mcode_or_die("timer_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
- return FALSE;
-}
-
-/* Update the event timer after curl_multi library calls */
-static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
-{
- struct timeval timeout;
- GlobalInfo *g = (GlobalInfo *)userp;
- timeout.tv_sec = timeout_ms/1000;
- timeout.tv_usec = (timeout_ms%1000)*1000;
-
- MSG_OUT("*** update_timeout_cb %ld => %ld:%ld ***\n",
- timeout_ms, timeout.tv_sec, timeout.tv_usec);
-
- /*
- * if timeout_ms is -1, just delete the timer
- *
- * For other values of timeout_ms, this should set or *update* the timer to
- * the new value
- */
- if(timeout_ms >= 0)
- g->timer_event = g_timeout_add(timeout_ms, timer_cb, g);
- return 0;
-}
-
-/* Called by glib when we get action on a multi socket */
-static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
-{
- GlobalInfo *g = (GlobalInfo*) data;
- CURLMcode rc;
- int fd = g_io_channel_unix_get_fd(ch);
-
- int action =
- ((condition & G_IO_IN) ? CURL_CSELECT_IN : 0) |
- ((condition & G_IO_OUT) ? CURL_CSELECT_OUT : 0);
-
- rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
- mcode_or_die("event_cb: curl_multi_socket_action", rc);
-
- check_multi_info(g);
- if(g->still_running) {
- return TRUE;
- }
- else {
- MSG_OUT("last transfer done, kill timeout\n");
- if(g->timer_event) {
- g_source_remove(g->timer_event);
- }
- return FALSE;
- }
-}
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f)
-{
- if(!f) {
- return;
- }
- if(f->ev) {
- g_source_remove(f->ev);
- }
- g_free(f);
-}
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
- GlobalInfo *g)
-{
- GIOCondition kind =
- ((act & CURL_POLL_IN) ? G_IO_IN : 0) |
- ((act & CURL_POLL_OUT) ? G_IO_OUT : 0);
-
- f->sockfd = s;
- f->action = act;
- f->easy = e;
- if(f->ev) {
- g_source_remove(f->ev);
- }
- f->ev = g_io_add_watch(f->ch, kind, event_cb, g);
-}
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
- SockInfo *fdp = g_malloc0(sizeof(SockInfo));
-
- fdp->global = g;
- fdp->ch = g_io_channel_unix_new(s);
- setsock(fdp, s, easy, action, g);
- curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
- GlobalInfo *g = (GlobalInfo*) cbp;
- SockInfo *fdp = (SockInfo*) sockp;
- static const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
-
- MSG_OUT("socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if(what == CURL_POLL_REMOVE) {
- MSG_OUT("\n");
- remsock(fdp);
- }
- else {
- if(!fdp) {
- MSG_OUT("Adding data: %s%s\n",
- (what & CURL_POLL_IN) ? "READ" : "",
- (what & CURL_POLL_OUT) ? "WRITE" : "");
- addsock(s, e, what, g);
- }
- else {
- MSG_OUT(
- "Changing action from %d to %d\n", fdp->action, what);
- setsock(fdp, s, e, what, g);
- }
- }
- return 0;
-}
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
-{
- size_t realsize = size * nmemb;
- ConnInfo *conn = (ConnInfo*) data;
- (void)ptr;
- (void)conn;
- return realsize;
-}
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
- double uln)
-{
- ConnInfo *conn = (ConnInfo *)p;
- MSG_OUT("Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
- return 0;
-}
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
- ConnInfo *conn;
- CURLMcode rc;
-
- conn = g_malloc0(sizeof(ConnInfo));
- conn->error[0]='\0';
- conn->easy = curl_easy_init();
- if(!conn->easy) {
- MSG_OUT("curl_easy_init() failed, exiting!\n");
- exit(2);
- }
- conn->global = g;
- conn->url = g_strdup(url);
- curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
- curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, (long)SHOW_VERBOSE);
- curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
- curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
- curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, SHOW_PROGRESS?0L:1L);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_CONNECTTIMEOUT, 30L);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 30L);
-
- MSG_OUT("Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
- rc = curl_multi_add_handle(g->multi, conn->easy);
- mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
- /* note that the add_handle() will set a time-out to trigger very soon so
- that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called by glib whenever data is received from the fifo */
-static gboolean fifo_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
-{
-#define BUF_SIZE 1024
- gsize len, tp;
- gchar *buf, *tmp, *all = NULL;
- GIOStatus rv;
-
- do {
- GError *err = NULL;
- rv = g_io_channel_read_line(ch, &buf, &len, &tp, &err);
- if(buf) {
- if(tp) {
- buf[tp]='\0';
- }
- new_conn(buf, (GlobalInfo*)data);
- g_free(buf);
- }
- else {
- buf = g_malloc(BUF_SIZE + 1);
- while(TRUE) {
- buf[BUF_SIZE]='\0';
- g_io_channel_read_chars(ch, buf, BUF_SIZE, &len, &err);
- if(len) {
- buf[len]='\0';
- if(all) {
- tmp = all;
- all = g_strdup_printf("%s%s", tmp, buf);
- g_free(tmp);
- }
- else {
- all = g_strdup(buf);
- }
- }
- else {
- break;
- }
- }
- if(all) {
- new_conn(all, (GlobalInfo*)data);
- g_free(all);
- }
- g_free(buf);
- }
- if(err) {
- g_error("fifo_cb: %s", err->message);
- g_free(err);
- break;
- }
- } while((len) && (rv == G_IO_STATUS_NORMAL));
- return TRUE;
-}
-
-int init_fifo(void)
-{
- struct stat st;
- const char *fifo = "hiper.fifo";
- int socket;
-
- if(lstat (fifo, &st) == 0) {
- if((st.st_mode & S_IFMT) == S_IFREG) {
- errno = EEXIST;
- perror("lstat");
- exit(1);
- }
- }
-
- unlink(fifo);
- if(mkfifo (fifo, 0600) == -1) {
- perror("mkfifo");
- exit(1);
- }
-
- socket = open(fifo, O_RDWR | O_NONBLOCK, 0);
-
- if(socket == -1) {
- perror("open");
- exit(1);
- }
- MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
-
- return socket;
-}
-
-int main(int argc, char **argv)
-{
- GlobalInfo *g;
- GMainLoop*gmain;
- int fd;
- GIOChannel* ch;
- g = g_malloc0(sizeof(GlobalInfo));
-
- fd = init_fifo();
- ch = g_io_channel_unix_new(fd);
- g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
- gmain = g_main_loop_new(NULL, FALSE);
- g->multi = curl_multi_init();
- curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
- curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
- curl_multi_setopt(g->multi, CURLMOPT_TIMERFUNCTION, update_timeout_cb);
- curl_multi_setopt(g->multi, CURLMOPT_TIMERDATA, g);
-
- /* we don't call any curl_multi_socket*() function yet as we have no handles
- added! */
-
- g_main_loop_run(gmain);
- curl_multi_cleanup(g->multi);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/hiperfifo.c b/components/cronet/third_party/curl_headers/docs/examples/hiperfifo.c
deleted file mode 100644
index a50522a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/hiperfifo.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket API usage with libevent 2
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- download many files at once.
-
-Written by Jeff Pohlmeyer
-
-Requires libevent version 2 and a (POSIX?) system that has mkfifo().
-
-This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
-sample programs.
-
-When running, the program creates the named pipe "hiper.fifo"
-
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
-
-
-Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
-
-Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
-
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
-
-Note:
- For the sake of simplicity, URL length is limited to 1023 char's !
-
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
-
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/poll.h>
-#include <curl/curl.h>
-#include <event2/event.h>
-#include <event2/event_struct.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <sys/cdefs.h>
-
-#ifdef __GNUC__
-#define _Unused __attribute__((unused))
-#else
-#define _Unused
-#endif
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
- struct event_base *evbase;
- struct event fifo_event;
- struct event timer_event;
- CURLM *multi;
- int still_running;
- FILE *input;
- int stopped;
-} GlobalInfo;
-
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
- CURL *easy;
- char *url;
- GlobalInfo *global;
- char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo
-{
- curl_socket_t sockfd;
- CURL *easy;
- int action;
- long timeout;
- struct event ev;
- GlobalInfo *global;
-} SockInfo;
-
-#define __case(code) \
- case code: s = __STRING(code)
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
- if(CURLM_OK != code) {
- const char *s;
- switch(code) {
- __case(CURLM_BAD_HANDLE); break;
- __case(CURLM_BAD_EASY_HANDLE); break;
- __case(CURLM_OUT_OF_MEMORY); break;
- __case(CURLM_INTERNAL_ERROR); break;
- __case(CURLM_UNKNOWN_OPTION); break;
- __case(CURLM_LAST); break;
- default: s = "CURLM_unknown"; break;
- __case(CURLM_BAD_SOCKET);
- fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
- /* ignore this error */
- return;
- }
- fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
- exit(code);
- }
-}
-
-
-/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi _Unused, long timeout_ms, GlobalInfo *g)
-{
- struct timeval timeout;
-
- timeout.tv_sec = timeout_ms/1000;
- timeout.tv_usec = (timeout_ms%1000)*1000;
- fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
-
- /*
- * if timeout_ms is -1, just delete the timer
- *
- * For all other values of timeout_ms, this should set or *update* the timer
- * to the new value
- */
- if(timeout_ms == -1)
- evtimer_del(&g->timer_event);
- else /* includes timeout zero */
- evtimer_add(&g->timer_event, &timeout);
- return 0;
-}
-
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
- char *eff_url;
- CURLMsg *msg;
- int msgs_left;
- ConnInfo *conn;
- CURL *easy;
- CURLcode res;
-
- fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- easy = msg->easy_handle;
- res = msg->data.result;
- curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
- curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
- fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
- curl_multi_remove_handle(g->multi, easy);
- free(conn->url);
- curl_easy_cleanup(easy);
- free(conn);
- }
- }
- if(g->still_running == 0 && g->stopped)
- event_base_loopbreak(g->evbase);
-}
-
-
-
-/* Called by libevent when we get action on a multi socket */
-static void event_cb(int fd, short kind, void *userp)
-{
- GlobalInfo *g = (GlobalInfo*) userp;
- CURLMcode rc;
-
- int action =
- ((kind & EV_READ) ? CURL_CSELECT_IN : 0) |
- ((kind & EV_WRITE) ? CURL_CSELECT_OUT : 0);
-
- rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
- mcode_or_die("event_cb: curl_multi_socket_action", rc);
-
- check_multi_info(g);
- if(g->still_running <= 0) {
- fprintf(MSG_OUT, "last transfer done, kill timeout\n");
- if(evtimer_pending(&g->timer_event, NULL)) {
- evtimer_del(&g->timer_event);
- }
- }
-}
-
-
-
-/* Called by libevent when our timeout expires */
-static void timer_cb(int fd _Unused, short kind _Unused, void *userp)
-{
- GlobalInfo *g = (GlobalInfo *)userp;
- CURLMcode rc;
-
- rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
- mcode_or_die("timer_cb: curl_multi_socket_action", rc);
- check_multi_info(g);
-}
-
-
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f)
-{
- if(f) {
- event_del(&f->ev);
- free(f);
- }
-}
-
-
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
- GlobalInfo *g)
-{
- int kind =
- ((act & CURL_POLL_IN) ? EV_READ : 0) |
- ((act & CURL_POLL_OUT) ? EV_WRITE : 0) | EV_PERSIST;
-
- f->sockfd = s;
- f->action = act;
- f->easy = e;
- event_del(&f->ev);
- event_assign(&f->ev, g->evbase, f->sockfd, kind, event_cb, g);
- event_add(&f->ev, NULL);
-}
-
-
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
- SockInfo *fdp = calloc(sizeof(SockInfo), 1);
-
- fdp->global = g;
- setsock(fdp, s, easy, action, g);
- curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
- GlobalInfo *g = (GlobalInfo*) cbp;
- SockInfo *fdp = (SockInfo*) sockp;
- const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
-
- fprintf(MSG_OUT,
- "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if(what == CURL_POLL_REMOVE) {
- fprintf(MSG_OUT, "\n");
- remsock(fdp);
- }
- else {
- if(!fdp) {
- fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
- addsock(s, e, what, g);
- }
- else {
- fprintf(MSG_OUT,
- "Changing action from %s to %s\n",
- whatstr[fdp->action], whatstr[what]);
- setsock(fdp, s, e, what, g);
- }
- }
- return 0;
-}
-
-
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
- void *data)
-{
- size_t realsize = size * nmemb;
- (void)_Unused;
- (void)data;
-
- return realsize;
-}
-
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
- double uln _Unused)
-{
- ConnInfo *conn = (ConnInfo *)p;
-
- fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
- return 0;
-}
-
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
- ConnInfo *conn;
- CURLMcode rc;
-
- conn = calloc(1, sizeof(ConnInfo));
- conn->error[0]='\0';
-
- conn->easy = curl_easy_init();
- if(!conn->easy) {
- fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
- exit(2);
- }
- conn->global = g;
- conn->url = strdup(url);
- curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
- curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
- curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
- curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
- curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
- curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
- fprintf(MSG_OUT,
- "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
- rc = curl_multi_add_handle(g->multi, conn->easy);
- mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
- /* note that the add_handle() will set a time-out to trigger very soon so
- that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called whenever data is received from the fifo */
-static void fifo_cb(int fd _Unused, short event _Unused, void *arg)
-{
- char s[1024];
- long int rv = 0;
- int n = 0;
- GlobalInfo *g = (GlobalInfo *)arg;
-
- do {
- s[0]='\0';
- rv = fscanf(g->input, "%1023s%n", s, &n);
- s[n]='\0';
- if(n && s[0]) {
- if(!strcmp(s, "stop")) {
- g->stopped = 1;
- if(g->still_running == 0)
- event_base_loopbreak(g->evbase);
- }
- else
- new_conn(s, arg); /* if we read a URL, go get it! */
- }
- else
- break;
- } while(rv != EOF);
-}
-
-/* Create a named pipe and tell libevent to monitor it */
-static const char *fifo = "hiper.fifo";
-static int init_fifo(GlobalInfo *g)
-{
- struct stat st;
- curl_socket_t sockfd;
-
- fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if(lstat (fifo, &st) == 0) {
- if((st.st_mode & S_IFMT) == S_IFREG) {
- errno = EEXIST;
- perror("lstat");
- exit(1);
- }
- }
- unlink(fifo);
- if(mkfifo (fifo, 0600) == -1) {
- perror("mkfifo");
- exit(1);
- }
- sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if(sockfd == -1) {
- perror("open");
- exit(1);
- }
- g->input = fdopen(sockfd, "r");
-
- fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
- event_assign(&g->fifo_event, g->evbase, sockfd, EV_READ|EV_PERSIST,
- fifo_cb, g);
- event_add(&g->fifo_event, NULL);
- return (0);
-}
-
-static void clean_fifo(GlobalInfo *g)
-{
- event_del(&g->fifo_event);
- fclose(g->input);
- unlink(fifo);
-}
-
-int main(int argc _Unused, char **argv _Unused)
-{
- GlobalInfo g;
-
- memset(&g, 0, sizeof(GlobalInfo));
- g.evbase = event_base_new();
- init_fifo(&g);
- g.multi = curl_multi_init();
- evtimer_assign(&g.timer_event, g.evbase, timer_cb, &g);
-
- /* setup the generic multi interface options we want */
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
- curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
- curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
- /* we don't call any curl_multi_socket*() function yet as we have no handles
- added! */
-
- event_base_dispatch(g.evbase);
-
- /* this, of course, won't get called since only way to stop this program is
- via ctrl-C, but it is here to show how cleanup /would/ be done. */
- clean_fifo(&g);
- event_del(&g.timer_event);
- event_base_free(g.evbase);
- curl_multi_cleanup(g.multi);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/href_extractor.c b/components/cronet/third_party/curl_headers/docs/examples/href_extractor.c
deleted file mode 100644
index aa2b4381..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/href_extractor.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * Uses the "Streaming HTML parser" to extract the href pieces in a streaming
- * manner from a downloaded HTML.
- * </DESC>
- */
-/*
- * The HTML parser is found at https://github.com/arjunc77/htmlstreamparser
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-#include <htmlstreamparser.h>
-
-
-static size_t write_callback(void *buffer, size_t size, size_t nmemb,
- void *hsp)
-{
- size_t realsize = size * nmemb, p;
- for(p = 0; p < realsize; p++) {
- html_parser_char_parse(hsp, ((char *)buffer)[p]);
- if(html_parser_cmp_tag(hsp, "a", 1))
- if(html_parser_cmp_attr(hsp, "href", 4))
- if(html_parser_is_in(hsp, HTML_VALUE_ENDED)) {
- html_parser_val(hsp)[html_parser_val_length(hsp)] = '\0';
- printf("%s\n", html_parser_val(hsp));
- }
- }
- return realsize;
-}
-
-int main(int argc, char *argv[])
-{
- char tag[1], attr[4], val[128];
- CURL *curl;
- HTMLSTREAMPARSER *hsp;
-
- if(argc != 2) {
- printf("Usage: %s URL\n", argv[0]);
- return EXIT_FAILURE;
- }
-
- curl = curl_easy_init();
-
- hsp = html_parser_init();
-
- html_parser_set_tag_to_lower(hsp, 1);
- html_parser_set_attr_to_lower(hsp, 1);
- html_parser_set_tag_buffer(hsp, tag, sizeof(tag));
- html_parser_set_attr_buffer(hsp, attr, sizeof(attr));
- html_parser_set_val_buffer(hsp, val, sizeof(val)-1);
-
- curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp);
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-
- curl_easy_perform(curl);
-
- curl_easy_cleanup(curl);
-
- html_parser_cleanup(hsp);
-
- return EXIT_SUCCESS;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/htmltidy.c b/components/cronet/third_party/curl_headers/docs/examples/htmltidy.c
deleted file mode 100644
index 1b48e0a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/htmltidy.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Download a document and use libtidy to parse the HTML.
- * </DESC>
- */
-/*
- * LibTidy => https://www.html-tidy.org/
- */
-
-#include <stdio.h>
-#include <tidy.h>
-#include <tidybuffio.h>
-#include <curl/curl.h>
-
-/* curl write callback, to fill tidy's input buffer... */
-uint write_cb(char *in, uint size, uint nmemb, TidyBuffer *out)
-{
- uint r;
- r = size * nmemb;
- tidyBufAppend(out, in, r);
- return r;
-}
-
-/* Traverse the document tree */
-void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
-{
- TidyNode child;
- for(child = tidyGetChild(tnod); child; child = tidyGetNext(child) ) {
- ctmbstr name = tidyNodeGetName(child);
- if(name) {
- /* if it has a name, then it's an HTML tag ... */
- TidyAttr attr;
- printf("%*.*s%s ", indent, indent, "<", name);
- /* walk the attribute list */
- for(attr = tidyAttrFirst(child); attr; attr = tidyAttrNext(attr) ) {
- printf(tidyAttrName(attr));
- tidyAttrValue(attr)?printf("=\"%s\" ",
- tidyAttrValue(attr)):printf(" ");
- }
- printf(">\n");
- }
- else {
- /* if it doesn't have a name, then it's probably text, cdata, etc... */
- TidyBuffer buf;
- tidyBufInit(&buf);
- tidyNodeGetText(doc, child, &buf);
- printf("%*.*s\n", indent, indent, buf.bp?(char *)buf.bp:"");
- tidyBufFree(&buf);
- }
- dumpNode(doc, child, indent + 4); /* recursive */
- }
-}
-
-
-int main(int argc, char **argv)
-{
- if(argc == 2) {
- CURL *curl;
- char curl_errbuf[CURL_ERROR_SIZE];
- TidyDoc tdoc;
- TidyBuffer docbuf = {0};
- TidyBuffer tidy_errbuf = {0};
- int err;
-
- curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
- curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
- curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
-
- tdoc = tidyCreate();
- tidyOptSetBool(tdoc, TidyForceOutput, yes); /* try harder */
- tidyOptSetInt(tdoc, TidyWrapLen, 4096);
- tidySetErrorBuffer(tdoc, &tidy_errbuf);
- tidyBufInit(&docbuf);
-
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
- err = curl_easy_perform(curl);
- if(!err) {
- err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
- if(err >= 0) {
- err = tidyCleanAndRepair(tdoc); /* fix any problems */
- if(err >= 0) {
- err = tidyRunDiagnostics(tdoc); /* load tidy error buffer */
- if(err >= 0) {
- dumpNode(tdoc, tidyGetRoot(tdoc), 0); /* walk the tree */
- fprintf(stderr, "%s\n", tidy_errbuf.bp); /* show errors */
- }
- }
- }
- }
- else
- fprintf(stderr, "%s\n", curl_errbuf);
-
- /* clean-up */
- curl_easy_cleanup(curl);
- tidyBufFree(&docbuf);
- tidyBufFree(&tidy_errbuf);
- tidyRelease(tdoc);
- return err;
-
- }
- else
- printf("usage: %s <url>\n", argv[0]);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/htmltitle.cpp b/components/cronet/third_party/curl_headers/docs/examples/htmltitle.cpp
deleted file mode 100644
index 8148888..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/htmltitle.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Get a web page, extract the title with libxml.
- * </DESC>
-
- Written by Lars Nilsson
-
- GNU C++ compile command line suggestion (edit paths accordingly):
-
- g++ -Wall -I/opt/curl/include -I/opt/libxml/include/libxml2 htmltitle.cpp \
- -o htmltitle -L/opt/curl/lib -L/opt/libxml/lib -lcurl -lxml2
-*/
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <string>
-#include <curl/curl.h>
-#include <libxml/HTMLparser.h>
-
-//
-// Case-insensitive string comparison
-//
-
-#ifdef _MSC_VER
-#define COMPARE(a, b) (!_stricmp((a), (b)))
-#else
-#define COMPARE(a, b) (!strcasecmp((a), (b)))
-#endif
-
-//
-// libxml callback context structure
-//
-
-struct Context
-{
- Context(): addTitle(false) { }
-
- bool addTitle;
- std::string title;
-};
-
-//
-// libcurl variables for error strings and returned data
-
-static char errorBuffer[CURL_ERROR_SIZE];
-static std::string buffer;
-
-//
-// libcurl write callback function
-//
-
-static int writer(char *data, size_t size, size_t nmemb,
- std::string *writerData)
-{
- if(writerData == NULL)
- return 0;
-
- writerData->append(data, size*nmemb);
-
- return size * nmemb;
-}
-
-//
-// libcurl connection initialization
-//
-
-static bool init(CURL *&conn, char *url)
-{
- CURLcode code;
-
- conn = curl_easy_init();
-
- if(conn == NULL) {
- fprintf(stderr, "Failed to create CURL connection\n");
- exit(EXIT_FAILURE);
- }
-
- code = curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, errorBuffer);
- if(code != CURLE_OK) {
- fprintf(stderr, "Failed to set error buffer [%d]\n", code);
- return false;
- }
-
- code = curl_easy_setopt(conn, CURLOPT_URL, url);
- if(code != CURLE_OK) {
- fprintf(stderr, "Failed to set URL [%s]\n", errorBuffer);
- return false;
- }
-
- code = curl_easy_setopt(conn, CURLOPT_FOLLOWLOCATION, 1L);
- if(code != CURLE_OK) {
- fprintf(stderr, "Failed to set redirect option [%s]\n", errorBuffer);
- return false;
- }
-
- code = curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writer);
- if(code != CURLE_OK) {
- fprintf(stderr, "Failed to set writer [%s]\n", errorBuffer);
- return false;
- }
-
- code = curl_easy_setopt(conn, CURLOPT_WRITEDATA, &buffer);
- if(code != CURLE_OK) {
- fprintf(stderr, "Failed to set write data [%s]\n", errorBuffer);
- return false;
- }
-
- return true;
-}
-
-//
-// libxml start element callback function
-//
-
-static void StartElement(void *voidContext,
- const xmlChar *name,
- const xmlChar **attributes)
-{
- Context *context = (Context *)voidContext;
-
- if(COMPARE((char *)name, "TITLE")) {
- context->title = "";
- context->addTitle = true;
- }
- (void) attributes;
-}
-
-//
-// libxml end element callback function
-//
-
-static void EndElement(void *voidContext,
- const xmlChar *name)
-{
- Context *context = (Context *)voidContext;
-
- if(COMPARE((char *)name, "TITLE"))
- context->addTitle = false;
-}
-
-//
-// Text handling helper function
-//
-
-static void handleCharacters(Context *context,
- const xmlChar *chars,
- int length)
-{
- if(context->addTitle)
- context->title.append((char *)chars, length);
-}
-
-//
-// libxml PCDATA callback function
-//
-
-static void Characters(void *voidContext,
- const xmlChar *chars,
- int length)
-{
- Context *context = (Context *)voidContext;
-
- handleCharacters(context, chars, length);
-}
-
-//
-// libxml CDATA callback function
-//
-
-static void cdata(void *voidContext,
- const xmlChar *chars,
- int length)
-{
- Context *context = (Context *)voidContext;
-
- handleCharacters(context, chars, length);
-}
-
-//
-// libxml SAX callback structure
-//
-
-static htmlSAXHandler saxHandler =
-{
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- StartElement,
- EndElement,
- NULL,
- Characters,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- cdata,
- NULL
-};
-
-//
-// Parse given (assumed to be) HTML text and return the title
-//
-
-static void parseHtml(const std::string &html,
- std::string &title)
-{
- htmlParserCtxtPtr ctxt;
- Context context;
-
- ctxt = htmlCreatePushParserCtxt(&saxHandler, &context, "", 0, "",
- XML_CHAR_ENCODING_NONE);
-
- htmlParseChunk(ctxt, html.c_str(), html.size(), 0);
- htmlParseChunk(ctxt, "", 0, 1);
-
- htmlFreeParserCtxt(ctxt);
-
- title = context.title;
-}
-
-int main(int argc, char *argv[])
-{
- CURL *conn = NULL;
- CURLcode code;
- std::string title;
-
- // Ensure one argument is given
-
- if(argc != 2) {
- fprintf(stderr, "Usage: %s <url>\n", argv[0]);
- exit(EXIT_FAILURE);
- }
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- // Initialize CURL connection
-
- if(!init(conn, argv[1])) {
- fprintf(stderr, "Connection initializion failed\n");
- exit(EXIT_FAILURE);
- }
-
- // Retrieve content for the URL
-
- code = curl_easy_perform(conn);
- curl_easy_cleanup(conn);
-
- if(code != CURLE_OK) {
- fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);
- exit(EXIT_FAILURE);
- }
-
- // Parse the (assumed) HTML code
- parseHtml(buffer, title);
-
- // Display the extracted title
- printf("Title: %s\n", title.c_str());
-
- return EXIT_SUCCESS;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http-post.c b/components/cronet/third_party/curl_headers/docs/examples/http-post.c
deleted file mode 100644
index 01754527..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http-post.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * simple HTTP POST using the easy interface
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- /* In windows, this will init the winsock stuff */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* get a curl handle */
- curl = curl_easy_init();
- if(curl) {
- /* First set the URL that is about to receive our POST. This URL can
- just as well be a https:// URL if that is what should receive the
- data. */
- curl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");
- /* Now specify the POST data */
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-download.c b/components/cronet/third_party/curl_headers/docs/examples/http2-download.c
deleted file mode 100644
index 333b7df..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-download.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Multiplexed HTTP/2 downloads over a single connection
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifndef CURLPIPE_MULTIPLEX
-/* This little trick will just make sure that we don't enable pipelining for
- libcurls old enough to not have this symbol. It is _not_ defined to zero in
- a recent libcurl header. */
-#define CURLPIPE_MULTIPLEX 0
-#endif
-
-struct transfer {
- CURL *easy;
- unsigned int num;
- FILE *out;
-};
-
-#define NUM_HANDLES 1000
-
-static
-void dump(const char *text, int num, unsigned char *ptr, size_t size,
- char nohex)
-{
- size_t i;
- size_t c;
-
- unsigned int width = 0x10;
-
- if(nohex)
- /* without the hex output, we can fit more on screen */
- width = 0x40;
-
- fprintf(stderr, "%d %s, %lu bytes (0x%lx)\n",
- num, text, (unsigned long)size, (unsigned long)size);
-
- for(i = 0; i<size; i += width) {
-
- fprintf(stderr, "%4.4lx: ", (unsigned long)i);
-
- if(!nohex) {
- /* hex not disabled, show it */
- for(c = 0; c < width; c++)
- if(i + c < size)
- fprintf(stderr, "%02x ", ptr[i + c]);
- else
- fputs(" ", stderr);
- }
-
- for(c = 0; (c < width) && (i + c < size); c++) {
- /* check for 0D0A; if found, skip past and start a new line of output */
- if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
- ptr[i + c + 1] == 0x0A) {
- i += (c + 2 - width);
- break;
- }
- fprintf(stderr, "%c",
- (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
- /* check again for 0D0A, to avoid an extra \n if it's at width */
- if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
- ptr[i + c + 2] == 0x0A) {
- i += (c + 3 - width);
- break;
- }
- }
- fputc('\n', stderr); /* newline */
- }
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
- char *data, size_t size,
- void *userp)
-{
- const char *text;
- struct transfer *t = (struct transfer *)userp;
- unsigned int num = t->num;
- (void)handle; /* prevent compiler warning */
-
- switch(type) {
- case CURLINFO_TEXT:
- fprintf(stderr, "== %u Info: %s", num, data);
- /* FALLTHROUGH */
- default: /* in case a new one is introduced to shock us */
- return 0;
-
- case CURLINFO_HEADER_OUT:
- text = "=> Send header";
- break;
- case CURLINFO_DATA_OUT:
- text = "=> Send data";
- break;
- case CURLINFO_SSL_DATA_OUT:
- text = "=> Send SSL data";
- break;
- case CURLINFO_HEADER_IN:
- text = "<= Recv header";
- break;
- case CURLINFO_DATA_IN:
- text = "<= Recv data";
- break;
- case CURLINFO_SSL_DATA_IN:
- text = "<= Recv SSL data";
- break;
- }
-
- dump(text, num, (unsigned char *)data, size, 1);
- return 0;
-}
-
-static void setup(struct transfer *t, int num)
-{
- char filename[128];
- CURL *hnd;
-
- hnd = t->easy = curl_easy_init();
-
- snprintf(filename, 128, "dl-%d", num);
-
- t->out = fopen(filename, "wb");
-
- /* write to this file */
- curl_easy_setopt(hnd, CURLOPT_WRITEDATA, t->out);
-
- /* set the same URL */
- curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
-
- /* please be verbose */
- curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
- curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, t);
-
- /* HTTP/2 please */
- curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
- /* we use a self-signed test server, skip verification during debugging */
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-#if (CURLPIPE_MULTIPLEX > 0)
- /* wait for pipe connection to confirm */
- curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-#endif
-}
-
-/*
- * Download many transfers over HTTP/2, using the same connection!
- */
-int main(int argc, char **argv)
-{
- struct transfer trans[NUM_HANDLES];
- CURLM *multi_handle;
- int i;
- int still_running = 0; /* keep number of running handles */
- int num_transfers;
- if(argc > 1) {
- /* if given a number, do that many transfers */
- num_transfers = atoi(argv[1]);
- if((num_transfers < 1) || (num_transfers > NUM_HANDLES))
- num_transfers = 3; /* a suitable low default */
- }
- else
- num_transfers = 3; /* suitable default */
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- for(i = 0; i < num_transfers; i++) {
- setup(&trans[i], i);
-
- /* add the individual transfer */
- curl_multi_add_handle(multi_handle, trans[i].easy);
- }
-
- curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &still_running);
- break;
- }
- }
-
- for(i = 0; i < num_transfers; i++) {
- curl_multi_remove_handle(multi_handle, trans[i].easy);
- curl_easy_cleanup(trans[i].easy);
- }
-
- curl_multi_cleanup(multi_handle);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-pushinmemory.c b/components/cronet/third_party/curl_headers/docs/examples/http2-pushinmemory.c
deleted file mode 100644
index 00406a8..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-pushinmemory.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP/2 server push. Receive all data in memory.
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-struct Memory {
- char *memory;
- size_t size;
-};
-
-static size_t
-write_cb(void *contents, size_t size, size_t nmemb, void *userp)
-{
- size_t realsize = size * nmemb;
- struct Memory *mem = (struct Memory *)userp;
- char *ptr = realloc(mem->memory, mem->size + realsize + 1);
- if(!ptr) {
- /* out of memory! */
- printf("not enough memory (realloc returned NULL)\n");
- return 0;
- }
-
- mem->memory = ptr;
- memcpy(&(mem->memory[mem->size]), contents, realsize);
- mem->size += realsize;
- mem->memory[mem->size] = 0;
-
- return realsize;
-}
-
-#define MAX_FILES 10
-static struct Memory files[MAX_FILES];
-static int pushindex = 1;
-
-static void init_memory(struct Memory *chunk)
-{
- chunk->memory = malloc(1); /* grown as needed with realloc */
- chunk->size = 0; /* no data at this point */
-}
-
-static void setup(CURL *hnd)
-{
- /* set the same URL */
- curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
-
- /* HTTP/2 please */
- curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
- /* we use a self-signed test server, skip verification during debugging */
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
- /* write data to a struct */
- curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, write_cb);
- init_memory(&files[0]);
- curl_easy_setopt(hnd, CURLOPT_WRITEDATA, &files[0]);
-
- /* wait for pipe connection to confirm */
- curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-}
-
-/* called when there's an incoming push */
-static int server_push_callback(CURL *parent,
- CURL *easy,
- size_t num_headers,
- struct curl_pushheaders *headers,
- void *userp)
-{
- char *headp;
- int *transfers = (int *)userp;
- (void)parent; /* we have no use for this */
- (void)num_headers; /* unused */
-
- if(pushindex == MAX_FILES)
- /* can't fit anymore */
- return CURL_PUSH_DENY;
-
- /* write to this buffer */
- init_memory(&files[pushindex]);
- curl_easy_setopt(easy, CURLOPT_WRITEDATA, &files[pushindex]);
- pushindex++;
-
- headp = curl_pushheader_byname(headers, ":path");
- if(headp)
- fprintf(stderr, "* Pushed :path '%s'\n", headp /* skip :path + colon */);
-
- (*transfers)++; /* one more */
- return CURL_PUSH_OK;
-}
-
-
-/*
- * Download a file over HTTP/2, take care of server push.
- */
-int main(void)
-{
- CURL *easy;
- CURLM *multi;
- int still_running; /* keep number of running handles */
- int transfers = 1; /* we start with one */
- int i;
- struct CURLMsg *m;
-
- /* init a multi stack */
- multi = curl_multi_init();
-
- easy = curl_easy_init();
-
- /* set options */
- setup(easy);
-
- /* add the easy transfer */
- curl_multi_add_handle(multi, easy);
-
- curl_multi_setopt(multi, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
- curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, server_push_callback);
- curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &transfers);
-
- while(transfers) {
- int rc;
- CURLMcode mcode = curl_multi_perform(multi, &still_running);
- if(mcode)
- break;
-
- mcode = curl_multi_wait(multi, NULL, 0, 1000, &rc);
- if(mcode)
- break;
-
-
- /*
- * When doing server push, libcurl itself created and added one or more
- * easy handles but *we* need to clean them up when they are done.
- */
- do {
- int msgq = 0;;
- m = curl_multi_info_read(multi, &msgq);
- if(m && (m->msg == CURLMSG_DONE)) {
- CURL *e = m->easy_handle;
- transfers--;
- curl_multi_remove_handle(multi, e);
- curl_easy_cleanup(e);
- }
- } while(m);
-
- }
-
-
- curl_multi_cleanup(multi);
-
- /* 'pushindex' is now the number of received transfers */
- for(i = 0; i < pushindex; i++) {
- /* do something fun with the data, and then free it when done */
- free(files[i].memory);
- }
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-serverpush.c b/components/cronet/third_party/curl_headers/docs/examples/http2-serverpush.c
deleted file mode 100644
index 63dff4c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-serverpush.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP/2 server push
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifndef CURLPIPE_MULTIPLEX
-#error "too old libcurl, can't do HTTP/2 server push!"
-#endif
-
-static
-void dump(const char *text, unsigned char *ptr, size_t size,
- char nohex)
-{
- size_t i;
- size_t c;
-
- unsigned int width = 0x10;
-
- if(nohex)
- /* without the hex output, we can fit more on screen */
- width = 0x40;
-
- fprintf(stderr, "%s, %lu bytes (0x%lx)\n",
- text, (unsigned long)size, (unsigned long)size);
-
- for(i = 0; i<size; i += width) {
-
- fprintf(stderr, "%4.4lx: ", (unsigned long)i);
-
- if(!nohex) {
- /* hex not disabled, show it */
- for(c = 0; c < width; c++)
- if(i + c < size)
- fprintf(stderr, "%02x ", ptr[i + c]);
- else
- fputs(" ", stderr);
- }
-
- for(c = 0; (c < width) && (i + c < size); c++) {
- /* check for 0D0A; if found, skip past and start a new line of output */
- if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
- ptr[i + c + 1] == 0x0A) {
- i += (c + 2 - width);
- break;
- }
- fprintf(stderr, "%c",
- (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
- /* check again for 0D0A, to avoid an extra \n if it's at width */
- if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
- ptr[i + c + 2] == 0x0A) {
- i += (c + 3 - width);
- break;
- }
- }
- fputc('\n', stderr); /* newline */
- }
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
- char *data, size_t size,
- void *userp)
-{
- const char *text;
- (void)handle; /* prevent compiler warning */
- (void)userp;
- switch(type) {
- case CURLINFO_TEXT:
- fprintf(stderr, "== Info: %s", data);
- /* FALLTHROUGH */
- default: /* in case a new one is introduced to shock us */
- return 0;
-
- case CURLINFO_HEADER_OUT:
- text = "=> Send header";
- break;
- case CURLINFO_DATA_OUT:
- text = "=> Send data";
- break;
- case CURLINFO_SSL_DATA_OUT:
- text = "=> Send SSL data";
- break;
- case CURLINFO_HEADER_IN:
- text = "<= Recv header";
- break;
- case CURLINFO_DATA_IN:
- text = "<= Recv data";
- break;
- case CURLINFO_SSL_DATA_IN:
- text = "<= Recv SSL data";
- break;
- }
-
- dump(text, (unsigned char *)data, size, 1);
- return 0;
-}
-
-#define OUTPUTFILE "dl"
-
-static int setup(CURL *hnd)
-{
- FILE *out = fopen(OUTPUTFILE, "wb");
- if(!out)
- /* failed */
- return 1;
-
- /* write to this file */
- curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
-
- /* set the same URL */
- curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
-
- /* please be verbose */
- curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
-
- /* HTTP/2 please */
- curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
- /* we use a self-signed test server, skip verification during debugging */
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-#if (CURLPIPE_MULTIPLEX > 0)
- /* wait for pipe connection to confirm */
- curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-#endif
- return 0; /* all is good */
-}
-
-/* called when there's an incoming push */
-static int server_push_callback(CURL *parent,
- CURL *easy,
- size_t num_headers,
- struct curl_pushheaders *headers,
- void *userp)
-{
- char *headp;
- size_t i;
- int *transfers = (int *)userp;
- char filename[128];
- FILE *out;
- static unsigned int count = 0;
-
- (void)parent; /* we have no use for this */
-
- snprintf(filename, 128, "push%u", count++);
-
- /* here's a new stream, save it in a new file for each new push */
- out = fopen(filename, "wb");
- if(!out) {
- /* if we can't save it, deny it */
- fprintf(stderr, "Failed to create output file for push\n");
- return CURL_PUSH_DENY;
- }
-
- /* write to this file */
- curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
-
- fprintf(stderr, "**** push callback approves stream %u, got %lu headers!\n",
- count, (unsigned long)num_headers);
-
- for(i = 0; i<num_headers; i++) {
- headp = curl_pushheader_bynum(headers, i);
- fprintf(stderr, "**** header %lu: %s\n", (unsigned long)i, headp);
- }
-
- headp = curl_pushheader_byname(headers, ":path");
- if(headp) {
- fprintf(stderr, "**** The PATH is %s\n", headp /* skip :path + colon */);
- }
-
- (*transfers)++; /* one more */
- return CURL_PUSH_OK;
-}
-
-
-/*
- * Download a file over HTTP/2, take care of server push.
- */
-int main(void)
-{
- CURL *easy;
- CURLM *multi_handle;
- int still_running; /* keep number of running handles */
- int transfers = 1; /* we start with one */
- struct CURLMsg *m;
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- easy = curl_easy_init();
-
- /* set options */
- if(setup(easy)) {
- fprintf(stderr, "failed\n");
- return 1;
- }
-
- /* add the easy transfer */
- curl_multi_add_handle(multi_handle, easy);
-
- curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
- curl_multi_setopt(multi_handle, CURLMOPT_PUSHFUNCTION, server_push_callback);
- curl_multi_setopt(multi_handle, CURLMOPT_PUSHDATA, &transfers);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- do {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &still_running);
- break;
- }
-
- /*
- * A little caution when doing server push is that libcurl itself has
- * created and added one or more easy handles but we need to clean them up
- * when we are done.
- */
-
- do {
- int msgq = 0;;
- m = curl_multi_info_read(multi_handle, &msgq);
- if(m && (m->msg == CURLMSG_DONE)) {
- CURL *e = m->easy_handle;
- transfers--;
- curl_multi_remove_handle(multi_handle, e);
- curl_easy_cleanup(e);
- }
- } while(m);
-
- } while(transfers); /* as long as we have transfers going */
-
- curl_multi_cleanup(multi_handle);
-
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-upload.c b/components/cronet/third_party/curl_headers/docs/examples/http2-upload.c
deleted file mode 100644
index 45864cf..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-upload.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Multiplexed HTTP/2 uploads over a single connection
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifndef CURLPIPE_MULTIPLEX
-/* This little trick will just make sure that we don't enable pipelining for
- libcurls old enough to not have this symbol. It is _not_ defined to zero in
- a recent libcurl header. */
-#define CURLPIPE_MULTIPLEX 0
-#endif
-
-#define NUM_HANDLES 1000
-
-struct input {
- FILE *in;
- size_t bytes_read; /* count up */
- CURL *hnd;
- int num;
-};
-
-static
-void dump(const char *text, int num, unsigned char *ptr, size_t size,
- char nohex)
-{
- size_t i;
- size_t c;
- unsigned int width = 0x10;
-
- if(nohex)
- /* without the hex output, we can fit more on screen */
- width = 0x40;
-
- fprintf(stderr, "%d %s, %lu bytes (0x%lx)\n",
- num, text, (unsigned long)size, (unsigned long)size);
-
- for(i = 0; i<size; i += width) {
-
- fprintf(stderr, "%4.4lx: ", (unsigned long)i);
-
- if(!nohex) {
- /* hex not disabled, show it */
- for(c = 0; c < width; c++)
- if(i + c < size)
- fprintf(stderr, "%02x ", ptr[i + c]);
- else
- fputs(" ", stderr);
- }
-
- for(c = 0; (c < width) && (i + c < size); c++) {
- /* check for 0D0A; if found, skip past and start a new line of output */
- if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
- ptr[i + c + 1] == 0x0A) {
- i += (c + 2 - width);
- break;
- }
- fprintf(stderr, "%c",
- (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
- /* check again for 0D0A, to avoid an extra \n if it's at width */
- if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
- ptr[i + c + 2] == 0x0A) {
- i += (c + 3 - width);
- break;
- }
- }
- fputc('\n', stderr); /* newline */
- }
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
- char *data, size_t size,
- void *userp)
-{
- char timebuf[60];
- const char *text;
- struct input *i = (struct input *)userp;
- int num = i->num;
- static time_t epoch_offset;
- static int known_offset;
- struct timeval tv;
- time_t secs;
- struct tm *now;
- (void)handle; /* prevent compiler warning */
-
- gettimeofday(&tv, NULL);
- if(!known_offset) {
- epoch_offset = time(NULL) - tv.tv_sec;
- known_offset = 1;
- }
- secs = epoch_offset + tv.tv_sec;
- now = localtime(&secs); /* not thread safe but we don't care */
- snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld",
- now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec);
-
- switch(type) {
- case CURLINFO_TEXT:
- fprintf(stderr, "%s [%d] Info: %s", timebuf, num, data);
- /* FALLTHROUGH */
- default: /* in case a new one is introduced to shock us */
- return 0;
-
- case CURLINFO_HEADER_OUT:
- text = "=> Send header";
- break;
- case CURLINFO_DATA_OUT:
- text = "=> Send data";
- break;
- case CURLINFO_SSL_DATA_OUT:
- text = "=> Send SSL data";
- break;
- case CURLINFO_HEADER_IN:
- text = "<= Recv header";
- break;
- case CURLINFO_DATA_IN:
- text = "<= Recv data";
- break;
- case CURLINFO_SSL_DATA_IN:
- text = "<= Recv SSL data";
- break;
- }
-
- dump(text, num, (unsigned char *)data, size, 1);
- return 0;
-}
-
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct input *i = userp;
- size_t retcode = fread(ptr, size, nmemb, i->in);
- i->bytes_read += retcode;
- return retcode;
-}
-
-static void setup(struct input *i, int num, const char *upload)
-{
- FILE *out;
- char url[256];
- char filename[128];
- struct stat file_info;
- curl_off_t uploadsize;
- CURL *hnd;
-
- hnd = i->hnd = curl_easy_init();
- i->num = num;
- snprintf(filename, 128, "dl-%d", num);
- out = fopen(filename, "wb");
-
- snprintf(url, 256, "https://localhost:8443/upload-%d", num);
-
- /* get the file size of the local file */
- stat(upload, &file_info);
- uploadsize = file_info.st_size;
-
- i->in = fopen(upload, "rb");
-
- /* write to this file */
- curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
-
- /* we want to use our own read function */
- curl_easy_setopt(hnd, CURLOPT_READFUNCTION, read_callback);
- /* read from this file */
- curl_easy_setopt(hnd, CURLOPT_READDATA, i);
- /* provide the size of the upload */
- curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, uploadsize);
-
- /* send in the URL to store the upload as */
- curl_easy_setopt(hnd, CURLOPT_URL, url);
-
- /* upload please */
- curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
-
- /* please be verbose */
- curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
- curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, i);
-
- /* HTTP/2 please */
- curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
- /* we use a self-signed test server, skip verification during debugging */
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-#if (CURLPIPE_MULTIPLEX > 0)
- /* wait for pipe connection to confirm */
- curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-#endif
-}
-
-/*
- * Upload all files over HTTP/2, using the same physical connection!
- */
-int main(int argc, char **argv)
-{
- struct input trans[NUM_HANDLES];
- CURLM *multi_handle;
- int i;
- int still_running = 0; /* keep number of running handles */
- const char *filename = "index.html";
- int num_transfers;
-
- if(argc > 1) {
- /* if given a number, do that many transfers */
- num_transfers = atoi(argv[1]);
-
- if(!num_transfers || (num_transfers > NUM_HANDLES))
- num_transfers = 3; /* a suitable low default */
-
- if(argc > 2)
- /* if given a file name, upload this! */
- filename = argv[2];
- }
- else
- num_transfers = 3;
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- for(i = 0; i<num_transfers; i++) {
- setup(&trans[i], i, filename);
-
- /* add the individual transfer */
- curl_multi_add_handle(multi_handle, trans[i].hnd);
- }
-
- curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-
- /* We do HTTP/2 so let's stick to one connection per host */
- curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 1L);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &still_running);
- break;
- }
- }
-
- curl_multi_cleanup(multi_handle);
-
- for(i = 0; i<num_transfers; i++) {
- curl_multi_remove_handle(multi_handle, trans[i].hnd);
- curl_easy_cleanup(trans[i].hnd);
- }
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/httpcustomheader.c b/components/cronet/third_party/curl_headers/docs/examples/httpcustomheader.c
deleted file mode 100644
index 6712f8c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/httpcustomheader.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP request with custom modified, removed and added headers
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl = curl_easy_init();
- if(curl) {
- struct curl_slist *chunk = NULL;
-
- /* Remove a header curl would otherwise add by itself */
- chunk = curl_slist_append(chunk, "Accept:");
-
- /* Add a custom header */
- chunk = curl_slist_append(chunk, "Another: yes");
-
- /* Modify a header curl otherwise adds differently */
- chunk = curl_slist_append(chunk, "Host: example.com");
-
- /* Add a header with "blank" contents to the right of the colon. Note that
- we're then using a semicolon in the string we pass to curl! */
- chunk = curl_slist_append(chunk, "X-silly-header;");
-
- /* set our custom set of headers */
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
-
- curl_easy_setopt(curl, CURLOPT_URL, "localhost");
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- /* free the custom headers */
- curl_slist_free_all(chunk);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/httpput.c b/components/cronet/third_party/curl_headers/docs/examples/httpput.c
deleted file mode 100644
index 6be9b8d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/httpput.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP PUT with easy interface and read callback
- * </DESC>
- */
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <curl/curl.h>
-
-/*
- * This example shows a HTTP PUT operation. PUTs a file given as a command
- * line argument to the URL also given on the command line.
- *
- * This example also uses its own read callback.
- *
- * Here's an article on how to setup a PUT handler for Apache:
- * http://www.apacheweek.com/features/put
- */
-
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- size_t retcode;
- curl_off_t nread;
-
- /* in real-world cases, this would probably get this data differently
- as this fread() stuff is exactly what the library already would do
- by default internally */
- retcode = fread(ptr, size, nmemb, stream);
-
- nread = (curl_off_t)retcode;
-
- fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
- " bytes from file\n", nread);
-
- return retcode;
-}
-
-int main(int argc, char **argv)
-{
- CURL *curl;
- CURLcode res;
- FILE * hd_src;
- struct stat file_info;
-
- char *file;
- char *url;
-
- if(argc < 3)
- return 1;
-
- file = argv[1];
- url = argv[2];
-
- /* get the file size of the local file */
- stat(file, &file_info);
-
- /* get a FILE * of the same file, could also be made with
- fdopen() from the previous descriptor, but hey this is just
- an example! */
- hd_src = fopen(file, "rb");
-
- /* In windows, this will init the winsock stuff */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* get a curl handle */
- curl = curl_easy_init();
- if(curl) {
- /* we want to use our own read function */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
- /* enable uploading */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* HTTP PUT please */
- curl_easy_setopt(curl, CURLOPT_PUT, 1L);
-
- /* specify target URL, and note that this URL should include a file
- name, not only a directory */
- curl_easy_setopt(curl, CURLOPT_URL, url);
-
- /* now specify which file to upload */
- curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
-
- /* provide the size of the upload, we specicially typecast the value
- to curl_off_t since we must be sure to use the correct data size */
- curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
- (curl_off_t)file_info.st_size);
-
- /* Now run off and do what you've been told! */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- fclose(hd_src); /* close the local file */
-
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/https.c b/components/cronet/third_party/curl_headers/docs/examples/https.c
deleted file mode 100644
index cca83fee..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/https.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Simple HTTPS GET
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-
-#ifdef SKIP_PEER_VERIFICATION
- /*
- * If you want to connect to a site who isn't using a certificate that is
- * signed by one of the certs in the CA bundle you have, you can skip the
- * verification of the server's certificate. This makes the connection
- * A LOT LESS SECURE.
- *
- * If you have a CA cert for the server stored someplace else than in the
- * default bundle, then the CURLOPT_CAPATH option might come handy for
- * you.
- */
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
-#ifdef SKIP_HOSTNAME_VERIFICATION
- /*
- * If the site you're connecting to uses a different host name that what
- * they have mentioned in their server certificate's commonName (or
- * subjectAltName) fields, libcurl will refuse to connect. You can skip
- * this check, but this will make the connection less secure.
- */
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-append.c b/components/cronet/third_party/curl_headers/docs/examples/imap-append.c
deleted file mode 100644
index 157d574..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-append.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to send e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mail using libcurl's IMAP
- * capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-#define FROM "<sender@example.org>"
-#define TO "<addressee@example.net>"
-#define CC "<info@example.org>"
-
-static const char *payload_text[] = {
- "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
- "To: " TO "\r\n",
- "From: " FROM "(Example User)\r\n",
- "Cc: " CC "(Another example User)\r\n",
- "Message-ID: "
- "<dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
- "Subject: IMAP example message\r\n",
- "\r\n", /* empty line to divide headers from body, see RFC5322 */
- "The body of the message starts here.\r\n",
- "\r\n",
- "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
- "Check RFC5322.\r\n",
- NULL
-};
-
-struct upload_status {
- int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct upload_status *upload_ctx = (struct upload_status *)userp;
- const char *data;
-
- if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
- return 0;
- }
-
- data = payload_text[upload_ctx->lines_read];
-
- if(data) {
- size_t len = strlen(data);
- memcpy(ptr, data, len);
- upload_ctx->lines_read++;
-
- return len;
- }
-
- return 0;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- const char **p;
- long infilesize;
- struct upload_status upload_ctx;
-
- upload_ctx.lines_read = 0;
-
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will create a new message 100. Note that you should perform an
- * EXAMINE command to obtain the UID of the next message to create and a
- * SELECT to ensure you are creating the message in the OUTBOX. */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/100");
-
- /* In this case, we're using a callback function to specify the data. You
- * could just use the CURLOPT_READDATA option to specify a FILE pointer to
- * read from. */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
- curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- infilesize = 0;
- for(p = payload_text; *p; ++p) {
- infilesize += (long)strlen(*p);
- }
- curl_easy_setopt(curl, CURLOPT_INFILESIZE, infilesize);
-
- /* Perform the append */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-copy.c b/components/cronet/third_party/curl_headers/docs/examples/imap-copy.c
deleted file mode 100644
index 1ef43f89..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-copy.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to copy an e-mail from one folder to another
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to copy a mail from one mailbox folder
- * to another using libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is source mailbox folder to select */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
-
- /* Set the COPY command specifying the message ID and destination folder */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "COPY 1 FOLDER");
-
- /* Note that to perform a move operation you will need to perform the copy,
- * then mark the original mail as Deleted and EXPUNGE or CLOSE. Please see
- * imap-store.c for more information on deleting messages. */
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-create.c b/components/cronet/third_party/curl_headers/docs/examples/imap-create.c
deleted file mode 100644
index 6f04453b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-create.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to create a new folder
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to create a new mailbox folder using
- * libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
- /* Set the CREATE command specifying the new folder name */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "CREATE FOLDER");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-delete.c b/components/cronet/third_party/curl_headers/docs/examples/imap-delete.c
deleted file mode 100644
index cf1ae0bb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-delete.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to delete a folder
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to delete an existing mailbox folder
- * using libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
- /* Set the DELETE command specifying the existing folder */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE FOLDER");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-examine.c b/components/cronet/third_party/curl_headers/docs/examples/imap-examine.c
deleted file mode 100644
index b89e9dc..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-examine.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to obtain information about a folder
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to obtain information about a mailbox
- * folder using libcurl's IMAP capabilities via the EXAMINE command.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
- /* Set the EXAMINE command specifying the mailbox folder */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXAMINE OUTBOX");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-fetch.c b/components/cronet/third_party/curl_headers/docs/examples/imap-fetch.c
deleted file mode 100644
index 192d2e9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-fetch.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to retreieve e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL,
- "imap://imap.example.com/INBOX/;UID=1");
-
- /* Perform the fetch */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-list.c b/components/cronet/third_party/curl_headers/docs/examples/imap-list.c
deleted file mode 100644
index 291e1e6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-list.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example to list the folders within a mailbox
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to list the folders within an IMAP
- * mailbox.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will list the folders within the user's mailbox. If you want to
- * list the folders within a specific folder, for example the inbox, then
- * specify the folder as a path in the URL such as /INBOX */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
- /* Perform the list */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-lsub.c b/components/cronet/third_party/curl_headers/docs/examples/imap-lsub.c
deleted file mode 100644
index d130c3d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-lsub.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example to list the subscribed folders
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to list the subscribed folders within
- * an IMAP mailbox.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
- /* Set the LSUB command. Note the syntax is very similar to that of a LIST
- command. */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "LSUB \"\" *");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-multi.c b/components/cronet/third_party/curl_headers/docs/examples/imap-multi.c
deleted file mode 100644
index 07d1b8b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-multi.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example using the multi interface
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities. It builds on the imap-fetch.c example to demonstrate how to
- * use libcurl's multi interface.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
-
-static struct timeval tvnow(void)
-{
- struct timeval now;
-
- /* time() returns the value of time in seconds since the epoch */
- now.tv_sec = (long)time(NULL);
- now.tv_usec = 0;
-
- return now;
-}
-
-static long tvdiff(struct timeval newer, struct timeval older)
-{
- return (newer.tv_sec - older.tv_sec) * 1000 +
- (newer.tv_usec - older.tv_usec) / 1000;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLM *mcurl;
- int still_running = 1;
- struct timeval mp_start;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(!curl)
- return 1;
-
- mcurl = curl_multi_init();
- if(!mcurl)
- return 2;
-
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
-
- /* Tell the multi stack about our easy handle */
- curl_multi_add_handle(mcurl, curl);
-
- /* Record the start time which we can use later */
- mp_start = tvnow();
-
- /* We start some action by calling perform right away */
- curl_multi_perform(mcurl, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
- int rc;
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- long curl_timeo = -1;
-
- /* Initialise the file descriptors */
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* Set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(mcurl, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
- fprintf(stderr,
- "ABORTING: Since it seems that we would have run forever.\n");
- break;
- }
-
- switch(rc) {
- case -1: /* select error */
- break;
- case 0: /* timeout */
- default: /* action */
- curl_multi_perform(mcurl, &still_running);
- break;
- }
- }
-
- /* Always cleanup */
- curl_multi_remove_handle(mcurl, curl);
- curl_multi_cleanup(mcurl);
- curl_easy_cleanup(curl);
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-noop.c b/components/cronet/third_party/curl_headers/docs/examples/imap-noop.c
deleted file mode 100644
index 566890e..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-noop.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to perform a noop
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to perform a noop using libcurl's IMAP
- * capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
- /* Set the NOOP command */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "NOOP");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-search.c b/components/cronet/third_party/curl_headers/docs/examples/imap-search.c
deleted file mode 100644
index 427dcc9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-search.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to search for new e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to search for new messages using
- * libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is mailbox folder to select */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
-
- /* Set the SEARCH command specifying what we want to search for. Note that
- * this can contain a message sequence set and a number of search criteria
- * keywords including flags such as ANSWERED, DELETED, DRAFT, FLAGGED, NEW,
- * RECENT and SEEN. For more information about the search criteria please
- * see RFC-3501 section 6.4.4. */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "SEARCH NEW");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/imap-ssl.c
deleted file mode 100644
index 69839ad..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-ssl.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example using SSL
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities. It builds on the imap-fetch.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will fetch message 1 from the user's inbox. Note the use of
- * imaps:// rather than imap:// to request a SSL based connection. */
- curl_easy_setopt(curl, CURLOPT_URL,
- "imaps://imap.example.com/INBOX/;UID=1");
-
- /* If you want to connect to a site who isn't using a certificate that is
- * signed by one of the certs in the CA bundle you have, you can skip the
- * verification of the server's certificate. This makes the connection
- * A LOT LESS SECURE.
- *
- * If you have a CA cert for the server stored someplace else than in the
- * default bundle, then the CURLOPT_CAPATH option might come handy for
- * you. */
-#ifdef SKIP_PEER_VERIFICATION
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
- /* If the site you're connecting to uses a different host name that what
- * they have mentioned in their server certificate's commonName (or
- * subjectAltName) fields, libcurl will refuse to connect. You can skip
- * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERIFICATION
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
- /* Since the traffic will be encrypted, it is very useful to turn on debug
- * information within libcurl to see what is happening during the
- * transfer */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Perform the fetch */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-store.c b/components/cronet/third_party/curl_headers/docs/examples/imap-store.c
deleted file mode 100644
index 8479457b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-store.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to modify the properties of an e-mail
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to modify an existing mail using
- * libcurl's IMAP capabilities with the STORE command.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is the mailbox folder to select */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
-
- /* Set the STORE command with the Deleted flag for message 1. Note that
- * you can use the STORE command to set other flags such as Seen, Answered,
- * Flagged, Draft and Recent. */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "STORE 1 +Flags \\Deleted");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
- else {
- /* Set the EXPUNGE command, although you can use the CLOSE command if you
- * don't want to know the result of the STORE */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXPUNGE");
-
- /* Perform the second custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
- }
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-tls.c b/components/cronet/third_party/curl_headers/docs/examples/imap-tls.c
deleted file mode 100644
index 7daa0bf..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-tls.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example using TLS
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities. It builds on the imap-fetch.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL,
- "imap://imap.example.com/INBOX/;UID=1");
-
- /* In this example, we'll start with a plain text connection, and upgrade
- * to Transport Layer Security (TLS) using the STARTTLS command. Be careful
- * of using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
- * will continue anyway - see the security discussion in the libcurl
- * tutorial for more details. */
- curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-
- /* If your server doesn't have a valid certificate, then you can disable
- * part of the Transport Layer Security protection by setting the
- * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
- * curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
- * curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
- *
- * That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though. Instead, you should get
- * the issuer certificate (or the host certificate if the certificate is
- * self-signed) and add it to the set of certificates that are known to
- * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
- * for more information. */
- curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
-
- /* Since the traffic will be encrypted, it is very useful to turn on debug
- * information within libcurl to see what is happening during the
- * transfer */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Perform the fetch */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/makefile.dj b/components/cronet/third_party/curl_headers/docs/examples/makefile.dj
deleted file mode 100644
index 17d93ab8..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/makefile.dj
+++ /dev/null
@@ -1,55 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-TOPDIR = ../..
-
-include $(TOPDIR)/packages/DOS/common.dj
-
-CFLAGS += -DFALSE=0 -DTRUE=1
-
-LIBS = $(TOPDIR)/lib/libcurl.a
-
-ifeq ($(USE_SSL),1)
- LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
-endif
-
-ifeq ($(USE_IDNA),1)
- LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
-endif
-
-LIBS += $(WATT32_ROOT)/lib/libwatt.a $(ZLIB_ROOT)/libz.a
-
-include Makefile.inc
-
-PROGRAMS = $(patsubst %,%.exe,$(check_PROGRAMS))
-
-all: $(PROGRAMS)
- @echo Welcome to libcurl example program
-
-%.exe: %.c
- $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
- @echo
-
-clean vclean realclean:
- - rm -f $(PROGRAMS) depend.dj
-
--include depend.dj
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-app.c b/components/cronet/third_party/curl_headers/docs/examples/multi-app.c
deleted file mode 100644
index b98a25161..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-app.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * A basic application source code using the multi interface doing two
- * transfers in parallel.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-/*
- * Download a HTTP file and upload an FTP file simultaneously.
- */
-
-#define HANDLECOUNT 2 /* Number of simultaneous transfers */
-#define HTTP_HANDLE 0 /* Index for the HTTP transfer */
-#define FTP_HANDLE 1 /* Index for the FTP transfer */
-
-int main(void)
-{
- CURL *handles[HANDLECOUNT];
- CURLM *multi_handle;
-
- int still_running = 0; /* keep number of running handles */
- int i;
-
- CURLMsg *msg; /* for picking up messages with the transfer status */
- int msgs_left; /* how many messages are left */
-
- /* Allocate one CURL handle per transfer */
- for(i = 0; i<HANDLECOUNT; i++)
- handles[i] = curl_easy_init();
-
- /* set the options (I left out a few, you'll get the point anyway) */
- curl_easy_setopt(handles[HTTP_HANDLE], CURLOPT_URL, "https://example.com");
-
- curl_easy_setopt(handles[FTP_HANDLE], CURLOPT_URL, "ftp://example.com");
- curl_easy_setopt(handles[FTP_HANDLE], CURLOPT_UPLOAD, 1L);
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- /* add the individual transfers */
- for(i = 0; i<HANDLECOUNT; i++)
- curl_multi_add_handle(multi_handle, handles[i]);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0: /* timeout */
- default: /* action */
- curl_multi_perform(multi_handle, &still_running);
- break;
- }
- }
-
- /* See how the transfers went */
- while((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
- if(msg->msg == CURLMSG_DONE) {
- int idx;
-
- /* Find out which handle this message is about */
- for(idx = 0; idx<HANDLECOUNT; idx++) {
- int found = (msg->easy_handle == handles[idx]);
- if(found)
- break;
- }
-
- switch(idx) {
- case HTTP_HANDLE:
- printf("HTTP transfer completed with status %d\n", msg->data.result);
- break;
- case FTP_HANDLE:
- printf("FTP transfer completed with status %d\n", msg->data.result);
- break;
- }
- }
- }
-
- curl_multi_cleanup(multi_handle);
-
- /* Free the CURL handles */
- for(i = 0; i<HANDLECOUNT; i++)
- curl_easy_cleanup(handles[i]);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-debugcallback.c b/components/cronet/third_party/curl_headers/docs/examples/multi-debugcallback.c
deleted file mode 100644
index 59f72442..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-debugcallback.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * multi interface and debug callback
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-typedef char bool;
-#define TRUE 1
-
-static
-void dump(const char *text,
- FILE *stream, unsigned char *ptr, size_t size,
- bool nohex)
-{
- size_t i;
- size_t c;
-
- unsigned int width = 0x10;
-
- if(nohex)
- /* without the hex output, we can fit more on screen */
- width = 0x40;
-
- fprintf(stream, "%s, %10.10lu bytes (0x%8.8lx)\n",
- text, (unsigned long)size, (unsigned long)size);
-
- for(i = 0; i<size; i += width) {
-
- fprintf(stream, "%4.4lx: ", (unsigned long)i);
-
- if(!nohex) {
- /* hex not disabled, show it */
- for(c = 0; c < width; c++)
- if(i + c < size)
- fprintf(stream, "%02x ", ptr[i + c]);
- else
- fputs(" ", stream);
- }
-
- for(c = 0; (c < width) && (i + c < size); c++) {
- /* check for 0D0A; if found, skip past and start a new line of output */
- if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
- ptr[i + c + 1] == 0x0A) {
- i += (c + 2 - width);
- break;
- }
- fprintf(stream, "%c",
- (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
- /* check again for 0D0A, to avoid an extra \n if it's at width */
- if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
- ptr[i + c + 2] == 0x0A) {
- i += (c + 3 - width);
- break;
- }
- }
- fputc('\n', stream); /* newline */
- }
- fflush(stream);
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
- unsigned char *data, size_t size,
- void *userp)
-{
- const char *text;
-
- (void)userp;
- (void)handle; /* prevent compiler warning */
-
- switch(type) {
- case CURLINFO_TEXT:
- fprintf(stderr, "== Info: %s", data);
- /* FALLTHROUGH */
- default: /* in case a new one is introduced to shock us */
- return 0;
-
- case CURLINFO_HEADER_OUT:
- text = "=> Send header";
- break;
- case CURLINFO_DATA_OUT:
- text = "=> Send data";
- break;
- case CURLINFO_HEADER_IN:
- text = "<= Recv header";
- break;
- case CURLINFO_DATA_IN:
- text = "<= Recv data";
- break;
- }
-
- dump(text, stderr, data, size, TRUE);
- return 0;
-}
-
-/*
- * Simply download a HTTP file.
- */
-int main(void)
-{
- CURL *http_handle;
- CURLM *multi_handle;
-
- int still_running = 0; /* keep number of running handles */
-
- http_handle = curl_easy_init();
-
- /* set the options (I left out a few, you'll get the point anyway) */
- curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");
-
- curl_easy_setopt(http_handle, CURLOPT_DEBUGFUNCTION, my_trace);
- curl_easy_setopt(http_handle, CURLOPT_VERBOSE, 1L);
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- /* add the individual transfers */
- curl_multi_add_handle(multi_handle, http_handle);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- still_running = 0;
- printf("select() returns error, this is badness\n");
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &still_running);
- break;
- }
- }
-
- curl_multi_cleanup(multi_handle);
-
- curl_easy_cleanup(http_handle);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-double.c b/components/cronet/third_party/curl_headers/docs/examples/multi-double.c
deleted file mode 100644
index 644e64b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-double.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * multi interface code doing two parallel HTTP transfers
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-/*
- * Simply download two HTTP files!
- */
-int main(void)
-{
- CURL *http_handle;
- CURL *http_handle2;
- CURLM *multi_handle;
-
- int still_running = 0; /* keep number of running handles */
-
- http_handle = curl_easy_init();
- http_handle2 = curl_easy_init();
-
- /* set options */
- curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");
-
- /* set options */
- curl_easy_setopt(http_handle2, CURLOPT_URL, "http://localhost/");
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- /* add the individual transfers */
- curl_multi_add_handle(multi_handle, http_handle);
- curl_multi_add_handle(multi_handle, http_handle2);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- curl_multi_perform(multi_handle, &still_running);
- break;
- }
- }
-
- curl_multi_cleanup(multi_handle);
-
- curl_easy_cleanup(http_handle);
- curl_easy_cleanup(http_handle2);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-formadd.c b/components/cronet/third_party/curl_headers/docs/examples/multi-formadd.c
deleted file mode 100644
index c1bb135..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-formadd.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * using the multi interface to do a multipart formpost without blocking
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
-
- CURLM *multi_handle;
- int still_running = 0;
-
- struct curl_httppost *formpost = NULL;
- struct curl_httppost *lastptr = NULL;
- struct curl_slist *headerlist = NULL;
- static const char buf[] = "Expect:";
-
- /* Fill in the file upload field. This makes libcurl load data from
- the given file name when curl_easy_perform() is called. */
- curl_formadd(&formpost,
- &lastptr,
- CURLFORM_COPYNAME, "sendfile",
- CURLFORM_FILE, "postit2.c",
- CURLFORM_END);
-
- /* Fill in the filename field */
- curl_formadd(&formpost,
- &lastptr,
- CURLFORM_COPYNAME, "filename",
- CURLFORM_COPYCONTENTS, "postit2.c",
- CURLFORM_END);
-
- /* Fill in the submit field too, even if this is rarely needed */
- curl_formadd(&formpost,
- &lastptr,
- CURLFORM_COPYNAME, "submit",
- CURLFORM_COPYCONTENTS, "send",
- CURLFORM_END);
-
- curl = curl_easy_init();
- multi_handle = curl_multi_init();
-
- /* initialize custom header list (stating that Expect: 100-continue is not
- wanted */
- headerlist = curl_slist_append(headerlist, buf);
- if(curl && multi_handle) {
-
- /* what URL that receives this POST */
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/upload.cgi");
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
- curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
-
- curl_multi_add_handle(multi_handle, curl);
-
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- printf("perform!\n");
- curl_multi_perform(multi_handle, &still_running);
- printf("running: %d!\n", still_running);
- break;
- }
- }
-
- curl_multi_cleanup(multi_handle);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- /* then cleanup the formpost chain */
- curl_formfree(formpost);
-
- /* free slist */
- curl_slist_free_all(headerlist);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-post.c b/components/cronet/third_party/curl_headers/docs/examples/multi-post.c
deleted file mode 100644
index fe66ca9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-post.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * using the multi interface to do a multipart formpost without blocking
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
-
- CURLM *multi_handle;
- int still_running = 0;
-
- curl_mime *form = NULL;
- curl_mimepart *field = NULL;
- struct curl_slist *headerlist = NULL;
- static const char buf[] = "Expect:";
-
- curl = curl_easy_init();
- multi_handle = curl_multi_init();
-
- if(curl && multi_handle) {
- /* Create the form */
- form = curl_mime_init(curl);
-
- /* Fill in the file upload field */
- field = curl_mime_addpart(form);
- curl_mime_name(field, "sendfile");
- curl_mime_filedata(field, "multi-post.c");
-
- /* Fill in the filename field */
- field = curl_mime_addpart(form);
- curl_mime_name(field, "filename");
- curl_mime_data(field, "multi-post.c", CURL_ZERO_TERMINATED);
-
- /* Fill in the submit field too, even if this is rarely needed */
- field = curl_mime_addpart(form);
- curl_mime_name(field, "submit");
- curl_mime_data(field, "send", CURL_ZERO_TERMINATED);
-
- /* initialize custom header list (stating that Expect: 100-continue is not
- wanted */
- headerlist = curl_slist_append(headerlist, buf);
-
- /* what URL that receives this POST */
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/upload.cgi");
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
- curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
-
- curl_multi_add_handle(multi_handle, curl);
-
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- int rc; /* select() return code */
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
-
- long curl_timeo = -1;
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(multi_handle, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- switch(rc) {
- case -1:
- /* select error */
- break;
- case 0:
- default:
- /* timeout or readable/writable sockets */
- printf("perform!\n");
- curl_multi_perform(multi_handle, &still_running);
- printf("running: %d!\n", still_running);
- break;
- }
- }
-
- curl_multi_cleanup(multi_handle);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- /* then cleanup the form */
- curl_mime_free(form);
-
- /* free slist */
- curl_slist_free_all(headerlist);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-single.c b/components/cronet/third_party/curl_headers/docs/examples/multi-single.c
deleted file mode 100644
index 530a5f5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-single.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * using the multi interface to do a single download
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifdef _WIN32
-#define WAITMS(x) Sleep(x)
-#else
-/* Portable sleep for platforms other than Windows. */
-#define WAITMS(x) \
- struct timeval wait = { 0, (x) * 1000 }; \
- (void)select(0, NULL, NULL, NULL, &wait);
-#endif
-
-/*
- * Simply download a HTTP file.
- */
-int main(void)
-{
- CURL *http_handle;
- CURLM *multi_handle;
-
- int still_running = 0; /* keep number of running handles */
- int repeats = 0;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- http_handle = curl_easy_init();
-
- /* set the options (I left out a few, you'll get the point anyway) */
- curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");
-
- /* init a multi stack */
- multi_handle = curl_multi_init();
-
- /* add the individual transfers */
- curl_multi_add_handle(multi_handle, http_handle);
-
- /* we start some action by calling perform right away */
- curl_multi_perform(multi_handle, &still_running);
-
- while(still_running) {
- CURLMcode mc; /* curl_multi_wait() return code */
- int numfds;
-
- /* wait for activity, timeout or "nothing" */
- mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
- break;
- }
-
- /* 'numfds' being zero means either a timeout or no file descriptors to
- wait for. Try timeout on first occurrence, then assume no file
- descriptors and no file descriptors to wait for means wait for 100
- milliseconds. */
-
- if(!numfds) {
- repeats++; /* count number of repeated zero numfds */
- if(repeats > 1) {
- WAITMS(100); /* sleep 100 milliseconds */
- }
- }
- else
- repeats = 0;
-
- curl_multi_perform(multi_handle, &still_running);
- }
-
- curl_multi_remove_handle(multi_handle, http_handle);
-
- curl_easy_cleanup(http_handle);
-
- curl_multi_cleanup(multi_handle);
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-uv.c b/components/cronet/third_party/curl_headers/docs/examples/multi-uv.c
deleted file mode 100644
index 8ca4b90..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-uv.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * multi_socket API using libuv
- * </DESC>
- */
-/* Example application using the multi socket interface to download multiple
- files in parallel, powered by libuv.
-
- Requires libuv and (of course) libcurl.
-
- See https://nikhilm.github.io/uvbook/ for more information on libuv.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <uv.h>
-#include <curl/curl.h>
-
-uv_loop_t *loop;
-CURLM *curl_handle;
-uv_timer_t timeout;
-
-typedef struct curl_context_s {
- uv_poll_t poll_handle;
- curl_socket_t sockfd;
-} curl_context_t;
-
-static curl_context_t* create_curl_context(curl_socket_t sockfd)
-{
- curl_context_t *context;
-
- context = (curl_context_t *) malloc(sizeof(*context));
-
- context->sockfd = sockfd;
-
- uv_poll_init_socket(loop, &context->poll_handle, sockfd);
- context->poll_handle.data = context;
-
- return context;
-}
-
-static void curl_close_cb(uv_handle_t *handle)
-{
- curl_context_t *context = (curl_context_t *) handle->data;
- free(context);
-}
-
-static void destroy_curl_context(curl_context_t *context)
-{
- uv_close((uv_handle_t *) &context->poll_handle, curl_close_cb);
-}
-
-static void add_download(const char *url, int num)
-{
- char filename[50];
- FILE *file;
- CURL *handle;
-
- snprintf(filename, 50, "%d.download", num);
-
- file = fopen(filename, "wb");
- if(!file) {
- fprintf(stderr, "Error opening %s\n", filename);
- return;
- }
-
- handle = curl_easy_init();
- curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);
- curl_easy_setopt(handle, CURLOPT_PRIVATE, file);
- curl_easy_setopt(handle, CURLOPT_URL, url);
- curl_multi_add_handle(curl_handle, handle);
- fprintf(stderr, "Added download %s -> %s\n", url, filename);
-}
-
-static void check_multi_info(void)
-{
- char *done_url;
- CURLMsg *message;
- int pending;
- CURL *easy_handle;
- FILE *file;
-
- while((message = curl_multi_info_read(curl_handle, &pending))) {
- switch(message->msg) {
- case CURLMSG_DONE:
- /* Do not use message data after calling curl_multi_remove_handle() and
- curl_easy_cleanup(). As per curl_multi_info_read() docs:
- "WARNING: The data the returned pointer points to will not survive
- calling curl_multi_cleanup, curl_multi_remove_handle or
- curl_easy_cleanup." */
- easy_handle = message->easy_handle;
-
- curl_easy_getinfo(easy_handle, CURLINFO_EFFECTIVE_URL, &done_url);
- curl_easy_getinfo(easy_handle, CURLINFO_PRIVATE, &file);
- printf("%s DONE\n", done_url);
-
- curl_multi_remove_handle(curl_handle, easy_handle);
- curl_easy_cleanup(easy_handle);
- if(file) {
- fclose(file);
- }
- break;
-
- default:
- fprintf(stderr, "CURLMSG default\n");
- break;
- }
- }
-}
-
-static void curl_perform(uv_poll_t *req, int status, int events)
-{
- int running_handles;
- int flags = 0;
- curl_context_t *context;
-
- if(events & UV_READABLE)
- flags |= CURL_CSELECT_IN;
- if(events & UV_WRITABLE)
- flags |= CURL_CSELECT_OUT;
-
- context = (curl_context_t *) req->data;
-
- curl_multi_socket_action(curl_handle, context->sockfd, flags,
- &running_handles);
-
- check_multi_info();
-}
-
-static void on_timeout(uv_timer_t *req)
-{
- int running_handles;
- curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
- &running_handles);
- check_multi_info();
-}
-
-static int start_timeout(CURLM *multi, long timeout_ms, void *userp)
-{
- if(timeout_ms < 0) {
- uv_timer_stop(&timeout);
- }
- else {
- if(timeout_ms == 0)
- timeout_ms = 1; /* 0 means directly call socket_action, but we'll do it
- in a bit */
- uv_timer_start(&timeout, on_timeout, timeout_ms, 0);
- }
- return 0;
-}
-
-static int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
- void *socketp)
-{
- curl_context_t *curl_context;
- int events = 0;
-
- switch(action) {
- case CURL_POLL_IN:
- case CURL_POLL_OUT:
- case CURL_POLL_INOUT:
- curl_context = socketp ?
- (curl_context_t *) socketp : create_curl_context(s);
-
- curl_multi_assign(curl_handle, s, (void *) curl_context);
-
- if(action != CURL_POLL_IN)
- events |= UV_WRITABLE;
- if(action != CURL_POLL_OUT)
- events |= UV_READABLE;
-
- uv_poll_start(&curl_context->poll_handle, events, curl_perform);
- break;
- case CURL_POLL_REMOVE:
- if(socketp) {
- uv_poll_stop(&((curl_context_t*)socketp)->poll_handle);
- destroy_curl_context((curl_context_t*) socketp);
- curl_multi_assign(curl_handle, s, NULL);
- }
- break;
- default:
- abort();
- }
-
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- loop = uv_default_loop();
-
- if(argc <= 1)
- return 0;
-
- if(curl_global_init(CURL_GLOBAL_ALL)) {
- fprintf(stderr, "Could not init curl\n");
- return 1;
- }
-
- uv_timer_init(loop, &timeout);
-
- curl_handle = curl_multi_init();
- curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
- curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
-
- while(argc-- > 1) {
- add_download(argv[argc], argc);
- }
-
- uv_run(loop, UV_RUN_DEFAULT);
- curl_multi_cleanup(curl_handle);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multithread.c b/components/cronet/third_party/curl_headers/docs/examples/multithread.c
deleted file mode 100644
index a162000..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multithread.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * A multi-threaded example that uses pthreads to fetch several files at once
- * </DESC>
- */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <curl/curl.h>
-
-#define NUMT 4
-
-/*
- List of URLs to fetch.
-
- If you intend to use a SSL-based protocol here you might need to setup TLS
- library mutex callbacks as described here:
-
- https://curl.haxx.se/libcurl/c/threadsafe.html
-
-*/
-const char * const urls[NUMT]= {
- "https://curl.haxx.se/",
- "ftp://cool.haxx.se/",
- "https://www.cag.se/",
- "www.haxx.se"
-};
-
-static void *pull_one_url(void *url)
-{
- CURL *curl;
-
- curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, url);
- curl_easy_perform(curl); /* ignores error */
- curl_easy_cleanup(curl);
-
- return NULL;
-}
-
-
-/*
- int pthread_create(pthread_t *new_thread_ID,
- const pthread_attr_t *attr,
- void * (*start_func)(void *), void *arg);
-*/
-
-int main(int argc, char **argv)
-{
- pthread_t tid[NUMT];
- int i;
-
- /* Must initialize libcurl before any threads are started */
- curl_global_init(CURL_GLOBAL_ALL);
-
- for(i = 0; i< NUMT; i++) {
- int error = pthread_create(&tid[i],
- NULL, /* default attributes please */
- pull_one_url,
- (void *)urls[i]);
- if(0 != error)
- fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
- else
- fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
- }
-
- /* now wait for all threads to terminate */
- for(i = 0; i< NUMT; i++) {
- pthread_join(tid[i], NULL);
- fprintf(stderr, "Thread %d terminated\n", i);
- }
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/opensslthreadlock.c b/components/cronet/third_party/curl_headers/docs/examples/opensslthreadlock.c
deleted file mode 100644
index 649ef93a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/opensslthreadlock.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * one way to set the necessary OpenSSL locking callbacks if you want to do
- * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL.
- * </DESC>
- */
-/*
- * This is not a complete stand-alone example.
- *
- * Author: Jeremy Brown
- */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <openssl/err.h>
-
-#define MUTEX_TYPE pthread_mutex_t
-#define MUTEX_SETUP(x) pthread_mutex_init(&(x), NULL)
-#define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x))
-#define MUTEX_LOCK(x) pthread_mutex_lock(&(x))
-#define MUTEX_UNLOCK(x) pthread_mutex_unlock(&(x))
-#define THREAD_ID pthread_self()
-
-
-void handle_error(const char *file, int lineno, const char *msg)
-{
- fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
- ERR_print_errors_fp(stderr);
- /* exit(-1); */
-}
-
-/* This array will store all of the mutexes available to OpenSSL. */
-static MUTEX_TYPE *mutex_buf = NULL;
-
-static void locking_function(int mode, int n, const char *file, int line)
-{
- if(mode & CRYPTO_LOCK)
- MUTEX_LOCK(mutex_buf[n]);
- else
- MUTEX_UNLOCK(mutex_buf[n]);
-}
-
-static unsigned long id_function(void)
-{
- return ((unsigned long)THREAD_ID);
-}
-
-int thread_setup(void)
-{
- int i;
-
- mutex_buf = malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
- if(!mutex_buf)
- return 0;
- for(i = 0; i < CRYPTO_num_locks(); i++)
- MUTEX_SETUP(mutex_buf[i]);
- CRYPTO_set_id_callback(id_function);
- CRYPTO_set_locking_callback(locking_function);
- return 1;
-}
-
-int thread_cleanup(void)
-{
- int i;
-
- if(!mutex_buf)
- return 0;
- CRYPTO_set_id_callback(NULL);
- CRYPTO_set_locking_callback(NULL);
- for(i = 0; i < CRYPTO_num_locks(); i++)
- MUTEX_CLEANUP(mutex_buf[i]);
- free(mutex_buf);
- mutex_buf = NULL;
- return 1;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/parseurl.c b/components/cronet/third_party/curl_headers/docs/examples/parseurl.c
deleted file mode 100644
index ee427768..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/parseurl.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Basic URL API use.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-#if !CURL_AT_LEAST_VERSION(7, 62, 0)
-#error "this example requires curl 7.62.0 or later"
-#endif
-
-int main(void)
-{
- CURLU *h;
- CURLUcode uc;
- char *host;
- char *path;
-
- h = curl_url(); /* get a handle to work with */
- if(!h)
- return 1;
-
- /* parse a full URL */
- uc = curl_url_set(h, CURLUPART_URL, "http://example.com/path/index.html", 0);
- if(uc)
- goto fail;
-
- /* extract host name from the parsed URL */
- uc = curl_url_get(h, CURLUPART_HOST, &host, 0);
- if(!uc) {
- printf("Host name: %s\n", host);
- curl_free(host);
- }
-
- /* extract the path from the parsed URL */
- uc = curl_url_get(h, CURLUPART_PATH, &path, 0);
- if(!uc) {
- printf("Path: %s\n", path);
- curl_free(path);
- }
-
- /* redirect with a relative URL */
- uc = curl_url_set(h, CURLUPART_URL, "../another/second.html", 0);
- if(uc)
- goto fail;
-
- /* extract the new, updated path */
- uc = curl_url_get(h, CURLUPART_PATH, &path, 0);
- if(!uc) {
- printf("Path: %s\n", path);
- curl_free(path);
- }
-
- fail:
- curl_url_cleanup(h); /* free url handle */
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/persistent.c b/components/cronet/third_party/curl_headers/docs/examples/persistent.c
deleted file mode 100644
index 723b68b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/persistent.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * re-using handles to do HTTP persistent connections
- * </DESC>
- */
-#include <stdio.h>
-#include <unistd.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl_global_init(CURL_GLOBAL_ALL);
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
-
- /* get the first document */
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* get another document from the same server using the same
- connection */
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/docs/");
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-dele.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-dele.c
deleted file mode 100644
index 14497835..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-dele.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to delete e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to delete an existing mail using
- * libcurl's POP3 capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* You can specify the message either in the URL or DELE command */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
- /* Set the DELE command */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELE");
-
- /* Do not perform a transfer as DELE returns no data */
- curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-list.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-list.c
deleted file mode 100644
index b530a04..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-list.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example to list the contents of a mailbox
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example using libcurl's POP3 capabilities to list the
- * contents of a mailbox.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will list every message of the given mailbox */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
- /* Perform the list */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-multi.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-multi.c
deleted file mode 100644
index 4b87886..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-multi.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example using the multi interface
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities. It builds on the pop3-retr.c example to demonstrate how to use
- * libcurl's multi interface.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
-
-static struct timeval tvnow(void)
-{
- struct timeval now;
-
- /* time() returns the value of time in seconds since the epoch */
- now.tv_sec = (long)time(NULL);
- now.tv_usec = 0;
-
- return now;
-}
-
-static long tvdiff(struct timeval newer, struct timeval older)
-{
- return (newer.tv_sec - older.tv_sec) * 1000 +
- (newer.tv_usec - older.tv_usec) / 1000;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLM *mcurl;
- int still_running = 1;
- struct timeval mp_start;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(!curl)
- return 1;
-
- mcurl = curl_multi_init();
- if(!mcurl)
- return 2;
-
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will retrieve message 1 from the user's mailbox */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
- /* Tell the multi stack about our easy handle */
- curl_multi_add_handle(mcurl, curl);
-
- /* Record the start time which we can use later */
- mp_start = tvnow();
-
- /* We start some action by calling perform right away */
- curl_multi_perform(mcurl, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
- int rc;
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- long curl_timeo = -1;
-
- /* Initialise the file descriptors */
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* Set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(mcurl, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
- fprintf(stderr,
- "ABORTING: Since it seems that we would have run forever.\n");
- break;
- }
-
- switch(rc) {
- case -1: /* select error */
- break;
- case 0: /* timeout */
- default: /* action */
- curl_multi_perform(mcurl, &still_running);
- break;
- }
- }
-
- /* Always cleanup */
- curl_multi_remove_handle(mcurl, curl);
- curl_multi_cleanup(mcurl);
- curl_easy_cleanup(curl);
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-noop.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-noop.c
deleted file mode 100644
index bc162d0c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-noop.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to perform a noop
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to perform a noop using libcurl's POP3
- * capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
- /* Set the NOOP command */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "NOOP");
-
- /* Do not perform a transfer as NOOP returns no data */
- curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-retr.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-retr.c
deleted file mode 100644
index b36ddb5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-retr.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to retrieve e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will retrieve message 1 from the user's mailbox */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
- /* Perform the retr */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-ssl.c
deleted file mode 100644
index f0d4e26..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-ssl.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example using SSL
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities. It builds on the pop3-retr.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will retrieve message 1 from the user's mailbox. Note the use of
- * pop3s:// rather than pop3:// to request a SSL based connection. */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3s://pop.example.com/1");
-
- /* If you want to connect to a site who isn't using a certificate that is
- * signed by one of the certs in the CA bundle you have, you can skip the
- * verification of the server's certificate. This makes the connection
- * A LOT LESS SECURE.
- *
- * If you have a CA cert for the server stored someplace else than in the
- * default bundle, then the CURLOPT_CAPATH option might come handy for
- * you. */
-#ifdef SKIP_PEER_VERIFICATION
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
- /* If the site you're connecting to uses a different host name that what
- * they have mentioned in their server certificate's commonName (or
- * subjectAltName) fields, libcurl will refuse to connect. You can skip
- * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERIFICATION
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
- /* Since the traffic will be encrypted, it is very useful to turn on debug
- * information within libcurl to see what is happening during the
- * transfer */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Perform the retr */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-stat.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-stat.c
deleted file mode 100644
index 46a0a45..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-stat.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to obtain message statistics
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to obtain message statistics using
- * libcurl's POP3 capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
- /* Set the STAT command */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "STAT");
-
- /* Do not perform a transfer as the data is in the response */
- curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-tls.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-tls.c
deleted file mode 100644
index 1a6c447..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-tls.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example using TLS
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities. It builds on the pop3-retr.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This will retrieve message 1 from the user's mailbox */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
- /* In this example, we'll start with a plain text connection, and upgrade
- * to Transport Layer Security (TLS) using the STLS command. Be careful of
- * using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
- * will continue anyway - see the security discussion in the libcurl
- * tutorial for more details. */
- curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-
- /* If your server doesn't have a valid certificate, then you can disable
- * part of the Transport Layer Security protection by setting the
- * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
- * curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
- * curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
- *
- * That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though. Instead, you should get
- * the issuer certificate (or the host certificate if the certificate is
- * self-signed) and add it to the set of certificates that are known to
- * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
- * for more information. */
- curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
-
- /* Since the traffic will be encrypted, it is very useful to turn on debug
- * information within libcurl to see what is happening during the
- * transfer */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Perform the retr */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-top.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-top.c
deleted file mode 100644
index 4f5937f..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-top.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to retrieve only the headers of an e-mail
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve only the headers of a mail
- * using libcurl's POP3 capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
- /* Set the TOP command for message 1 to only include the headers */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "TOP 1 0");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-uidl.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-uidl.c
deleted file mode 100644
index f127120..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-uidl.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example to list the contents of a mailbox by unique ID
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example using libcurl's POP3 capabilities to list the
- * contents of a mailbox by unique ID.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is just the server URL */
- curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
- /* Set the UIDL command */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "UIDL");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/post-callback.c b/components/cronet/third_party/curl_headers/docs/examples/post-callback.c
deleted file mode 100644
index ebb4e2a2..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/post-callback.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Issue an HTTP POST and provide the data through the read callback.
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* silly test data to POST */
-static const char data[]="Lorem ipsum dolor sit amet, consectetur adipiscing "
- "elit. Sed vel urna neque. Ut quis leo metus. Quisque eleifend, ex at "
- "laoreet rhoncus, odio ipsum semper metus, at tempus ante urna in mauris. "
- "Suspendisse ornare tempor venenatis. Ut dui neque, pellentesque a varius "
- "eget, mattis vitae ligula. Fusce ut pharetra est. Ut ullamcorper mi ac "
- "sollicitudin semper. Praesent sit amet tellus varius, posuere nulla non, "
- "rhoncus ipsum.";
-
-struct WriteThis {
- const char *readptr;
- size_t sizeleft;
-};
-
-static size_t read_callback(void *dest, size_t size, size_t nmemb, void *userp)
-{
- struct WriteThis *wt = (struct WriteThis *)userp;
- size_t buffer_size = size*nmemb;
-
- if(wt->sizeleft) {
- /* copy as much as possible from the source to the destination */
- size_t copy_this_much = wt->sizeleft;
- if(copy_this_much > buffer_size)
- copy_this_much = buffer_size;
- memcpy(dest, wt->readptr, copy_this_much);
-
- wt->readptr += copy_this_much;
- wt->sizeleft -= copy_this_much;
- return copy_this_much; /* we copied this many bytes */
- }
-
- return 0; /* no more data left to deliver */
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- struct WriteThis wt;
-
- wt.readptr = data;
- wt.sizeleft = strlen(data);
-
- /* In windows, this will init the winsock stuff */
- res = curl_global_init(CURL_GLOBAL_DEFAULT);
- /* Check for errors */
- if(res != CURLE_OK) {
- fprintf(stderr, "curl_global_init() failed: %s\n",
- curl_easy_strerror(res));
- return 1;
- }
-
- /* get a curl handle */
- curl = curl_easy_init();
- if(curl) {
- /* First set the URL that is about to receive our POST. */
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/index.cgi");
-
- /* Now specify we want to POST data */
- curl_easy_setopt(curl, CURLOPT_POST, 1L);
-
- /* we want to use our own read function */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
- /* pointer to pass to our read function */
- curl_easy_setopt(curl, CURLOPT_READDATA, &wt);
-
- /* get verbose debug output please */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /*
- If you use POST to a HTTP 1.1 server, you can send data without knowing
- the size before starting the POST if you use chunked encoding. You
- enable this by adding a header like "Transfer-Encoding: chunked" with
- CURLOPT_HTTPHEADER. With HTTP 1.0 or without chunked transfer, you must
- specify the size in the request.
- */
-#ifdef USE_CHUNKED
- {
- struct curl_slist *chunk = NULL;
-
- chunk = curl_slist_append(chunk, "Transfer-Encoding: chunked");
- res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
- /* use curl_slist_free_all() after the *perform() call to free this
- list again */
- }
-#else
- /* Set the expected POST size. If you want to POST large amounts of data,
- consider CURLOPT_POSTFIELDSIZE_LARGE */
- curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)wt.sizeleft);
-#endif
-
-#ifdef DISABLE_EXPECT
- /*
- Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue"
- header. You can disable this header with CURLOPT_HTTPHEADER as usual.
- NOTE: if you want chunked transfer too, you need to combine these two
- since you can only set one list of headers with CURLOPT_HTTPHEADER. */
-
- /* A less good option would be to enforce HTTP 1.0, but that might also
- have other implications. */
- {
- struct curl_slist *chunk = NULL;
-
- chunk = curl_slist_append(chunk, "Expect:");
- res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
- /* use curl_slist_free_all() after the *perform() call to free this
- list again */
- }
-#endif
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/postinmemory.c b/components/cronet/third_party/curl_headers/docs/examples/postinmemory.c
deleted file mode 100644
index 376f334..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/postinmemory.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Make a HTTP POST with data from memory and receive response in memory.
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <curl/curl.h>
-
-struct MemoryStruct {
- char *memory;
- size_t size;
-};
-
-static size_t
-WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
-{
- size_t realsize = size * nmemb;
- struct MemoryStruct *mem = (struct MemoryStruct *)userp;
-
- char *ptr = realloc(mem->memory, mem->size + realsize + 1);
- if(!ptr) {
- /* out of memory! */
- printf("not enough memory (realloc returned NULL)\n");
- return 0;
- }
-
- mem->memory = ptr;
- memcpy(&(mem->memory[mem->size]), contents, realsize);
- mem->size += realsize;
- mem->memory[mem->size] = 0;
-
- return realsize;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct MemoryStruct chunk;
- static const char *postthis = "Field=1&Field=2&Field=3";
-
- chunk.memory = malloc(1); /* will be grown as needed by realloc above */
- chunk.size = 0; /* no data at this point */
-
- curl_global_init(CURL_GLOBAL_ALL);
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.org/");
-
- /* send all data to this function */
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
-
- /* we pass our 'chunk' struct to the callback function */
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
-
- /* some servers don't like requests that are made without a user-agent
- field, so we provide one */
- curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0");
-
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
-
- /* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
- itself */
- curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK) {
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
- }
- else {
- /*
- * Now, our chunk.memory points to a memory block that is chunk.size
- * bytes big and contains the remote file.
- *
- * Do something nice with it!
- */
- printf("%s\n",chunk.memory);
- }
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- /* we're done with libcurl, so clean it up */
- curl_global_cleanup();
- }
- free(chunk.memory);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/postit2-formadd.c b/components/cronet/third_party/curl_headers/docs/examples/postit2-formadd.c
deleted file mode 100644
index a501ce9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/postit2-formadd.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP Multipart formpost with file upload and two additional parts.
- * </DESC>
- */
-/* Example code that uploads a file name 'foo' to a remote script that accepts
- * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
- *
- * The imaginary form we'll fill in looks like:
- *
- * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
- * Enter file: <input type="file" name="sendfile" size="40">
- * Enter file name: <input type="text" name="filename" size="30">
- * <input type="submit" value="send" name="submit">
- * </form>
- *
- * This exact source code has not been verified to work.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-int main(int argc, char *argv[])
-{
- CURL *curl;
- CURLcode res;
-
- struct curl_httppost *formpost = NULL;
- struct curl_httppost *lastptr = NULL;
- struct curl_slist *headerlist = NULL;
- static const char buf[] = "Expect:";
-
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* Fill in the file upload field */
- curl_formadd(&formpost,
- &lastptr,
- CURLFORM_COPYNAME, "sendfile",
- CURLFORM_FILE, "postit2.c",
- CURLFORM_END);
-
- /* Fill in the filename field */
- curl_formadd(&formpost,
- &lastptr,
- CURLFORM_COPYNAME, "filename",
- CURLFORM_COPYCONTENTS, "postit2.c",
- CURLFORM_END);
-
-
- /* Fill in the submit field too, even if this is rarely needed */
- curl_formadd(&formpost,
- &lastptr,
- CURLFORM_COPYNAME, "submit",
- CURLFORM_COPYCONTENTS, "send",
- CURLFORM_END);
-
- curl = curl_easy_init();
- /* initialize custom header list (stating that Expect: 100-continue is not
- wanted */
- headerlist = curl_slist_append(headerlist, buf);
- if(curl) {
- /* what URL that receives this POST */
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/examplepost.cgi");
- if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
- /* only disable 100-continue header if explicitly requested */
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
- curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- /* then cleanup the formpost chain */
- curl_formfree(formpost);
- /* free slist */
- curl_slist_free_all(headerlist);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/postit2.c b/components/cronet/third_party/curl_headers/docs/examples/postit2.c
deleted file mode 100644
index 2808f7a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/postit2.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP Multipart formpost with file upload and two additional parts.
- * </DESC>
- */
-/* Example code that uploads a file name 'foo' to a remote script that accepts
- * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
- *
- * The imaginary form we'll fill in looks like:
- *
- * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
- * Enter file: <input type="file" name="sendfile" size="40">
- * Enter file name: <input type="text" name="filename" size="30">
- * <input type="submit" value="send" name="submit">
- * </form>
- *
- * This exact source code has not been verified to work.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-int main(int argc, char *argv[])
-{
- CURL *curl;
- CURLcode res;
-
- curl_mime *form = NULL;
- curl_mimepart *field = NULL;
- struct curl_slist *headerlist = NULL;
- static const char buf[] = "Expect:";
-
- curl_global_init(CURL_GLOBAL_ALL);
-
- curl = curl_easy_init();
- if(curl) {
- /* Create the form */
- form = curl_mime_init(curl);
-
- /* Fill in the file upload field */
- field = curl_mime_addpart(form);
- curl_mime_name(field, "sendfile");
- curl_mime_filedata(field, "postit2.c");
-
- /* Fill in the filename field */
- field = curl_mime_addpart(form);
- curl_mime_name(field, "filename");
- curl_mime_data(field, "postit2.c", CURL_ZERO_TERMINATED);
-
- /* Fill in the submit field too, even if this is rarely needed */
- field = curl_mime_addpart(form);
- curl_mime_name(field, "submit");
- curl_mime_data(field, "send", CURL_ZERO_TERMINATED);
-
- /* initialize custom header list (stating that Expect: 100-continue is not
- wanted */
- headerlist = curl_slist_append(headerlist, buf);
- /* what URL that receives this POST */
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/examplepost.cgi");
- if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
- /* only disable 100-continue header if explicitly requested */
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
- curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- /* then cleanup the form */
- curl_mime_free(form);
- /* free slist */
- curl_slist_free_all(headerlist);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/progressfunc.c b/components/cronet/third_party/curl_headers/docs/examples/progressfunc.c
deleted file mode 100644
index 86ad0d9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/progressfunc.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Use the progress callbacks, old and/or new one depending on available
- * libcurl version.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-#if LIBCURL_VERSION_NUM >= 0x073d00
-/* In libcurl 7.61.0, support was added for extracting the time in plain
- microseconds. Older libcurl versions are stuck in using 'double' for this
- information so we complicate this example a bit by supporting either
- approach. */
-#define TIME_IN_US 1 /* microseconds */
-#define TIMETYPE curl_off_t
-#define TIMEOPT CURLINFO_TOTAL_TIME_T
-#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL 3000000
-#else
-#define TIMETYPE double
-#define TIMEOPT CURLINFO_TOTAL_TIME
-#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL 3
-#endif
-
-#define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES 6000
-
-struct myprogress {
- TIMETYPE lastruntime; /* type depends on version, see above */
- CURL *curl;
-};
-
-/* this is how the CURLOPT_XFERINFOFUNCTION callback works */
-static int xferinfo(void *p,
- curl_off_t dltotal, curl_off_t dlnow,
- curl_off_t ultotal, curl_off_t ulnow)
-{
- struct myprogress *myp = (struct myprogress *)p;
- CURL *curl = myp->curl;
- TIMETYPE curtime = 0;
-
- curl_easy_getinfo(curl, TIMEOPT, &curtime);
-
- /* under certain circumstances it may be desirable for certain functionality
- to only run every N seconds, in order to do this the transaction time can
- be used */
- if((curtime - myp->lastruntime) >= MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL) {
- myp->lastruntime = curtime;
-#ifdef TIME_IN_US
- fprintf(stderr, "TOTAL TIME: %" CURL_FORMAT_CURL_OFF_T ".%06ld\r\n",
- (curtime / 1000000), (long)(curtime % 1000000));
-#else
- fprintf(stderr, "TOTAL TIME: %f \r\n", curtime);
-#endif
- }
-
- fprintf(stderr, "UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
- " DOWN: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
- "\r\n",
- ulnow, ultotal, dlnow, dltotal);
-
- if(dlnow > STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES)
- return 1;
- return 0;
-}
-
-#if LIBCURL_VERSION_NUM < 0x072000
-/* for libcurl older than 7.32.0 (CURLOPT_PROGRESSFUNCTION) */
-static int older_progress(void *p,
- double dltotal, double dlnow,
- double ultotal, double ulnow)
-{
- return xferinfo(p,
- (curl_off_t)dltotal,
- (curl_off_t)dlnow,
- (curl_off_t)ultotal,
- (curl_off_t)ulnow);
-}
-#endif
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
- struct myprogress prog;
-
- curl = curl_easy_init();
- if(curl) {
- prog.lastruntime = 0;
- prog.curl = curl;
-
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-
-#if LIBCURL_VERSION_NUM >= 0x072000
- /* xferinfo was introduced in 7.32.0, no earlier libcurl versions will
- compile as they won't have the symbols around.
-
- If built with a newer libcurl, but running with an older libcurl:
- curl_easy_setopt() will fail in run-time trying to set the new
- callback, making the older callback get used.
-
- New libcurls will prefer the new callback and instead use that one even
- if both callbacks are set. */
-
- curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xferinfo);
- /* pass the struct pointer into the xferinfo function, note that this is
- an alias to CURLOPT_PROGRESSDATA */
- curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &prog);
-#else
- curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, older_progress);
- /* pass the struct pointer into the progress function */
- curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &prog);
-#endif
-
- curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
- res = curl_easy_perform(curl);
-
- if(res != CURLE_OK)
- fprintf(stderr, "%s\n", curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/resolve.c b/components/cronet/third_party/curl_headers/docs/examples/resolve.c
deleted file mode 100644
index c0b5415..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/resolve.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Use CURLOPT_RESOLVE to feed custom IP addresses for given host name + port
- * number combinations.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- /* Each single name resolve string should be written using the format
- HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve,
- PORT is the port number of the service where libcurl wants to connect to
- the HOST and ADDRESS is the numerical IP address
- */
- struct curl_slist *host = curl_slist_append(NULL,
- "example.com:443:127.0.0.1");
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- res = curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- curl_slist_free_all(host);
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/rtsp.c b/components/cronet/third_party/curl_headers/docs/examples/rtsp.c
deleted file mode 100644
index 75b5d396..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/rtsp.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (c) 2011, Jim Hollinger
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Jim Hollinger nor the names of its contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-/* <DESC>
- * A basic RTSP transfer
- * </DESC>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined (WIN32)
-# include <conio.h> /* _getch() */
-#else
-# include <termios.h>
-# include <unistd.h>
-
-static int _getch(void)
-{
- struct termios oldt, newt;
- int ch;
- tcgetattr(STDIN_FILENO, &oldt);
- newt = oldt;
- newt.c_lflag &= ~( ICANON | ECHO);
- tcsetattr(STDIN_FILENO, TCSANOW, &newt);
- ch = getchar();
- tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
- return ch;
-}
-#endif
-
-#include <curl/curl.h>
-
-#define VERSION_STR "V1.0"
-
-/* error handling macros */
-#define my_curl_easy_setopt(A, B, C) \
- res = curl_easy_setopt((A), (B), (C)); \
- if(res != CURLE_OK) \
- fprintf(stderr, "curl_easy_setopt(%s, %s, %s) failed: %d\n", \
- #A, #B, #C, res);
-
-#define my_curl_easy_perform(A) \
- res = curl_easy_perform(A); \
- if(res != CURLE_OK) \
- fprintf(stderr, "curl_easy_perform(%s) failed: %d\n", #A, res);
-
-
-/* send RTSP OPTIONS request */
-static void rtsp_options(CURL *curl, const char *uri)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: OPTIONS %s\n", uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_OPTIONS);
- my_curl_easy_perform(curl);
-}
-
-
-/* send RTSP DESCRIBE request and write sdp response to a file */
-static void rtsp_describe(CURL *curl, const char *uri,
- const char *sdp_filename)
-{
- CURLcode res = CURLE_OK;
- FILE *sdp_fp = fopen(sdp_filename, "wb");
- printf("\nRTSP: DESCRIBE %s\n", uri);
- if(sdp_fp == NULL) {
- fprintf(stderr, "Could not open '%s' for writing\n", sdp_filename);
- sdp_fp = stdout;
- }
- else {
- printf("Writing SDP to '%s'\n", sdp_filename);
- }
- my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, sdp_fp);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_DESCRIBE);
- my_curl_easy_perform(curl);
- my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
- if(sdp_fp != stdout) {
- fclose(sdp_fp);
- }
-}
-
-/* send RTSP SETUP request */
-static void rtsp_setup(CURL *curl, const char *uri, const char *transport)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: SETUP %s\n", uri);
- printf(" TRANSPORT %s\n", transport);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_TRANSPORT, transport);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_SETUP);
- my_curl_easy_perform(curl);
-}
-
-
-/* send RTSP PLAY request */
-static void rtsp_play(CURL *curl, const char *uri, const char *range)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: PLAY %s\n", uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
- my_curl_easy_setopt(curl, CURLOPT_RANGE, range);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_PLAY);
- my_curl_easy_perform(curl);
-
- /* switch off using range again */
- my_curl_easy_setopt(curl, CURLOPT_RANGE, NULL);
-}
-
-
-/* send RTSP TEARDOWN request */
-static void rtsp_teardown(CURL *curl, const char *uri)
-{
- CURLcode res = CURLE_OK;
- printf("\nRTSP: TEARDOWN %s\n", uri);
- my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_TEARDOWN);
- my_curl_easy_perform(curl);
-}
-
-
-/* convert url into an sdp filename */
-static void get_sdp_filename(const char *url, char *sdp_filename,
- size_t namelen)
-{
- const char *s = strrchr(url, '/');
- strcpy(sdp_filename, "video.sdp");
- if(s != NULL) {
- s++;
- if(s[0] != '\0') {
- snprintf(sdp_filename, namelen, "%s.sdp", s);
- }
- }
-}
-
-
-/* scan sdp file for media control attribute */
-static void get_media_control_attribute(const char *sdp_filename,
- char *control)
-{
- int max_len = 256;
- char *s = malloc(max_len);
- FILE *sdp_fp = fopen(sdp_filename, "rb");
- control[0] = '\0';
- if(sdp_fp != NULL) {
- while(fgets(s, max_len - 2, sdp_fp) != NULL) {
- sscanf(s, " a = control: %s", control);
- }
- fclose(sdp_fp);
- }
- free(s);
-}
-
-
-/* main app */
-int main(int argc, char * const argv[])
-{
-#if 1
- const char *transport = "RTP/AVP;unicast;client_port=1234-1235"; /* UDP */
-#else
- /* TCP */
- const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235";
-#endif
- const char *range = "0.000-";
- int rc = EXIT_SUCCESS;
- char *base_name = NULL;
-
- printf("\nRTSP request %s\n", VERSION_STR);
- printf(" Project web site: "
- "https://github.com/BackupGGCode/rtsprequest\n");
- printf(" Requires curl V7.20 or greater\n\n");
-
- /* check command line */
- if((argc != 2) && (argc != 3)) {
- base_name = strrchr(argv[0], '/');
- if(base_name == NULL) {
- base_name = strrchr(argv[0], '\\');
- }
- if(base_name == NULL) {
- base_name = argv[0];
- }
- else {
- base_name++;
- }
- printf("Usage: %s url [transport]\n", base_name);
- printf(" url of video server\n");
- printf(" transport (optional) specifier for media stream"
- " protocol\n");
- printf(" default transport: %s\n", transport);
- printf("Example: %s rtsp://192.168.0.2/media/video1\n\n", base_name);
- rc = EXIT_FAILURE;
- }
- else {
- const char *url = argv[1];
- char *uri = malloc(strlen(url) + 32);
- char *sdp_filename = malloc(strlen(url) + 32);
- char *control = malloc(strlen(url) + 32);
- CURLcode res;
- get_sdp_filename(url, sdp_filename, strlen(url) + 32);
- if(argc == 3) {
- transport = argv[2];
- }
-
- /* initialize curl */
- res = curl_global_init(CURL_GLOBAL_ALL);
- if(res == CURLE_OK) {
- curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
- CURL *curl;
- fprintf(stderr, " curl V%s loaded\n", data->version);
-
- /* initialize this curl session */
- curl = curl_easy_init();
- if(curl != NULL) {
- my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
- my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
- my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
- my_curl_easy_setopt(curl, CURLOPT_URL, url);
-
- /* request server options */
- snprintf(uri, strlen(url) + 32, "%s", url);
- rtsp_options(curl, uri);
-
- /* request session description and write response to sdp file */
- rtsp_describe(curl, uri, sdp_filename);
-
- /* get media control attribute from sdp file */
- get_media_control_attribute(sdp_filename, control);
-
- /* setup media stream */
- snprintf(uri, strlen(url) + 32, "%s/%s", url, control);
- rtsp_setup(curl, uri, transport);
-
- /* start playing media stream */
- snprintf(uri, strlen(url) + 32, "%s/", url);
- rtsp_play(curl, uri, range);
- printf("Playing video, press any key to stop ...");
- _getch();
- printf("\n");
-
- /* teardown session */
- rtsp_teardown(curl, uri);
-
- /* cleanup */
- curl_easy_cleanup(curl);
- curl = NULL;
- }
- else {
- fprintf(stderr, "curl_easy_init() failed\n");
- }
- curl_global_cleanup();
- }
- else {
- fprintf(stderr, "curl_global_init(%s) failed: %d\n",
- "CURL_GLOBAL_ALL", res);
- }
- free(control);
- free(sdp_filename);
- free(uri);
- }
-
- return rc;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sampleconv.c b/components/cronet/third_party/curl_headers/docs/examples/sampleconv.c
deleted file mode 100644
index 1c4aec6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sampleconv.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * This is a simple example showing how a program on a non-ASCII platform
- * would invoke callbacks to do its own codeset conversions instead of
- * using the built-in iconv functions in libcurl.
- * </DESC>
- */
-/*
-
- The IBM-1047 EBCDIC codeset is used for this example but the code
- would be similar for other non-ASCII codesets.
-
- Three callback functions are created below:
- my_conv_from_ascii_to_ebcdic,
- my_conv_from_ebcdic_to_ascii, and
- my_conv_from_utf8_to_ebcdic
-
- The "platform_xxx" calls represent platform-specific conversion routines.
-
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-static CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length)
-{
- char *tempptrin, *tempptrout;
- size_t bytes = length;
- int rc;
- tempptrin = tempptrout = buffer;
- rc = platform_a2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if(rc == PLATFORM_CONV_OK) {
- return CURLE_OK;
- }
- else {
- return CURLE_CONV_FAILED;
- }
-}
-
-static CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length)
-{
- char *tempptrin, *tempptrout;
- size_t bytes = length;
- int rc;
- tempptrin = tempptrout = buffer;
- rc = platform_e2a(&tempptrin, &bytes, &tempptrout, &bytes);
- if(rc == PLATFORM_CONV_OK) {
- return CURLE_OK;
- }
- else {
- return CURLE_CONV_FAILED;
- }
-}
-
-static CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length)
-{
- char *tempptrin, *tempptrout;
- size_t bytes = length;
- int rc;
- tempptrin = tempptrout = buffer;
- rc = platform_u2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if(rc == PLATFORM_CONV_OK) {
- return CURLE_OK;
- }
- else {
- return CURLE_CONV_FAILED;
- }
-}
-
-int main(void)
-{
- CURL *curl;
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-
- /* use platform-specific functions for codeset conversions */
- curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- my_conv_from_ascii_to_ebcdic);
- curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION,
- my_conv_from_ebcdic_to_ascii);
- curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION,
- my_conv_from_utf8_to_ebcdic);
-
- curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sendrecv.c b/components/cronet/third_party/curl_headers/docs/examples/sendrecv.c
deleted file mode 100644
index 5660a795..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sendrecv.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * An example of curl_easy_send() and curl_easy_recv() usage.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* Auxiliary function that waits on the socket. */
-static int wait_on_socket(curl_socket_t sockfd, int for_recv, long timeout_ms)
-{
- struct timeval tv;
- fd_set infd, outfd, errfd;
- int res;
-
- tv.tv_sec = timeout_ms / 1000;
- tv.tv_usec = (timeout_ms % 1000) * 1000;
-
- FD_ZERO(&infd);
- FD_ZERO(&outfd);
- FD_ZERO(&errfd);
-
- FD_SET(sockfd, &errfd); /* always check for error */
-
- if(for_recv) {
- FD_SET(sockfd, &infd);
- }
- else {
- FD_SET(sockfd, &outfd);
- }
-
- /* select() returns the number of signalled sockets or -1 */
- res = select((int)sockfd + 1, &infd, &outfd, &errfd, &tv);
- return res;
-}
-
-int main(void)
-{
- CURL *curl;
- /* Minimalistic http request */
- const char *request = "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n";
- size_t request_len = strlen(request);
-
- /* A general note of caution here: if you're using curl_easy_recv() or
- curl_easy_send() to implement HTTP or _any_ other protocol libcurl
- supports "natively", you're doing it wrong and you should stop.
-
- This example uses HTTP only to show how to use this API, it does not
- suggest that writing an application doing this is sensible.
- */
-
- curl = curl_easy_init();
- if(curl) {
- CURLcode res;
- curl_socket_t sockfd;
- size_t nsent_total = 0;
-
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- /* Do not do the transfer - only connect to host */
- curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
- res = curl_easy_perform(curl);
-
- if(res != CURLE_OK) {
- printf("Error: %s\n", curl_easy_strerror(res));
- return 1;
- }
-
- /* Extract the socket from the curl handle - we'll need it for waiting. */
- res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd);
-
- if(res != CURLE_OK) {
- printf("Error: %s\n", curl_easy_strerror(res));
- return 1;
- }
-
- printf("Sending request.\n");
-
- do {
- /* Warning: This example program may loop indefinitely.
- * A production-quality program must define a timeout and exit this loop
- * as soon as the timeout has expired. */
- size_t nsent;
- do {
- nsent = 0;
- res = curl_easy_send(curl, request + nsent_total,
- request_len - nsent_total, &nsent);
- nsent_total += nsent;
-
- if(res == CURLE_AGAIN && !wait_on_socket(sockfd, 0, 60000L)) {
- printf("Error: timeout.\n");
- return 1;
- }
- } while(res == CURLE_AGAIN);
-
- if(res != CURLE_OK) {
- printf("Error: %s\n", curl_easy_strerror(res));
- return 1;
- }
-
- printf("Sent %" CURL_FORMAT_CURL_OFF_T " bytes.\n",
- (curl_off_t)nsent);
-
- } while(nsent_total < request_len);
-
- printf("Reading response.\n");
-
- for(;;) {
- /* Warning: This example program may loop indefinitely (see above). */
- char buf[1024];
- size_t nread;
- do {
- nread = 0;
- res = curl_easy_recv(curl, buf, sizeof(buf), &nread);
-
- if(res == CURLE_AGAIN && !wait_on_socket(sockfd, 1, 60000L)) {
- printf("Error: timeout.\n");
- return 1;
- }
- } while(res == CURLE_AGAIN);
-
- if(res != CURLE_OK) {
- printf("Error: %s\n", curl_easy_strerror(res));
- break;
- }
-
- if(nread == 0) {
- /* end of the response */
- break;
- }
-
- printf("Received %" CURL_FORMAT_CURL_OFF_T " bytes.\n",
- (curl_off_t)nread);
- }
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sepheaders.c b/components/cronet/third_party/curl_headers/docs/examples/sepheaders.c
deleted file mode 100644
index 8f3a5ff0..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sepheaders.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Simple HTTP GET that stores the headers in a separate file
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-
-static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
- return written;
-}
-
-int main(void)
-{
- CURL *curl_handle;
- static const char *headerfilename = "head.out";
- FILE *headerfile;
- static const char *bodyfilename = "body.out";
- FILE *bodyfile;
-
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* init the curl session */
- curl_handle = curl_easy_init();
-
- /* set URL to get */
- curl_easy_setopt(curl_handle, CURLOPT_URL, "https://example.com");
-
- /* no progress meter please */
- curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
-
- /* send all data to this function */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
-
- /* open the header file */
- headerfile = fopen(headerfilename, "wb");
- if(!headerfile) {
- curl_easy_cleanup(curl_handle);
- return -1;
- }
-
- /* open the body file */
- bodyfile = fopen(bodyfilename, "wb");
- if(!bodyfile) {
- curl_easy_cleanup(curl_handle);
- fclose(headerfile);
- return -1;
- }
-
- /* we want the headers be written to this file handle */
- curl_easy_setopt(curl_handle, CURLOPT_HEADERDATA, headerfile);
-
- /* we want the body be written to this file handle instead of stdout */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile);
-
- /* get it! */
- curl_easy_perform(curl_handle);
-
- /* close the header file */
- fclose(headerfile);
-
- /* close the body file */
- fclose(bodyfile);
-
- /* cleanup curl stuff */
- curl_easy_cleanup(curl_handle);
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sessioninfo.c b/components/cronet/third_party/curl_headers/docs/examples/sessioninfo.c
deleted file mode 100644
index 86a813a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sessioninfo.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Uses the CURLINFO_TLS_SESSION data.
- * </DESC>
- */
-
-/* Note that this example currently requires curl to be linked against
- GnuTLS (and this program must also be linked against -lgnutls). */
-
-#include <stdio.h>
-
-#include <curl/curl.h>
-#include <gnutls/gnutls.h>
-
-static CURL *curl;
-
-static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- const struct curl_tlssessioninfo *info;
- unsigned int cert_list_size;
- const gnutls_datum_t *chainp;
- CURLcode res;
-
- (void)stream;
- (void)ptr;
-
- res = curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &info);
-
- if(!res) {
- switch(info->backend) {
- case CURLSSLBACKEND_GNUTLS:
- /* info->internals is now the gnutls_session_t */
- chainp = gnutls_certificate_get_peers(info->internals, &cert_list_size);
- if((chainp) && (cert_list_size)) {
- unsigned int i;
-
- for(i = 0; i < cert_list_size; i++) {
- gnutls_x509_crt_t cert;
- gnutls_datum_t dn;
-
- if(GNUTLS_E_SUCCESS == gnutls_x509_crt_init(&cert)) {
- if(GNUTLS_E_SUCCESS ==
- gnutls_x509_crt_import(cert, &chainp[i], GNUTLS_X509_FMT_DER)) {
- if(GNUTLS_E_SUCCESS ==
- gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, &dn)) {
- fprintf(stderr, "Certificate #%u: %.*s", i, dn.size, dn.data);
-
- gnutls_free(dn.data);
- }
- }
-
- gnutls_x509_crt_deinit(cert);
- }
- }
- }
- break;
- case CURLSSLBACKEND_NONE:
- default:
- break;
- }
- }
-
- return size * nmemb;
-}
-
-int main(void)
-{
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
-
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu);
-
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
-
- (void) curl_easy_perform(curl);
-
- curl_easy_cleanup(curl);
- }
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sftpget.c b/components/cronet/third_party/curl_headers/docs/examples/sftpget.c
deleted file mode 100644
index e5a74b9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sftpget.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Gets a file using an SFTP URL.
- * </DESC>
- */
-
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* define this to switch off the use of ssh-agent in this program */
-#undef DISABLE_SSH_AGENT
-
-/*
- * This is an example showing how to get a single file from an SFTP server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
- */
-
-struct FtpFile {
- const char *filename;
- FILE *stream;
-};
-
-static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
- void *stream)
-{
- struct FtpFile *out = (struct FtpFile *)stream;
- if(!out->stream) {
- /* open file for writing */
- out->stream = fopen(out->filename, "wb");
- if(!out->stream)
- return -1; /* failure, can't open file to write */
- }
- return fwrite(buffer, size, nmemb, out->stream);
-}
-
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct FtpFile ftpfile = {
- "yourfile.bin", /* name to store the file as if successful */
- NULL
- };
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- /*
- * You better replace the URL with one that works!
- */
- curl_easy_setopt(curl, CURLOPT_URL,
- "sftp://user@server/home/user/file.txt");
- /* Define our callback to get called when there's data to be written */
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
- /* Set a pointer to our struct to pass to the callback */
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
-
-#ifndef DISABLE_SSH_AGENT
- /* We activate ssh agent. For this to work you need
- to have ssh-agent running (type set | grep SSH_AGENT to check) or
- pageant on Windows (there is an icon in systray if so) */
- curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_AGENT);
-#endif
-
- /* Switch on full protocol/debug output */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- res = curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- if(CURLE_OK != res) {
- /* we failed */
- fprintf(stderr, "curl told us %d\n", res);
- }
- }
-
- if(ftpfile.stream)
- fclose(ftpfile.stream); /* close the local file */
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sftpuploadresume.c b/components/cronet/third_party/curl_headers/docs/examples/sftpuploadresume.c
deleted file mode 100644
index e7d9d23..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sftpuploadresume.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Upload to SFTP, resuming a previously aborted transfer.
- * </DESC>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* read data to upload */
-static size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- FILE *f = (FILE *)stream;
- size_t n;
-
- if(ferror(f))
- return CURL_READFUNC_ABORT;
-
- n = fread(ptr, size, nmemb, f) * size;
-
- return n;
-}
-
-/*
- * sftpGetRemoteFileSize returns the remote file size in byte; -1 on error
- */
-static curl_off_t sftpGetRemoteFileSize(const char *i_remoteFile)
-{
- CURLcode result = CURLE_GOT_NOTHING;
- curl_off_t remoteFileSizeByte = -1;
- CURL *curlHandlePtr = curl_easy_init();
-
- curl_easy_setopt(curlHandlePtr, CURLOPT_VERBOSE, 1L);
-
- curl_easy_setopt(curlHandlePtr, CURLOPT_URL, i_remoteFile);
- curl_easy_setopt(curlHandlePtr, CURLOPT_NOPROGRESS, 1);
- curl_easy_setopt(curlHandlePtr, CURLOPT_NOBODY, 1);
- curl_easy_setopt(curlHandlePtr, CURLOPT_HEADER, 1);
- curl_easy_setopt(curlHandlePtr, CURLOPT_FILETIME, 1);
-
- result = curl_easy_perform(curlHandlePtr);
- if(CURLE_OK == result) {
- result = curl_easy_getinfo(curlHandlePtr,
- CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
- &remoteFileSizeByte);
- if(result)
- return -1;
- printf("filesize: %" CURL_FORMAT_CURL_OFF_T "\n", remoteFileSizeByte);
- }
- curl_easy_cleanup(curlHandlePtr);
-
- return remoteFileSizeByte;
-}
-
-
-static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
- const char *localpath)
-{
- FILE *f = NULL;
- CURLcode result = CURLE_GOT_NOTHING;
-
- curl_off_t remoteFileSizeByte = sftpGetRemoteFileSize(remotepath);
- if(-1 == remoteFileSizeByte) {
- printf("Error reading the remote file size: unable to resume upload\n");
- return -1;
- }
-
- f = fopen(localpath, "rb");
- if(!f) {
- perror(NULL);
- return 0;
- }
-
- curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
- curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
- curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
- curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
-
-#ifdef _WIN32
- _fseeki64(f, remoteFileSizeByte, SEEK_SET);
-#else
- fseek(f, (long)remoteFileSizeByte, SEEK_SET);
-#endif
- curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
- result = curl_easy_perform(curlhandle);
-
- fclose(f);
-
- if(result == CURLE_OK)
- return 1;
- else {
- fprintf(stderr, "%s\n", curl_easy_strerror(result));
- return 0;
- }
-}
-
-int main(void)
-{
- const char *remote = "sftp://user:pass@example.com/path/filename";
- const char *filename = "filename";
- CURL *curlhandle = NULL;
-
- curl_global_init(CURL_GLOBAL_ALL);
- curlhandle = curl_easy_init();
-
- if(!sftpResumeUpload(curlhandle, remote, filename)) {
- printf("resumed upload using curl %s failed\n", curl_version());
- }
-
- curl_easy_cleanup(curlhandle);
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/shared-connection-cache.c b/components/cronet/third_party/curl_headers/docs/examples/shared-connection-cache.c
deleted file mode 100644
index 639ad9c5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/shared-connection-cache.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Connection cache shared between easy handles with the share interface
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-static void my_lock(CURL *handle, curl_lock_data data,
- curl_lock_access laccess, void *useptr)
-{
- (void)handle;
- (void)data;
- (void)laccess;
- (void)useptr;
- fprintf(stderr, "-> Mutex lock\n");
-}
-
-static void my_unlock(CURL *handle, curl_lock_data data, void *useptr)
-{
- (void)handle;
- (void)data;
- (void)useptr;
- fprintf(stderr, "<- Mutex unlock\n");
-}
-
-int main(void)
-{
- CURLSH *share;
- int i;
-
- share = curl_share_init();
- curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
-
- curl_share_setopt(share, CURLSHOPT_LOCKFUNC, my_lock);
- curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, my_unlock);
-
- /* Loop the transfer and cleanup the handle properly every lap. This will
- still reuse connections since the pool is in the shared object! */
-
- for(i = 0; i < 3; i++) {
- CURL *curl = curl_easy_init();
- if(curl) {
- CURLcode res;
-
- curl_easy_setopt(curl, CURLOPT_URL, "https://curl.haxx.se/");
-
- /* use the share object */
- curl_easy_setopt(curl, CURLOPT_SHARE, share);
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- }
-
- curl_share_cleanup(share);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/simple.c b/components/cronet/third_party/curl_headers/docs/examples/simple.c
deleted file mode 100644
index c61227054..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/simple.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Very simple HTTP GET
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- /* example.com is redirected, so we tell libcurl to follow redirection */
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/simplepost.c b/components/cronet/third_party/curl_headers/docs/examples/simplepost.c
deleted file mode 100644
index 8ec537b5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/simplepost.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Very simple HTTP POST
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- static const char *postthis = "moo mooo moo moo";
-
- curl = curl_easy_init();
- if(curl) {
- curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
-
- /* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
- itself */
- curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/simplessl.c b/components/cronet/third_party/curl_headers/docs/examples/simplessl.c
deleted file mode 100644
index fdc7cf1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/simplessl.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Shows HTTPS usage with client certs and optional ssl engine use.
- * </DESC>
- */
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* some requirements for this to work:
- 1. set pCertFile to the file with the client certificate
- 2. if the key is passphrase protected, set pPassphrase to the
- passphrase you use
- 3. if you are using a crypto engine:
- 3.1. set a #define USE_ENGINE
- 3.2. set pEngine to the name of the crypto engine you use
- 3.3. set pKeyName to the key identifier you want to use
- 4. if you don't use a crypto engine:
- 4.1. set pKeyName to the file name of your client key
- 4.2. if the format of the key file is DER, set pKeyType to "DER"
-
- !! verify of the server certificate is not implemented here !!
-
- **** This example only works with libcurl 7.9.3 and later! ****
-
-*/
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- FILE *headerfile;
- const char *pPassphrase = NULL;
-
- static const char *pCertFile = "testcert.pem";
- static const char *pCACertFile = "cacert.pem";
- static const char *pHeaderFile = "dumpit";
-
- const char *pKeyName;
- const char *pKeyType;
-
- const char *pEngine;
-
-#ifdef USE_ENGINE
- pKeyName = "rsa_test";
- pKeyType = "ENG";
- pEngine = "chil"; /* for nChiper HSM... */
-#else
- pKeyName = "testkey.pem";
- pKeyType = "PEM";
- pEngine = NULL;
-#endif
-
- headerfile = fopen(pHeaderFile, "wb");
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(curl) {
- /* what call to write: */
- curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
- curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
-
- do { /* dummy loop, just to break out from */
- if(pEngine) {
- /* use crypto engine */
- if(curl_easy_setopt(curl, CURLOPT_SSLENGINE, pEngine) != CURLE_OK) {
- /* load the crypto engine */
- fprintf(stderr, "can't set crypto engine\n");
- break;
- }
- if(curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L) != CURLE_OK) {
- /* set the crypto engine as default */
- /* only needed for the first time you load
- a engine in a curl object... */
- fprintf(stderr, "can't set crypto engine as default\n");
- break;
- }
- }
- /* cert is stored PEM coded in file... */
- /* since PEM is default, we needn't set it for PEM */
- curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
-
- /* set the cert for client authentication */
- curl_easy_setopt(curl, CURLOPT_SSLCERT, pCertFile);
-
- /* sorry, for engine we must set the passphrase
- (if the key has one...) */
- if(pPassphrase)
- curl_easy_setopt(curl, CURLOPT_KEYPASSWD, pPassphrase);
-
- /* if we use a key stored in a crypto engine,
- we must set the key type to "ENG" */
- curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, pKeyType);
-
- /* set the private key (file or ID in engine) */
- curl_easy_setopt(curl, CURLOPT_SSLKEY, pKeyName);
-
- /* set the file with the certs vaildating the server */
- curl_easy_setopt(curl, CURLOPT_CAINFO, pCACertFile);
-
- /* disconnect if we can't validate server's cert */
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
-
- /* Perform the request, res will get the return code */
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* we are done... */
- } while(0);
- /* always cleanup */
- curl_easy_cleanup(curl);
- }
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smooth-gtk-thread.c b/components/cronet/third_party/curl_headers/docs/examples/smooth-gtk-thread.c
deleted file mode 100644
index b64c4861..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smooth-gtk-thread.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * A multi threaded application that uses a progress bar to show
- * status. It uses Gtk+ to make a smooth pulse.
- * </DESC>
- */
-/*
- * Written by Jud Bishop after studying the other examples provided with
- * libcurl.
- *
- * To compile (on a single line):
- * gcc -ggdb `pkg-config --cflags --libs gtk+-2.0` -lcurl -lssl -lcrypto
- * -lgthread-2.0 -dl smooth-gtk-thread.c -o smooth-gtk-thread
- */
-
-#include <stdio.h>
-#include <gtk/gtk.h>
-#include <glib.h>
-#include <unistd.h>
-#include <pthread.h>
-
-#include <curl/curl.h>
-
-#define NUMT 4
-
-pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-int j = 0;
-gint num_urls = 9; /* Just make sure this is less than urls[]*/
-const char * const urls[]= {
- "90022",
- "90023",
- "90024",
- "90025",
- "90026",
- "90027",
- "90028",
- "90029",
- "90030"
-};
-
-size_t write_file(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
- /* printf("write_file\n"); */
- return fwrite(ptr, size, nmemb, stream);
-}
-
-/* https://weather.com/weather/today/l/46214?cc=*&dayf=5&unit=i */
-void *pull_one_url(void *NaN)
-{
- /* Stop threads from entering unless j is incremented */
- pthread_mutex_lock(&lock);
- while(j < num_urls) {
- CURL *curl;
- gchar *http;
-
- printf("j = %d\n", j);
-
- http =
- g_strdup_printf("xoap.weather.com/weather/local/%s?cc=*&dayf=5&unit=i\n",
- urls[j]);
-
- printf("http %s", http);
-
- curl = curl_easy_init();
- if(curl) {
-
- FILE *outfile = fopen(urls[j], "wb");
-
- /* Set the URL and transfer type */
- curl_easy_setopt(curl, CURLOPT_URL, http);
-
- /* Write to the file */
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file);
-
- j++; /* critical line */
- pthread_mutex_unlock(&lock);
-
- curl_easy_perform(curl);
-
- fclose(outfile);
- printf("fclose\n");
-
- curl_easy_cleanup(curl);
- }
- g_free(http);
-
- /* Adds more latency, testing the mutex.*/
- sleep(1);
-
- } /* end while */
- return NULL;
-}
-
-
-gboolean pulse_bar(gpointer data)
-{
- gdk_threads_enter();
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR (data));
- gdk_threads_leave();
-
- /* Return true so the function will be called again;
- * returning false removes this timeout function.
- */
- return TRUE;
-}
-
-void *create_thread(void *progress_bar)
-{
- pthread_t tid[NUMT];
- int i;
-
- /* Make sure I don't create more threads than urls. */
- for(i = 0; i < NUMT && i < num_urls ; i++) {
- int error = pthread_create(&tid[i],
- NULL, /* default attributes please */
- pull_one_url,
- NULL);
- if(0 != error)
- fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
- else
- fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
- }
-
- /* Wait for all threads to terminate. */
- for(i = 0; i < NUMT && i < num_urls; i++) {
- pthread_join(tid[i], NULL);
- fprintf(stderr, "Thread %d terminated\n", i);
- }
-
- /* This stops the pulsing if you have it turned on in the progress bar
- section */
- g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(progress_bar),
- "pulse_id")));
-
- /* This destroys the progress bar */
- gtk_widget_destroy(progress_bar);
-
- /* [Un]Comment this out to kill the program rather than pushing close. */
- /* gtk_main_quit(); */
-
-
- return NULL;
-
-}
-
-static gboolean cb_delete(GtkWidget *window, gpointer data)
-{
- gtk_main_quit();
- return FALSE;
-}
-
-int main(int argc, char **argv)
-{
- GtkWidget *top_window, *outside_frame, *inside_frame, *progress_bar;
-
- /* Must initialize libcurl before any threads are started */
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* Init thread */
- g_thread_init(NULL);
- gdk_threads_init();
- gdk_threads_enter();
-
- gtk_init(&argc, &argv);
-
- /* Base window */
- top_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
- /* Frame */
- outside_frame = gtk_frame_new(NULL);
- gtk_frame_set_shadow_type(GTK_FRAME(outside_frame), GTK_SHADOW_OUT);
- gtk_container_add(GTK_CONTAINER(top_window), outside_frame);
-
- /* Frame */
- inside_frame = gtk_frame_new(NULL);
- gtk_frame_set_shadow_type(GTK_FRAME(inside_frame), GTK_SHADOW_IN);
- gtk_container_set_border_width(GTK_CONTAINER(inside_frame), 5);
- gtk_container_add(GTK_CONTAINER(outside_frame), inside_frame);
-
- /* Progress bar */
- progress_bar = gtk_progress_bar_new();
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR (progress_bar));
- /* Make uniform pulsing */
- gint pulse_ref = g_timeout_add(300, pulse_bar, progress_bar);
- g_object_set_data(G_OBJECT(progress_bar), "pulse_id",
- GINT_TO_POINTER(pulse_ref));
- gtk_container_add(GTK_CONTAINER(inside_frame), progress_bar);
-
- gtk_widget_show_all(top_window);
- printf("gtk_widget_show_all\n");
-
- g_signal_connect(G_OBJECT (top_window), "delete-event",
- G_CALLBACK(cb_delete), NULL);
-
- if(!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0)
- g_warning("can't create the thread");
-
- gtk_main();
- gdk_threads_leave();
- printf("gdk_threads_leave\n");
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-expn.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-expn.c
deleted file mode 100644
index fb0ed1d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-expn.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example showing how to expand an e-mail mailing list
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to expand an e-mail mailing list.
- *
- * Notes:
- *
- * 1) This example requires libcurl 7.34.0 or above.
- * 2) Not all email servers support this command.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct curl_slist *recipients = NULL;
-
- curl = curl_easy_init();
- if(curl) {
- /* This is the URL for your mailserver */
- curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
- /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array */
- recipients = curl_slist_append(recipients, "Friends");
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* Set the EXPN command */
- curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXPN");
-
- /* Perform the custom request */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Free the list of recipients */
- curl_slist_free_all(recipients);
-
- /* Curl won't send the QUIT command until you call cleanup, so you should
- * be able to re-use this connection for additional requests. It may not be
- * a good idea to keep the connection open for a very long time though
- * (more than a few minutes may result in the server timing out the
- * connection) and you do want to clean up in the end.
- */
- curl_easy_cleanup(curl);
- }
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-mail.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-mail.c
deleted file mode 100644
index 3285b31..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-mail.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * Send e-mail with SMTP
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/*
- * For an SMTP example using the multi interface please see smtp-multi.c.
- */
-
-/* The libcurl options want plain addresses, the viewable headers in the mail
- * can very well get a full name as well.
- */
-#define FROM_ADDR "<sender@example.org>"
-#define TO_ADDR "<addressee@example.net>"
-#define CC_ADDR "<info@example.org>"
-
-#define FROM_MAIL "Sender Person " FROM_ADDR
-#define TO_MAIL "A Receiver " TO_ADDR
-#define CC_MAIL "John CC Smith " CC_ADDR
-
-static const char *payload_text[] = {
- "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
- "To: " TO_MAIL "\r\n",
- "From: " FROM_MAIL "\r\n",
- "Cc: " CC_MAIL "\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
- "rfcpedant.example.org>\r\n",
- "Subject: SMTP example message\r\n",
- "\r\n", /* empty line to divide headers from body, see RFC5322 */
- "The body of the message starts here.\r\n",
- "\r\n",
- "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
- "Check RFC5322.\r\n",
- NULL
-};
-
-struct upload_status {
- int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct upload_status *upload_ctx = (struct upload_status *)userp;
- const char *data;
-
- if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
- return 0;
- }
-
- data = payload_text[upload_ctx->lines_read];
-
- if(data) {
- size_t len = strlen(data);
- memcpy(ptr, data, len);
- upload_ctx->lines_read++;
-
- return len;
- }
-
- return 0;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
- struct curl_slist *recipients = NULL;
- struct upload_status upload_ctx;
-
- upload_ctx.lines_read = 0;
-
- curl = curl_easy_init();
- if(curl) {
- /* This is the URL for your mailserver */
- curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
- /* Note that this option isn't strictly required, omitting it will result
- * in libcurl sending the MAIL FROM command with empty sender data. All
- * autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise,
- * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
- * details.
- */
- curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM_ADDR);
-
- /* Add two recipients, in this particular case they correspond to the
- * To: and Cc: addressees in the header, but they could be any kind of
- * recipient. */
- recipients = curl_slist_append(recipients, TO_ADDR);
- recipients = curl_slist_append(recipients, CC_ADDR);
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* We're using a callback function to specify the payload (the headers and
- * body of the message). You could just use the CURLOPT_READDATA option to
- * specify a FILE pointer to read from. */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
- curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* Send the message */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Free the list of recipients */
- curl_slist_free_all(recipients);
-
- /* curl won't send the QUIT command until you call cleanup, so you should
- * be able to re-use this connection for additional messages (setting
- * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
- * curl_easy_perform() again. It may not be a good idea to keep the
- * connection open for a very long time though (more than a few minutes
- * may result in the server timing out the connection), and you do want to
- * clean up in the end.
- */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-mime.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-mime.c
deleted file mode 100644
index 4f3fbfd..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-mime.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example showing how to send mime e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mime mail using libcurl's SMTP
- * capabilities. For an example of using the multi interface please see
- * smtp-multi.c.
- *
- * Note that this example requires libcurl 7.56.0 or above.
- */
-
-#define FROM "<sender@example.org>"
-#define TO "<addressee@example.net>"
-#define CC "<info@example.org>"
-
-static const char *headers_text[] = {
- "Date: Tue, 22 Aug 2017 14:08:43 +0100",
- "To: " TO,
- "From: " FROM " (Example User)",
- "Cc: " CC " (Another example User)",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
- "rfcpedant.example.org>",
- "Subject: example sending a MIME-formatted message",
- NULL
-};
-
-static const char inline_text[] =
- "This is the inline text message of the e-mail.\r\n"
- "\r\n"
- " It could be a lot of lines that would be displayed in an e-mail\r\n"
- "viewer that is not able to handle HTML.\r\n";
-
-static const char inline_html[] =
- "<html><body>\r\n"
- "<p>This is the inline <b>HTML</b> message of the e-mail.</p>"
- "<br />\r\n"
- "<p>It could be a lot of HTML data that would be displayed by "
- "e-mail viewers able to handle HTML.</p>"
- "</body></html>\r\n";
-
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
-
- curl = curl_easy_init();
- if(curl) {
- struct curl_slist *headers = NULL;
- struct curl_slist *recipients = NULL;
- struct curl_slist *slist = NULL;
- curl_mime *mime;
- curl_mime *alt;
- curl_mimepart *part;
- const char **cpp;
-
- /* This is the URL for your mailserver */
- curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
- /* Note that this option isn't strictly required, omitting it will result
- * in libcurl sending the MAIL FROM command with empty sender data. All
- * autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise,
- * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
- * details.
- */
- curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
- /* Add two recipients, in this particular case they correspond to the
- * To: and Cc: addressees in the header, but they could be any kind of
- * recipient. */
- recipients = curl_slist_append(recipients, TO);
- recipients = curl_slist_append(recipients, CC);
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* Build and set the message header list. */
- for(cpp = headers_text; *cpp; cpp++)
- headers = curl_slist_append(headers, *cpp);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
-
- /* Build the mime message. */
- mime = curl_mime_init(curl);
-
- /* The inline part is an alternative proposing the html and the text
- versions of the e-mail. */
- alt = curl_mime_init(curl);
-
- /* HTML message. */
- part = curl_mime_addpart(alt);
- curl_mime_data(part, inline_html, CURL_ZERO_TERMINATED);
- curl_mime_type(part, "text/html");
-
- /* Text message. */
- part = curl_mime_addpart(alt);
- curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED);
-
- /* Create the inline part. */
- part = curl_mime_addpart(mime);
- curl_mime_subparts(part, alt);
- curl_mime_type(part, "multipart/alternative");
- slist = curl_slist_append(NULL, "Content-Disposition: inline");
- curl_mime_headers(part, slist, 1);
-
- /* Add the current source program as an attachment. */
- part = curl_mime_addpart(mime);
- curl_mime_filedata(part, "smtp-mime.c");
- curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);
-
- /* Send the message */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Free lists. */
- curl_slist_free_all(recipients);
- curl_slist_free_all(headers);
-
- /* curl won't send the QUIT command until you call cleanup, so you should
- * be able to re-use this connection for additional messages (setting
- * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
- * curl_easy_perform() again. It may not be a good idea to keep the
- * connection open for a very long time though (more than a few minutes
- * may result in the server timing out the connection), and you do want to
- * clean up in the end.
- */
- curl_easy_cleanup(curl);
-
- /* Free multipart message. */
- curl_mime_free(mime);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-multi.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-multi.c
deleted file mode 100644
index bd70bdb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-multi.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example using the multi interface
- * </DESC>
- */
-
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is an example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the smtp-mail.c example to demonstrate how to use
- * libcurl's multi interface.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define FROM "<sender@example.com>"
-#define TO "<recipient@example.com>"
-#define CC "<info@example.com>"
-
-#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
-
-static const char *payload_text[] = {
- "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
- "To: " TO "\r\n",
- "From: " FROM " (Example User)\r\n",
- "Cc: " CC " (Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
- "rfcpedant.example.org>\r\n",
- "Subject: SMTP multi example message\r\n",
- "\r\n", /* empty line to divide headers from body, see RFC5322 */
- "The body of the message starts here.\r\n",
- "\r\n",
- "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
- "Check RFC5322.\r\n",
- NULL
-};
-
-struct upload_status {
- int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct upload_status *upload_ctx = (struct upload_status *)userp;
- const char *data;
-
- if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
- return 0;
- }
-
- data = payload_text[upload_ctx->lines_read];
-
- if(data) {
- size_t len = strlen(data);
- memcpy(ptr, data, len);
- upload_ctx->lines_read++;
-
- return len;
- }
-
- return 0;
-}
-
-static struct timeval tvnow(void)
-{
- struct timeval now;
-
- /* time() returns the value of time in seconds since the epoch */
- now.tv_sec = (long)time(NULL);
- now.tv_usec = 0;
-
- return now;
-}
-
-static long tvdiff(struct timeval newer, struct timeval older)
-{
- return (newer.tv_sec - older.tv_sec) * 1000 +
- (newer.tv_usec - older.tv_usec) / 1000;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLM *mcurl;
- int still_running = 1;
- struct timeval mp_start;
- struct curl_slist *recipients = NULL;
- struct upload_status upload_ctx;
-
- upload_ctx.lines_read = 0;
-
- curl_global_init(CURL_GLOBAL_DEFAULT);
-
- curl = curl_easy_init();
- if(!curl)
- return 1;
-
- mcurl = curl_multi_init();
- if(!mcurl)
- return 2;
-
- /* This is the URL for your mailserver */
- curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
- * autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
- */
- curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
- /* Add two recipients, in this particular case they correspond to the
- * To: and Cc: addressees in the header, but they could be any kind of
- * recipient. */
- recipients = curl_slist_append(recipients, TO);
- recipients = curl_slist_append(recipients, CC);
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* We're using a callback function to specify the payload (the headers and
- * body of the message). You could just use the CURLOPT_READDATA option to
- * specify a FILE pointer to read from. */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
- curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* Tell the multi stack about our easy handle */
- curl_multi_add_handle(mcurl, curl);
-
- /* Record the start time which we can use later */
- mp_start = tvnow();
-
- /* We start some action by calling perform right away */
- curl_multi_perform(mcurl, &still_running);
-
- while(still_running) {
- struct timeval timeout;
- fd_set fdread;
- fd_set fdwrite;
- fd_set fdexcep;
- int maxfd = -1;
- int rc;
- CURLMcode mc; /* curl_multi_fdset() return code */
-
- long curl_timeo = -1;
-
- /* Initialise the file descriptors */
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- /* Set a suitable timeout to play around with */
- timeout.tv_sec = 1;
- timeout.tv_usec = 0;
-
- curl_multi_timeout(mcurl, &curl_timeo);
- if(curl_timeo >= 0) {
- timeout.tv_sec = curl_timeo / 1000;
- if(timeout.tv_sec > 1)
- timeout.tv_sec = 1;
- else
- timeout.tv_usec = (curl_timeo % 1000) * 1000;
- }
-
- /* get file descriptors from the transfers */
- mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
-
- if(mc != CURLM_OK) {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
- break;
- }
-
- /* On success the value of maxfd is guaranteed to be >= -1. We call
- select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
- no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
- to sleep 100ms, which is the minimum suggested value in the
- curl_multi_fdset() doc. */
-
- if(maxfd == -1) {
-#ifdef _WIN32
- Sleep(100);
- rc = 0;
-#else
- /* Portable sleep for platforms other than Windows. */
- struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
- rc = select(0, NULL, NULL, NULL, &wait);
-#endif
- }
- else {
- /* Note that on some platforms 'timeout' may be modified by select().
- If you need access to the original value save a copy beforehand. */
- rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
- }
-
- if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
- fprintf(stderr,
- "ABORTING: Since it seems that we would have run forever.\n");
- break;
- }
-
- switch(rc) {
- case -1: /* select error */
- break;
- case 0: /* timeout */
- default: /* action */
- curl_multi_perform(mcurl, &still_running);
- break;
- }
- }
-
- /* Free the list of recipients */
- curl_slist_free_all(recipients);
-
- /* Always cleanup */
- curl_multi_remove_handle(mcurl, curl);
- curl_multi_cleanup(mcurl);
- curl_easy_cleanup(curl);
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-ssl.c
deleted file mode 100644
index 019da7d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-ssl.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example using SSL
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the smtp-mail.c example to add authentication
- * and, more importantly, transport security to protect the authentication
- * details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define FROM "<sender@example.org>"
-#define TO "<addressee@example.net>"
-#define CC "<info@example.org>"
-
-static const char *payload_text[] = {
- "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
- "To: " TO "\r\n",
- "From: " FROM " (Example User)\r\n",
- "Cc: " CC " (Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
- "rfcpedant.example.org>\r\n",
- "Subject: SMTP SSL example message\r\n",
- "\r\n", /* empty line to divide headers from body, see RFC5322 */
- "The body of the message starts here.\r\n",
- "\r\n",
- "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
- "Check RFC5322.\r\n",
- NULL
-};
-
-struct upload_status {
- int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct upload_status *upload_ctx = (struct upload_status *)userp;
- const char *data;
-
- if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
- return 0;
- }
-
- data = payload_text[upload_ctx->lines_read];
-
- if(data) {
- size_t len = strlen(data);
- memcpy(ptr, data, len);
- upload_ctx->lines_read++;
-
- return len;
- }
-
- return 0;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
- struct curl_slist *recipients = NULL;
- struct upload_status upload_ctx;
-
- upload_ctx.lines_read = 0;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is the URL for your mailserver. Note the use of smtps:// rather
- * than smtp:// to request a SSL based connection. */
- curl_easy_setopt(curl, CURLOPT_URL, "smtps://mainserver.example.net");
-
- /* If you want to connect to a site who isn't using a certificate that is
- * signed by one of the certs in the CA bundle you have, you can skip the
- * verification of the server's certificate. This makes the connection
- * A LOT LESS SECURE.
- *
- * If you have a CA cert for the server stored someplace else than in the
- * default bundle, then the CURLOPT_CAPATH option might come handy for
- * you. */
-#ifdef SKIP_PEER_VERIFICATION
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
- /* If the site you're connecting to uses a different host name that what
- * they have mentioned in their server certificate's commonName (or
- * subjectAltName) fields, libcurl will refuse to connect. You can skip
- * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERIFICATION
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
- /* Note that this option isn't strictly required, omitting it will result
- * in libcurl sending the MAIL FROM command with empty sender data. All
- * autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise,
- * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
- * details.
- */
- curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
- /* Add two recipients, in this particular case they correspond to the
- * To: and Cc: addressees in the header, but they could be any kind of
- * recipient. */
- recipients = curl_slist_append(recipients, TO);
- recipients = curl_slist_append(recipients, CC);
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* We're using a callback function to specify the payload (the headers and
- * body of the message). You could just use the CURLOPT_READDATA option to
- * specify a FILE pointer to read from. */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
- curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* Since the traffic will be encrypted, it is very useful to turn on debug
- * information within libcurl to see what is happening during the
- * transfer */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Send the message */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Free the list of recipients */
- curl_slist_free_all(recipients);
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-tls.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-tls.c
deleted file mode 100644
index 671a80d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-tls.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example using TLS
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the smtp-mail.c example to add authentication
- * and, more importantly, transport security to protect the authentication
- * details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define FROM "<sender@example.org>"
-#define TO "<addressee@example.net>"
-#define CC "<info@example.org>"
-
-static const char *payload_text[] = {
- "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
- "To: " TO "\r\n",
- "From: " FROM " (Example User)\r\n",
- "Cc: " CC " (Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
- "rfcpedant.example.org>\r\n",
- "Subject: SMTP TLS example message\r\n",
- "\r\n", /* empty line to divide headers from body, see RFC5322 */
- "The body of the message starts here.\r\n",
- "\r\n",
- "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
- "Check RFC5322.\r\n",
- NULL
-};
-
-struct upload_status {
- int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
- struct upload_status *upload_ctx = (struct upload_status *)userp;
- const char *data;
-
- if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
- return 0;
- }
-
- data = payload_text[upload_ctx->lines_read];
-
- if(data) {
- size_t len = strlen(data);
- memcpy(ptr, data, len);
- upload_ctx->lines_read++;
-
- return len;
- }
-
- return 0;
-}
-
-int main(void)
-{
- CURL *curl;
- CURLcode res = CURLE_OK;
- struct curl_slist *recipients = NULL;
- struct upload_status upload_ctx;
-
- upload_ctx.lines_read = 0;
-
- curl = curl_easy_init();
- if(curl) {
- /* Set username and password */
- curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
- curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
- /* This is the URL for your mailserver. Note the use of port 587 here,
- * instead of the normal SMTP port (25). Port 587 is commonly used for
- * secure mail submission (see RFC4403), but you should use whatever
- * matches your server configuration. */
- curl_easy_setopt(curl, CURLOPT_URL, "smtp://mainserver.example.net:587");
-
- /* In this example, we'll start with a plain text connection, and upgrade
- * to Transport Layer Security (TLS) using the STARTTLS command. Be careful
- * of using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
- * will continue anyway - see the security discussion in the libcurl
- * tutorial for more details. */
- curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-
- /* If your server doesn't have a valid certificate, then you can disable
- * part of the Transport Layer Security protection by setting the
- * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
- * curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
- * curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
- * That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though. Instead, you should get
- * the issuer certificate (or the host certificate if the certificate is
- * self-signed) and add it to the set of certificates that are known to
- * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
- * for more information. */
- curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
-
- /* Note that this option isn't strictly required, omitting it will result
- * in libcurl sending the MAIL FROM command with empty sender data. All
- * autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise,
- * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
- * details.
- */
- curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
- /* Add two recipients, in this particular case they correspond to the
- * To: and Cc: addressees in the header, but they could be any kind of
- * recipient. */
- recipients = curl_slist_append(recipients, TO);
- recipients = curl_slist_append(recipients, CC);
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* We're using a callback function to specify the payload (the headers and
- * body of the message). You could just use the CURLOPT_READDATA option to
- * specify a FILE pointer to read from. */
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
- curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
- /* Since the traffic will be encrypted, it is very useful to turn on debug
- * information within libcurl to see what is happening during the transfer.
- */
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- /* Send the message */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Free the list of recipients */
- curl_slist_free_all(recipients);
-
- /* Always cleanup */
- curl_easy_cleanup(curl);
- }
-
- return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-vrfy.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-vrfy.c
deleted file mode 100644
index 4e0623fb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-vrfy.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example showing how to verify an e-mail address
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to verify an e-mail address from an
- * SMTP server.
- *
- * Notes:
- *
- * 1) This example requires libcurl 7.34.0 or above.
- * 2) Not all email servers support this command and even if your email server
- * does support it, it may respond with a 252 response code even though the
- * address doesn't exist.
- */
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
- struct curl_slist *recipients = NULL;
-
- curl = curl_easy_init();
- if(curl) {
- /* This is the URL for your mailserver */
- curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
- /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array */
- recipients = curl_slist_append(recipients, "<recipient@example.com>");
- curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
- /* Perform the VRFY */
- res = curl_easy_perform(curl);
-
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- /* Free the list of recipients */
- curl_slist_free_all(recipients);
-
- /* Curl won't send the QUIT command until you call cleanup, so you should
- * be able to re-use this connection for additional requests. It may not be
- * a good idea to keep the connection open for a very long time though
- * (more than a few minutes may result in the server timing out the
- * connection) and you do want to clean up in the end.
- */
- curl_easy_cleanup(curl);
- }
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sslbackend.c b/components/cronet/third_party/curl_headers/docs/examples/sslbackend.c
deleted file mode 100644
index c1489a9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sslbackend.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Shows HTTPS usage with client certs and optional ssl engine use.
- * </DESC>
- */
-#include <assert.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-/*
- * An SSL-enabled libcurl is required for this sample to work (at least one
- * SSL backend has to be configured).
- *
- * **** This example only works with libcurl 7.56.0 and later! ****
-*/
-
-int main(int argc, char **argv)
-{
- const char *name = argc > 1 ? argv[1] : "openssl";
- CURLsslset result;
-
- if(!strcmp("list", name)) {
- const curl_ssl_backend **list;
- int i;
-
- result = curl_global_sslset(-1, NULL, &list);
- assert(result == CURLSSLSET_UNKNOWN_BACKEND);
-
- for(i = 0; list[i]; i++)
- printf("SSL backend #%d: '%s' (ID: %d)\n",
- i, list[i]->name, list[i]->id);
-
- return 0;
- }
- else if(isdigit(*name)) {
- int id = atoi(name);
-
- result = curl_global_sslset((curl_sslbackend)id, NULL, NULL);
- }
- else
- result = curl_global_sslset(-1, name, NULL);
-
- if(result == CURLSSLSET_UNKNOWN_BACKEND) {
- fprintf(stderr, "Unknown SSL backend id: %s\n", name);
- return 1;
- }
-
- assert(result == CURLSSLSET_OK);
-
- printf("Version with SSL backend '%s':\n\n\t%s\n", name, curl_version());
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/synctime.c b/components/cronet/third_party/curl_headers/docs/examples/synctime.c
deleted file mode 100644
index 905f5118..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/synctime.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Set your system time from a remote HTTP server's Date: header.
- * </DESC>
- */
-/* This example code only builds as-is on Windows.
- *
- * While Unix/Linux user, you do not need this software.
- * You can achieve the same result as synctime using curl, awk and date.
- * Set proxy as according to your network, but beware of proxy Cache-Control.
- *
- * To set your system clock, root access is required.
- * # date -s "`curl -sI https://nist.time.gov/timezone.cgi?UTC/s/0 \
- * | awk -F': ' '/Date: / {print $2}'`"
- *
- * To view remote webserver date and time.
- * $ curl -sI https://nist.time.gov/timezone.cgi?UTC/s/0 \
- * | awk -F': ' '/Date: / {print $2}'
- *
- * Synchronising your computer clock via Internet time server usually relies
- * on DAYTIME, TIME, or NTP protocols. These protocols provide good accurate
- * time synchronisation but it does not work very well through a
- * firewall/proxy. Some adjustment has to be made to the firewall/proxy for
- * these protocols to work properly.
- *
- * There is an indirect method. Since most webserver provide server time in
- * their HTTP header, therefore you could synchronise your computer clock
- * using HTTP protocol which has no problem with firewall/proxy.
- *
- * For this software to work, you should take note of these items.
- * 1. Your firewall/proxy must allow your computer to surf internet.
- * 2. Webserver system time must in sync with the NTP time server,
- * or at least provide an accurate time keeping.
- * 3. Webserver HTTP header does not provide the milliseconds units,
- * so there is no way to get very accurate time.
- * 4. This software could only provide an accuracy of +- a few seconds,
- * as Round-Trip delay time is not taken into consideration.
- * Compensation of network, firewall/proxy delay cannot be simply divide
- * the Round-Trip delay time by half.
- * 5. Win32 SetSystemTime() API will set your computer clock according to
- * GMT/UTC time. Therefore your computer timezone must be properly set.
- * 6. Webserver data should not be cached by the proxy server. Some
- * webserver provide Cache-Control to prevent caching.
- *
- * References:
- * https://web.archive.org/web/20100228012139/ \
- * tf.nist.gov/timefreq/service/its.htm
- * https://web.archive.org/web/20100409024302/ \
- * tf.nist.gov/timefreq/service/firewall.htm
- *
- * Usage:
- * This software will synchronise your computer clock only when you issue
- * it with --synctime. By default, it only display the webserver's clock.
- *
- * Written by: Frank (contributed to libcurl)
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL THE AUTHOR OF THIS SOFTWARE BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- */
-
-#include <stdio.h>
-#include <time.h>
-#ifndef __CYGWIN__
-#include <winsock2.h>
-#include <windows.h>
-#endif
-#include <curl/curl.h>
-
-
-#define MAX_STRING 256
-#define MAX_STRING1 MAX_STRING + 1
-
-#define SYNCTIME_UA "synctime/1.0"
-
-typedef struct
-{
- char http_proxy[MAX_STRING1];
- char proxy_user[MAX_STRING1];
- char timeserver[MAX_STRING1];
-} conf_t;
-
-const char DefaultTimeServer[3][MAX_STRING1] =
-{
- "https://nist.time.gov/",
- "https://www.google.com/"
-};
-
-const char *DayStr[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
-const char *MthStr[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
-
-int ShowAllHeader;
-int AutoSyncTime;
-SYSTEMTIME SYSTime;
-SYSTEMTIME LOCALTime;
-
-#define HTTP_COMMAND_HEAD 0
-#define HTTP_COMMAND_GET 1
-
-
-size_t SyncTime_CURL_WriteOutput(void *ptr, size_t size, size_t nmemb,
- void *stream)
-{
- fwrite(ptr, size, nmemb, stream);
- return (nmemb*size);
-}
-
-size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
- void *stream)
-{
- int i, RetVal;
- char TmpStr1[26], TmpStr2[26];
-
- (void)stream;
-
- if(ShowAllHeader == 1)
- fprintf(stderr, "%s", (char *)(ptr));
-
- if(strncmp((char *)(ptr), "Date:", 5) == 0) {
- if(ShowAllHeader == 0)
- fprintf(stderr, "HTTP Server. %s", (char *)(ptr));
-
- if(AutoSyncTime == 1) {
- *TmpStr1 = 0;
- *TmpStr2 = 0;
- if(strlen((char *)(ptr)) > 50) /* Can prevent buffer overflow to
- TmpStr1 & 2? */
- AutoSyncTime = 0;
- else {
- RetVal = sscanf((char *)(ptr), "Date: %s %hu %s %hu %hu:%hu:%hu",
- TmpStr1, &SYSTime.wDay, TmpStr2, &SYSTime.wYear,
- &SYSTime.wHour, &SYSTime.wMinute, &SYSTime.wSecond);
-
- if(RetVal == 7) {
- SYSTime.wMilliseconds = 500; /* adjust to midpoint, 0.5 sec */
- for(i = 0; i<12; i++) {
- if(strcmp(MthStr[i], TmpStr2) == 0) {
- SYSTime.wMonth = i + 1;
- break;
- }
- }
- AutoSyncTime = 3; /* Computer clock will be adjusted */
- }
- else {
- AutoSyncTime = 0; /* Error in sscanf() fields conversion */
- }
- }
- }
- }
-
- if(strncmp((char *)(ptr), "X-Cache: HIT", 12) == 0) {
- fprintf(stderr, "ERROR: HTTP Server data is cached."
- " Server Date is no longer valid.\n");
- AutoSyncTime = 0;
- }
- return (nmemb*size);
-}
-
-void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
- char *proxy_user_password)
-{
- if(strlen(proxy_port) > 0)
- curl_easy_setopt(curl, CURLOPT_PROXY, proxy_port);
-
- if(strlen(proxy_user_password) > 0)
- curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
-
-#ifdef SYNCTIME_UA
- curl_easy_setopt(curl, CURLOPT_USERAGENT, SYNCTIME_UA);
-#endif
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, *SyncTime_CURL_WriteOutput);
- curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, *SyncTime_CURL_WriteHeader);
-}
-
-int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
- int HttpGetBody)
-{
- FILE *outfile;
- CURLcode res;
-
- outfile = NULL;
- if(HttpGetBody == HTTP_COMMAND_HEAD)
- curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
- else {
- outfile = fopen(OutFileName, "wb");
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
- }
-
- curl_easy_setopt(curl, CURLOPT_URL, URL_Str);
- res = curl_easy_perform(curl);
- if(outfile != NULL)
- fclose(outfile);
- return res; /* (CURLE_OK) */
-}
-
-void showUsage(void)
-{
- fprintf(stderr, "SYNCTIME: Synchronising computer clock with time server"
- " using HTTP protocol.\n");
- fprintf(stderr, "Usage : SYNCTIME [Option]\n");
- fprintf(stderr, "Options :\n");
- fprintf(stderr, " --server=WEBSERVER Use this time server instead"
- " of default.\n");
- fprintf(stderr, " --showall Show all HTTP header.\n");
- fprintf(stderr, " --synctime Synchronising computer clock"
- " with time server.\n");
- fprintf(stderr, " --proxy-user=USER[:PASS] Set proxy username and"
- " password.\n");
- fprintf(stderr, " --proxy=HOST[:PORT] Use HTTP proxy on given"
- " port.\n");
- fprintf(stderr, " --help Print this help.\n");
- fprintf(stderr, "\n");
- return;
-}
-
-int conf_init(conf_t *conf)
-{
- int i;
-
- *conf->http_proxy = 0;
- for(i = 0; i<MAX_STRING1; i++)
- conf->proxy_user[i] = 0; /* Clean up password from memory */
- *conf->timeserver = 0;
- return 1;
-}
-
-int main(int argc, char *argv[])
-{
- CURL *curl;
- conf_t conf[1];
- int RetValue;
-
- ShowAllHeader = 0; /* Do not show HTTP Header */
- AutoSyncTime = 0; /* Do not synchronise computer clock */
- RetValue = 0; /* Successful Exit */
- conf_init(conf);
-
- if(argc > 1) {
- int OptionIndex = 0;
- while(OptionIndex < argc) {
- if(strncmp(argv[OptionIndex], "--server=", 9) == 0)
- snprintf(conf->timeserver, MAX_STRING, "%s", &argv[OptionIndex][9]);
-
- if(strcmp(argv[OptionIndex], "--showall") == 0)
- ShowAllHeader = 1;
-
- if(strcmp(argv[OptionIndex], "--synctime") == 0)
- AutoSyncTime = 1;
-
- if(strncmp(argv[OptionIndex], "--proxy-user=", 13) == 0)
- snprintf(conf->proxy_user, MAX_STRING, "%s", &argv[OptionIndex][13]);
-
- if(strncmp(argv[OptionIndex], "--proxy=", 8) == 0)
- snprintf(conf->http_proxy, MAX_STRING, "%s", &argv[OptionIndex][8]);
-
- if((strcmp(argv[OptionIndex], "--help") == 0) ||
- (strcmp(argv[OptionIndex], "/?") == 0)) {
- showUsage();
- return 0;
- }
- OptionIndex++;
- }
- }
-
- if(*conf->timeserver == 0) /* Use default server for time information */
- snprintf(conf->timeserver, MAX_STRING, "%s", DefaultTimeServer[0]);
-
- /* Init CURL before usage */
- curl_global_init(CURL_GLOBAL_ALL);
- curl = curl_easy_init();
- if(curl) {
- struct tm *lt;
- struct tm *gmt;
- time_t tt;
- time_t tt_local;
- time_t tt_gmt;
- double tzonediffFloat;
- int tzonediffWord;
- char timeBuf[61];
- char tzoneBuf[16];
-
- SyncTime_CURL_Init(curl, conf->http_proxy, conf->proxy_user);
-
- /* Calculating time diff between GMT and localtime */
- tt = time(0);
- lt = localtime(&tt);
- tt_local = mktime(lt);
- gmt = gmtime(&tt);
- tt_gmt = mktime(gmt);
- tzonediffFloat = difftime(tt_local, tt_gmt);
- tzonediffWord = (int)(tzonediffFloat/3600.0);
-
- if((double)(tzonediffWord * 3600) == tzonediffFloat)
- snprintf(tzoneBuf, 15, "%+03d'00'", tzonediffWord);
- else
- snprintf(tzoneBuf, 15, "%+03d'30'", tzonediffWord);
-
- /* Get current system time and local time */
- GetSystemTime(&SYSTime);
- GetLocalTime(&LOCALTime);
- snprintf(timeBuf, 60, "%s, %02d %s %04d %02d:%02d:%02d.%03d, ",
- DayStr[LOCALTime.wDayOfWeek], LOCALTime.wDay,
- MthStr[LOCALTime.wMonth-1], LOCALTime.wYear,
- LOCALTime.wHour, LOCALTime.wMinute, LOCALTime.wSecond,
- LOCALTime.wMilliseconds);
-
- fprintf(stderr, "Fetch: %s\n\n", conf->timeserver);
- fprintf(stderr, "Before HTTP. Date: %s%s\n\n", timeBuf, tzoneBuf);
-
- /* HTTP HEAD command to the Webserver */
- SyncTime_CURL_Fetch(curl, conf->timeserver, "index.htm",
- HTTP_COMMAND_HEAD);
-
- GetLocalTime(&LOCALTime);
- snprintf(timeBuf, 60, "%s, %02d %s %04d %02d:%02d:%02d.%03d, ",
- DayStr[LOCALTime.wDayOfWeek], LOCALTime.wDay,
- MthStr[LOCALTime.wMonth-1], LOCALTime.wYear,
- LOCALTime.wHour, LOCALTime.wMinute, LOCALTime.wSecond,
- LOCALTime.wMilliseconds);
- fprintf(stderr, "\nAfter HTTP. Date: %s%s\n", timeBuf, tzoneBuf);
-
- if(AutoSyncTime == 3) {
- /* Synchronising computer clock */
- if(!SetSystemTime(&SYSTime)) { /* Set system time */
- fprintf(stderr, "ERROR: Unable to set system time.\n");
- RetValue = 1;
- }
- else {
- /* Successfully re-adjusted computer clock */
- GetLocalTime(&LOCALTime);
- snprintf(timeBuf, 60, "%s, %02d %s %04d %02d:%02d:%02d.%03d, ",
- DayStr[LOCALTime.wDayOfWeek], LOCALTime.wDay,
- MthStr[LOCALTime.wMonth-1], LOCALTime.wYear,
- LOCALTime.wHour, LOCALTime.wMinute, LOCALTime.wSecond,
- LOCALTime.wMilliseconds);
- fprintf(stderr, "\nNew System's Date: %s%s\n", timeBuf, tzoneBuf);
- }
- }
-
- /* Cleanup before exit */
- conf_init(conf);
- curl_easy_cleanup(curl);
- }
- return RetValue;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/threaded-shared-conn.c b/components/cronet/third_party/curl_headers/docs/examples/threaded-shared-conn.c
deleted file mode 100644
index 2eda6239..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/threaded-shared-conn.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Multi-threaded transfers sharing a single connection pool
- * </DESC>
- *
- * This example fires up NUM_THREADS threads and in each single thread, it
- * downloads the same fixed URL a URL_ITERATIONS number of times. The received
- * data is just thrown away. It sets up a single shared object that holds the
- * connection cache and all easy handles in all threads share that same cache.
- *
- * This example uses pthreads for threads and mutexes, but should be easy to
- * modify to use different thread/mutex system should you want to.
- *
- */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <curl/curl.h>
-
-/*
- URL to fetch. If you select HTTPS, you need to use a TLS backend with mutex
- locks taken care of (OpenSSL 1.1.x, NSS, etc) or add SSL mutex callbacks!
-*/
-#define URL "http://localhost/4KB"
-
-/* number of threads to fire up in parallel */
-#define NUM_THREADS 67
-
-/* how many times each URL is transferred per thread */
-#define URL_ITERATIONS 11235
-
-static pthread_mutex_t connlock;
-
-static size_t write_db(void *ptr, size_t size, size_t nmemb, void *data)
-{
- /* not interested in the downloaded bytes, return the size */
- (void)ptr; /* unused */
- (void)data; /* unused */
- return (size_t)(size * nmemb);
-}
-
-static void lock_cb(CURL *handle, curl_lock_data data,
- curl_lock_access access, void *userptr)
-{
- (void)access; /* unused */
- (void)userptr; /* unused */
- (void)handle; /* unused */
- (void)data; /* unused */
- pthread_mutex_lock(&connlock);
-}
-
-static void unlock_cb(CURL *handle, curl_lock_data data,
- void *userptr)
-{
- (void)userptr; /* unused */
- (void)handle; /* unused */
- (void)data; /* unused */
- pthread_mutex_unlock(&connlock);
-}
-
-static void init_locks(void)
-{
- pthread_mutex_init(&connlock, NULL);
-}
-
-static void kill_locks(void)
-{
- pthread_mutex_destroy(&connlock);
-}
-
-struct initurl {
- const char *url;
- CURLSH *share;
- int threadno;
-};
-
-static void *run_thread(void *ptr)
-{
- struct initurl *u = (struct initurl *)ptr;
- int i;
-
- for(i = 0; i < URL_ITERATIONS; i++) {
- CURL *curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, u->url);
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
- curl_easy_setopt(curl, CURLOPT_SHARE, u->share);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_db);
- curl_easy_perform(curl); /* ignores error */
- curl_easy_cleanup(curl);
- fprintf(stderr, "Thread %d transfer %d\n", u->threadno, i);
- }
-
- return NULL;
-}
-
-int main(void)
-{
- pthread_t tid[NUM_THREADS];
- int i;
- CURLSH *share;
- struct initurl url[NUM_THREADS];
-
- /* Must initialize libcurl before any threads are started */
- curl_global_init(CURL_GLOBAL_ALL);
-
- share = curl_share_init();
- curl_share_setopt(share, CURLSHOPT_LOCKFUNC, lock_cb);
- curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, unlock_cb);
- curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
-
- init_locks();
-
- for(i = 0; i< NUM_THREADS; i++) {
- int error;
- url[i].url = URL;
- url[i].share = share;
- url[i].threadno = i;
- error = pthread_create(&tid[i], NULL, run_thread, &url[i]);
- if(0 != error)
- fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
- else
- fprintf(stderr, "Thread %d, gets %s\n", i, URL);
- }
-
- /* now wait for all threads to terminate */
- for(i = 0; i< NUM_THREADS; i++) {
- pthread_join(tid[i], NULL);
- fprintf(stderr, "Thread %d terminated\n", i);
- }
-
- kill_locks();
-
- curl_share_cleanup(share);
- curl_global_cleanup();
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/threaded-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/threaded-ssl.c
deleted file mode 100644
index 522f8c4..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/threaded-ssl.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Show the required mutex callback setups for GnuTLS and OpenSSL when using
- * libcurl multi-threaded.
- * </DESC>
- */
-/* A multi-threaded example that uses pthreads and fetches 4 remote files at
- * once over HTTPS. The lock callbacks and stuff assume OpenSSL <1.1 or GnuTLS
- * (libgcrypt) so far.
- *
- * OpenSSL docs for this:
- * https://www.openssl.org/docs/crypto/threads.html
- * gcrypt docs for this:
- * https://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
- */
-
-#define USE_OPENSSL /* or USE_GNUTLS accordingly */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <curl/curl.h>
-
-#define NUMT 4
-
-/* we have this global to let the callback get easy access to it */
-static pthread_mutex_t *lockarray;
-
-#ifdef USE_OPENSSL
-#include <openssl/crypto.h>
-static void lock_callback(int mode, int type, char *file, int line)
-{
- (void)file;
- (void)line;
- if(mode & CRYPTO_LOCK) {
- pthread_mutex_lock(&(lockarray[type]));
- }
- else {
- pthread_mutex_unlock(&(lockarray[type]));
- }
-}
-
-static unsigned long thread_id(void)
-{
- unsigned long ret;
-
- ret = (unsigned long)pthread_self();
- return ret;
-}
-
-static void init_locks(void)
-{
- int i;
-
- lockarray = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() *
- sizeof(pthread_mutex_t));
- for(i = 0; i<CRYPTO_num_locks(); i++) {
- pthread_mutex_init(&(lockarray[i]), NULL);
- }
-
- CRYPTO_set_id_callback((unsigned long (*)())thread_id);
- CRYPTO_set_locking_callback((void (*)())lock_callback);
-}
-
-static void kill_locks(void)
-{
- int i;
-
- CRYPTO_set_locking_callback(NULL);
- for(i = 0; i<CRYPTO_num_locks(); i++)
- pthread_mutex_destroy(&(lockarray[i]));
-
- OPENSSL_free(lockarray);
-}
-#endif
-
-#ifdef USE_GNUTLS
-#include <gcrypt.h>
-#include <errno.h>
-
-GCRY_THREAD_OPTION_PTHREAD_IMPL;
-
-void init_locks(void)
-{
- gcry_control(GCRYCTL_SET_THREAD_CBS);
-}
-
-#define kill_locks()
-#endif
-
-/* List of URLs to fetch.*/
-const char * const urls[]= {
- "https://www.example.com/",
- "https://www2.example.com/",
- "https://www3.example.com/",
- "https://www4.example.com/",
-};
-
-static void *pull_one_url(void *url)
-{
- CURL *curl;
-
- curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, url);
- /* this example doesn't verify the server's certificate, which means we
- might be downloading stuff from an impostor */
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
- curl_easy_perform(curl); /* ignores error */
- curl_easy_cleanup(curl);
-
- return NULL;
-}
-
-int main(int argc, char **argv)
-{
- pthread_t tid[NUMT];
- int i;
- (void)argc; /* we don't use any arguments in this example */
- (void)argv;
-
- /* Must initialize libcurl before any threads are started */
- curl_global_init(CURL_GLOBAL_ALL);
-
- init_locks();
-
- for(i = 0; i< NUMT; i++) {
- int error = pthread_create(&tid[i],
- NULL, /* default attributes please */
- pull_one_url,
- (void *)urls[i]);
- if(0 != error)
- fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
- else
- fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
- }
-
- /* now wait for all threads to terminate */
- for(i = 0; i< NUMT; i++) {
- pthread_join(tid[i], NULL);
- fprintf(stderr, "Thread %d terminated\n", i);
- }
-
- kill_locks();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/url2file.c b/components/cronet/third_party/curl_headers/docs/examples/url2file.c
deleted file mode 100644
index 1bede8c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/url2file.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Download a given URL into a local file named page.out.
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-
-static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
- return written;
-}
-
-int main(int argc, char *argv[])
-{
- CURL *curl_handle;
- static const char *pagefilename = "page.out";
- FILE *pagefile;
-
- if(argc < 2) {
- printf("Usage: %s <URL>\n", argv[0]);
- return 1;
- }
-
- curl_global_init(CURL_GLOBAL_ALL);
-
- /* init the curl session */
- curl_handle = curl_easy_init();
-
- /* set URL to get here */
- curl_easy_setopt(curl_handle, CURLOPT_URL, argv[1]);
-
- /* Switch on full protocol/debug output while testing */
- curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);
-
- /* disable progress meter, set to 0L to enable and disable debug output */
- curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
-
- /* send all data to this function */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
-
- /* open the file */
- pagefile = fopen(pagefilename, "wb");
- if(pagefile) {
-
- /* write the page body to this file handle */
- curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
-
- /* get it! */
- curl_easy_perform(curl_handle);
-
- /* close the header file */
- fclose(pagefile);
- }
-
- /* cleanup curl stuff */
- curl_easy_cleanup(curl_handle);
-
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/urlapi.c b/components/cronet/third_party/curl_headers/docs/examples/urlapi.c
deleted file mode 100644
index 594f942..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/urlapi.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Set working URL with CURLU *.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-#if !CURL_AT_LEAST_VERSION(7, 62, 0)
-#error "this example requires curl 7.62.0 or later"
-#endif
-
-int main(void)
-{
- CURL *curl;
- CURLcode res;
-
- CURLU *urlp;
- CURLUcode uc;
-
- /* get a curl handle */
- curl = curl_easy_init();
-
- /* init Curl URL */
- urlp = curl_url();
- uc = curl_url_set(urlp, CURLUPART_URL,
- "http://example.com/path/index.html", 0);
-
- if(uc) {
- fprintf(stderr, "curl_url_set() failed: %in", uc);
- goto cleanup;
- }
-
- if(curl) {
- /* set urlp to use as working URL */
- curl_easy_setopt(curl, CURLOPT_CURLU, urlp);
- curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- res = curl_easy_perform(curl);
- /* Check for errors */
- if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
-
- goto cleanup;
- }
-
- cleanup:
- curl_url_cleanup(urlp);
- curl_easy_cleanup(curl);
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/usercertinmem.c b/components/cronet/third_party/curl_headers/docs/examples/usercertinmem.c
deleted file mode 100644
index 2dc26431..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/usercertinmem.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2013 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Use an in-memory user certificate and RSA key and retrieve an https page.
- * </DESC>
- */
-/* Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
- * Note that to maintain simplicity this example does not use a CA certificate
- * for peer verification. However, some form of peer verification
- * must be used in real circumstances when a secure connection is required.
- */
-
-#include <openssl/ssl.h>
-#include <openssl/x509.h>
-#include <openssl/pem.h>
-#include <curl/curl.h>
-#include <stdio.h>
-
-static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
-{
- fwrite(ptr, size, nmemb, stream);
- return (nmemb*size);
-}
-
-static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
-{
- X509 *cert = NULL;
- BIO *bio = NULL;
- BIO *kbio = NULL;
- RSA *rsa = NULL;
- int ret;
-
- const char *mypem = /* www.cacert.org */
- "-----BEGIN CERTIFICATE-----\n"\
- "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"\
- "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"\
- "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"\
- "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"\
- "BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n"\
- "MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n"\
- "ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n"\
- "CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n"\
- "8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n"\
- "zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n"\
- "fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n"\
- "w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n"\
- "G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n"\
- "epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n"\
- "laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n"\
- "QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n"\
- "fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n"\
- "YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n"\
- "ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n"\
- "gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n"\
- "MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n"\
- "IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n"\
- "dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n"\
- "czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n"\
- "dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n"\
- "aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n"\
- "AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n"\
- "b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n"\
- "ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n"\
- "nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n"\
- "18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n"\
- "gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n"\
- "Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n"\
- "sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n"\
- "SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n"\
- "CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n"\
- "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"\
- "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"\
- "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
- "-----END CERTIFICATE-----\n";
-
-/*replace the XXX with the actual RSA key*/
- const char *mykey =
- "-----BEGIN RSA PRIVATE KEY-----\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
- "-----END RSA PRIVATE KEY-----\n";
-
- (void)curl; /* avoid warnings */
- (void)parm; /* avoid warnings */
-
- /* get a BIO */
- bio = BIO_new_mem_buf((char *)mypem, -1);
-
- if(bio == NULL) {
- printf("BIO_new_mem_buf failed\n");
- }
-
- /* use it to read the PEM formatted certificate from memory into an X509
- * structure that SSL can use
- */
- cert = PEM_read_bio_X509(bio, NULL, 0, NULL);
- if(cert == NULL) {
- printf("PEM_read_bio_X509 failed...\n");
- }
-
- /*tell SSL to use the X509 certificate*/
- ret = SSL_CTX_use_certificate((SSL_CTX*)sslctx, cert);
- if(ret != 1) {
- printf("Use certificate failed\n");
- }
-
- /*create a bio for the RSA key*/
- kbio = BIO_new_mem_buf((char *)mykey, -1);
- if(kbio == NULL) {
- printf("BIO_new_mem_buf failed\n");
- }
-
- /*read the key bio into an RSA object*/
- rsa = PEM_read_bio_RSAPrivateKey(kbio, NULL, 0, NULL);
- if(rsa == NULL) {
- printf("Failed to create key bio\n");
- }
-
- /*tell SSL to use the RSA key from memory*/
- ret = SSL_CTX_use_RSAPrivateKey((SSL_CTX*)sslctx, rsa);
- if(ret != 1) {
- printf("Use Key failed\n");
- }
-
- /* free resources that have been allocated by openssl functions */
- if(bio)
- BIO_free(bio);
-
- if(kbio)
- BIO_free(kbio);
-
- if(rsa)
- RSA_free(rsa);
-
- if(cert)
- X509_free(cert);
-
- /* all set to go */
- return CURLE_OK;
-}
-
-int main(void)
-{
- CURL *ch;
- CURLcode rv;
-
- curl_global_init(CURL_GLOBAL_ALL);
- ch = curl_easy_init();
- curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
- curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
- curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
- curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
- curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, writefunction);
- curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
- curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, writefunction);
- curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
- curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
-
- /* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
- no CA certificate*/
-
- curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 0L);
- curl_easy_setopt(ch, CURLOPT_SSL_VERIFYHOST, 0L);
- curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
- curl_easy_setopt(ch, CURLOPT_SSLKEYTYPE, "PEM");
-
- /* first try: retrieve page without user certificate and key -> will fail
- */
- rv = curl_easy_perform(ch);
- if(rv == CURLE_OK) {
- printf("*** transfer succeeded ***\n");
- }
- else {
- printf("*** transfer failed ***\n");
- }
-
- /* second try: retrieve page using user certificate and key -> will succeed
- * load the certificate and key by installing a function doing the necessary
- * "modifications" to the SSL CONTEXT just before link init
- */
- curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
- rv = curl_easy_perform(ch);
- if(rv == CURLE_OK) {
- printf("*** transfer succeeded ***\n");
- }
- else {
- printf("*** transfer failed ***\n");
- }
-
- curl_easy_cleanup(ch);
- curl_global_cleanup();
- return rv;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/version-check.pl b/components/cronet/third_party/curl_headers/docs/examples/version-check.pl
deleted file mode 100755
index 8f734fc..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/version-check.pl
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env perl
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-
-# This script accepts a source file as input on the command line.
-#
-# It first loads the 'symbols-in-versions' document and stores a lookup
-# table for all known symbols for which version they were introduced.
-#
-# It then scans the given source file to dig up all symbols starting with CURL.
-# Finally, it sorts the internal list of found symbols (using the version
-# number as sort key) and then it outputs the most recent version number and
-# the symbols from that version that are used.
-#
-# Usage:
-#
-# version-check.pl [source file]
-#
-
-open(S, "<../libcurl/symbols-in-versions") || die;
-
-my %doc;
-my %rem;
-while(<S>) {
- if(/(^CURL[^ \n]*) *(.*)/) {
- my ($sym, $rest)=($1, $2);
- my @a=split(/ +/, $rest);
-
- $doc{$sym}=$a[0]; # when it was introduced
-
- if($a[2]) {
- # this symbol is documented to have been present the last time
- # in this release
- $rem{$sym}=$a[2];
- }
- }
-
-}
-
-close(S);
-
-sub age {
- my ($ver)=@_;
-
- my @s=split(/\./, $ver);
- return $s[0]*10000+$s[1]*100+$s[2];
-}
-
-my %used;
-open(C, "<$ARGV[0]") || die;
-
-while(<C>) {
- if(/\W(CURL[_A-Z0-9v]+)\W/) {
- #print "$1\n";
- $used{$1}++;
- }
-}
-
-close(C);
-
-sub sortversions {
- my $r = age($doc{$a}) <=> age($doc{$b});
- if(!$r) {
- $r = $a cmp $b;
- }
- return $r;
-}
-
-my @recent = reverse sort sortversions keys %used;
-
-# the most recent symbol
-my $newsym = $recent[0];
-# the most recent version
-my $newver = $doc{$newsym};
-
-print "The scanned source uses these symbols introduced in $newver:\n";
-
-for my $w (@recent) {
- if($doc{$w} eq $newver) {
- printf " $w\n";
- next;
- }
- last;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/xmlstream.c b/components/cronet/third_party/curl_headers/docs/examples/xmlstream.c
deleted file mode 100644
index 8036e48..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/xmlstream.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/* <DESC>
- * Stream-parse a document using the streaming Expat parser.
- * </DESC>
- */
-/* Written by David Strauss
- *
- * Expat => https://libexpat.github.io/
- *
- * gcc -Wall -I/usr/local/include xmlstream.c -lcurl -lexpat -o xmlstream
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <expat.h>
-#include <curl/curl.h>
-
-struct MemoryStruct {
- char *memory;
- size_t size;
-};
-
-struct ParserStruct {
- int ok;
- size_t tags;
- size_t depth;
- struct MemoryStruct characters;
-};
-
-static void startElement(void *userData, const XML_Char *name,
- const XML_Char **atts)
-{
- struct ParserStruct *state = (struct ParserStruct *) userData;
- state->tags++;
- state->depth++;
-
- /* Get a clean slate for reading in character data. */
- free(state->characters.memory);
- state->characters.memory = NULL;
- state->characters.size = 0;
-}
-
-static void characterDataHandler(void *userData, const XML_Char *s, int len)
-{
- struct ParserStruct *state = (struct ParserStruct *) userData;
- struct MemoryStruct *mem = &state->characters;
-
- char *ptr = realloc(mem->memory, mem->size + len + 1);
- if(!ptr) {
- /* Out of memory. */
- fprintf(stderr, "Not enough memory (realloc returned NULL).\n");
- state->ok = 0;
- return;
- }
-
- mem->memory = ptr;
- memcpy(&(mem->memory[mem->size]), s, len);
- mem->size += len;
- mem->memory[mem->size] = 0;
-}
-
-static void endElement(void *userData, const XML_Char *name)
-{
- struct ParserStruct *state = (struct ParserStruct *) userData;
- state->depth--;
-
- printf("%5lu %10lu %s\n", state->depth, state->characters.size, name);
-}
-
-static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb,
- void *userp)
-{
- XML_Parser parser = (XML_Parser) userp;
- size_t real_size = length * nmemb;
- struct ParserStruct *state = (struct ParserStruct *) XML_GetUserData(parser);
-
- /* Only parse if we're not already in a failure state. */
- if(state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
- int error_code = XML_GetErrorCode(parser);
- fprintf(stderr, "Parsing response buffer of length %lu failed"
- " with error code %d (%s).\n",
- real_size, error_code, XML_ErrorString(error_code));
- state->ok = 0;
- }
-
- return real_size;
-}
-
-int main(void)
-{
- CURL *curl_handle;
- CURLcode res;
- XML_Parser parser;
- struct ParserStruct state;
-
- /* Initialize the state structure for parsing. */
- memset(&state, 0, sizeof(struct ParserStruct));
- state.ok = 1;
-
- /* Initialize a namespace-aware parser. */
- parser = XML_ParserCreateNS(NULL, '\0');
- XML_SetUserData(parser, &state);
- XML_SetElementHandler(parser, startElement, endElement);
- XML_SetCharacterDataHandler(parser, characterDataHandler);
-
- /* Initialize a libcurl handle. */
- curl_global_init(CURL_GLOBAL_DEFAULT);
- curl_handle = curl_easy_init();
- curl_easy_setopt(curl_handle, CURLOPT_URL,
- "https://www.w3schools.com/xml/simple.xml");
- curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, parseStreamCallback);
- curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)parser);
-
- printf("Depth Characters Closing Tag\n");
-
- /* Perform the request and any follow-up parsing. */
- res = curl_easy_perform(curl_handle);
- if(res != CURLE_OK) {
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
- curl_easy_strerror(res));
- }
- else if(state.ok) {
- /* Expat requires one final call to finalize parsing. */
- if(XML_Parse(parser, NULL, 0, 1) == 0) {
- int error_code = XML_GetErrorCode(parser);
- fprintf(stderr, "Finalizing parsing failed with error code %d (%s).\n",
- error_code, XML_ErrorString(error_code));
- }
- else {
- printf(" --------------\n");
- printf(" %lu tags total\n", state.tags);
- }
- }
-
- /* Clean up. */
- free(state.characters.memory);
- XML_ParserFree(parser);
- curl_easy_cleanup(curl_handle);
- curl_global_cleanup();
-
- return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/include/Makefile.am b/components/cronet/third_party/curl_headers/include/Makefile.am
deleted file mode 100644
index 3b24860..0000000
--- a/components/cronet/third_party/curl_headers/include/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-SUBDIRS = curl
-
-EXTRA_DIST = README
-
-AUTOMAKE_OPTIONS = foreign no-dependencies
diff --git a/components/cronet/third_party/curl_headers/include/README b/components/cronet/third_party/curl_headers/include/README
deleted file mode 100644
index 091ef76..0000000
--- a/components/cronet/third_party/curl_headers/include/README
+++ /dev/null
@@ -1,18 +0,0 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
-Include files for libcurl, external users.
-
-They're all placed in the curl subdirectory here for better fit in any kind
-of environment. You must include files from here using...
-
- #include <curl/curl.h>
-
-... style and point the compiler's include path to the directory holding the
-curl subdirectory. It makes it more likely to survive future modifications.
-
-The public curl include files can be shared freely between different platforms
-and different architectures.
diff --git a/components/cronet/third_party/curl_headers/include/curl/.gitignore b/components/cronet/third_party/curl_headers/include/curl/.gitignore
deleted file mode 100644
index 555795fa..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-curlver.h.dist
-stamp-h2
-stamp-h3
diff --git a/components/cronet/third_party/curl_headers/include/curl/Makefile.am b/components/cronet/third_party/curl_headers/include/curl/Makefile.am
deleted file mode 100644
index a31f61b1..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-#***************************************************************************
-# _ _ ____ _
-# Project ___| | | | _ \| |
-# / __| | | | |_) | |
-# | (__| |_| | _ <| |___
-# \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
-#
-# This software is licensed as described in the file COPYING, which
-# you should have received as part of this distribution. The terms
-# are also available at https://curl.haxx.se/docs/copyright.html.
-#
-# You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# copies of the Software, and permit persons to whom the Software is
-# furnished to do so, under the terms of the COPYING file.
-#
-# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# KIND, either express or implied.
-#
-###########################################################################
-pkginclude_HEADERS = \
- curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \
- typecheck-gcc.h system.h urlapi.h
-
-pkgincludedir= $(includedir)/curl
-
-CHECKSRC = $(CS_$(V))
-CS_0 = @echo " RUN " $@;
-CS_1 =
-CS_ = $(CS_0)
-
-checksrc:
- $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
-
-if CURLDEBUG
-# for debug builds, we scan the sources on all regular make invokes
-all-local: checksrc
-endif
diff --git a/components/cronet/third_party/curl_headers/include/curl/curl.h b/components/cronet/third_party/curl_headers/include/curl/curl.h
deleted file mode 100644
index e7f812da..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/curl.h
+++ /dev/null
@@ -1,2870 +0,0 @@
-#ifndef __CURL_CURL_H
-#define __CURL_CURL_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/*
- * If you have libcurl problems, all docs and details are found here:
- * https://curl.haxx.se/libcurl/
- *
- * curl-library mailing list subscription and unsubscription web interface:
- * https://cool.haxx.se/mailman/listinfo/curl-library/
- */
-
-#ifdef CURL_NO_OLDIES
-#define CURL_STRICTER
-#endif
-
-#include "curlver.h" /* libcurl version defines */
-#include "system.h" /* determine things run-time */
-
-/*
- * Define WIN32 when build target is Win32 API
- */
-
-#if (defined(_WIN32) || defined(__WIN32__)) && \
- !defined(WIN32) && !defined(__SYMBIAN32__)
-#define WIN32
-#endif
-
-#include <stdio.h>
-#include <limits.h>
-
-#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
-/* Needed for __FreeBSD_version symbol definition */
-#include <osreldate.h>
-#endif
-
-/* The include stuff here below is mainly for time_t! */
-#include <sys/types.h>
-#include <time.h>
-
-#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
-#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
- defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
-/* The check above prevents the winsock2 inclusion if winsock.h already was
- included, since they can't co-exist without problems */
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-#endif
-
-/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
- libc5-based Linux systems. Only include it on systems that are known to
- require it! */
-#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
- defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
- defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
- defined(__CYGWIN__) || \
- (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
-#include <sys/select.h>
-#endif
-
-#if !defined(WIN32) && !defined(_WIN32_WCE)
-#include <sys/socket.h>
-#endif
-
-#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
-#include <sys/time.h>
-#endif
-
-#ifdef __BEOS__
-#include <support/SupportDefs.h>
-#endif
-
-/* Compatibility for non-Clang compilers */
-#ifndef __has_declspec_attribute
-# define __has_declspec_attribute(x) 0
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
-typedef struct Curl_easy CURL;
-typedef struct Curl_share CURLSH;
-#else
-typedef void CURL;
-typedef void CURLSH;
-#endif
-
-/*
- * libcurl external API function linkage decorations.
- */
-
-#ifdef CURL_STATICLIB
-# define CURL_EXTERN
-#elif defined(WIN32) || defined(__SYMBIAN32__) || \
- (__has_declspec_attribute(dllexport) && \
- __has_declspec_attribute(dllimport))
-# if defined(BUILDING_LIBCURL)
-# define CURL_EXTERN __declspec(dllexport)
-# else
-# define CURL_EXTERN __declspec(dllimport)
-# endif
-#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)
-# define CURL_EXTERN CURL_EXTERN_SYMBOL
-#else
-# define CURL_EXTERN
-#endif
-
-#ifndef curl_socket_typedef
-/* socket typedef */
-#if defined(WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H)
-typedef SOCKET curl_socket_t;
-#define CURL_SOCKET_BAD INVALID_SOCKET
-#else
-typedef int curl_socket_t;
-#define CURL_SOCKET_BAD -1
-#endif
-#define curl_socket_typedef
-#endif /* curl_socket_typedef */
-
-/* enum for the different supported SSL backends */
-typedef enum {
- CURLSSLBACKEND_NONE = 0,
- CURLSSLBACKEND_OPENSSL = 1,
- CURLSSLBACKEND_GNUTLS = 2,
- CURLSSLBACKEND_NSS = 3,
- CURLSSLBACKEND_OBSOLETE4 = 4, /* Was QSOSSL. */
- CURLSSLBACKEND_GSKIT = 5,
- CURLSSLBACKEND_POLARSSL = 6,
- CURLSSLBACKEND_WOLFSSL = 7,
- CURLSSLBACKEND_SCHANNEL = 8,
- CURLSSLBACKEND_SECURETRANSPORT = 9,
- CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
- CURLSSLBACKEND_MBEDTLS = 11,
- CURLSSLBACKEND_MESALINK = 12
-} curl_sslbackend;
-
-/* aliases for library clones and renames */
-#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
-#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL
-
-/* deprecated names: */
-#define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL
-#define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT
-
-struct curl_httppost {
- struct curl_httppost *next; /* next entry in the list */
- char *name; /* pointer to allocated name */
- long namelength; /* length of name length */
- char *contents; /* pointer to allocated data contents */
- long contentslength; /* length of contents field, see also
- CURL_HTTPPOST_LARGE */
- char *buffer; /* pointer to allocated buffer contents */
- long bufferlength; /* length of buffer field */
- char *contenttype; /* Content-Type */
- struct curl_slist *contentheader; /* list of extra headers for this form */
- struct curl_httppost *more; /* if one field name has more than one
- file, this link should link to following
- files */
- long flags; /* as defined below */
-
-/* specified content is a file name */
-#define CURL_HTTPPOST_FILENAME (1<<0)
-/* specified content is a file name */
-#define CURL_HTTPPOST_READFILE (1<<1)
-/* name is only stored pointer do not free in formfree */
-#define CURL_HTTPPOST_PTRNAME (1<<2)
-/* contents is only stored pointer do not free in formfree */
-#define CURL_HTTPPOST_PTRCONTENTS (1<<3)
-/* upload file from buffer */
-#define CURL_HTTPPOST_BUFFER (1<<4)
-/* upload file from pointer contents */
-#define CURL_HTTPPOST_PTRBUFFER (1<<5)
-/* upload file contents by using the regular read callback to get the data and
- pass the given pointer as custom pointer */
-#define CURL_HTTPPOST_CALLBACK (1<<6)
-/* use size in 'contentlen', added in 7.46.0 */
-#define CURL_HTTPPOST_LARGE (1<<7)
-
- char *showfilename; /* The file name to show. If not set, the
- actual file name will be used (if this
- is a file part) */
- void *userp; /* custom pointer used for
- HTTPPOST_CALLBACK posts */
- curl_off_t contentlen; /* alternative length of contents
- field. Used if CURL_HTTPPOST_LARGE is
- set. Added in 7.46.0 */
-};
-
-/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now
- considered deprecated but was the only choice up until 7.31.0 */
-typedef int (*curl_progress_callback)(void *clientp,
- double dltotal,
- double dlnow,
- double ultotal,
- double ulnow);
-
-/* This is the CURLOPT_XFERINFOFUNCTION callback prototype. It was introduced
- in 7.32.0, avoids the use of floating point numbers and provides more
- detailed information. */
-typedef int (*curl_xferinfo_callback)(void *clientp,
- curl_off_t dltotal,
- curl_off_t dlnow,
- curl_off_t ultotal,
- curl_off_t ulnow);
-
-#ifndef CURL_MAX_READ_SIZE
- /* The maximum receive buffer size configurable via CURLOPT_BUFFERSIZE. */
-#define CURL_MAX_READ_SIZE 524288
-#endif
-
-#ifndef CURL_MAX_WRITE_SIZE
- /* Tests have proven that 20K is a very bad buffer size for uploads on
- Windows, while 16K for some odd reason performed a lot better.
- We do the ifndef check to allow this value to easier be changed at build
- time for those who feel adventurous. The practical minimum is about
- 400 bytes since libcurl uses a buffer of this size as a scratch area
- (unrelated to network send operations). */
-#define CURL_MAX_WRITE_SIZE 16384
-#endif
-
-#ifndef CURL_MAX_HTTP_HEADER
-/* The only reason to have a max limit for this is to avoid the risk of a bad
- server feeding libcurl with a never-ending header that will cause reallocs
- infinitely */
-#define CURL_MAX_HTTP_HEADER (100*1024)
-#endif
-
-/* This is a magic return code for the write callback that, when returned,
- will signal libcurl to pause receiving on the current transfer. */
-#define CURL_WRITEFUNC_PAUSE 0x10000001
-
-typedef size_t (*curl_write_callback)(char *buffer,
- size_t size,
- size_t nitems,
- void *outstream);
-
-/* This callback will be called when a new resolver request is made */
-typedef int (*curl_resolver_start_callback)(void *resolver_state,
- void *reserved, void *userdata);
-
-/* enumeration of file types */
-typedef enum {
- CURLFILETYPE_FILE = 0,
- CURLFILETYPE_DIRECTORY,
- CURLFILETYPE_SYMLINK,
- CURLFILETYPE_DEVICE_BLOCK,
- CURLFILETYPE_DEVICE_CHAR,
- CURLFILETYPE_NAMEDPIPE,
- CURLFILETYPE_SOCKET,
- CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */
-
- CURLFILETYPE_UNKNOWN /* should never occur */
-} curlfiletype;
-
-#define CURLFINFOFLAG_KNOWN_FILENAME (1<<0)
-#define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1)
-#define CURLFINFOFLAG_KNOWN_TIME (1<<2)
-#define CURLFINFOFLAG_KNOWN_PERM (1<<3)
-#define CURLFINFOFLAG_KNOWN_UID (1<<4)
-#define CURLFINFOFLAG_KNOWN_GID (1<<5)
-#define CURLFINFOFLAG_KNOWN_SIZE (1<<6)
-#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7)
-
-/* Content of this structure depends on information which is known and is
- achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man
- page for callbacks returning this structure -- some fields are mandatory,
- some others are optional. The FLAG field has special meaning. */
-struct curl_fileinfo {
- char *filename;
- curlfiletype filetype;
- time_t time; /* always zero! */
- unsigned int perm;
- int uid;
- int gid;
- curl_off_t size;
- long int hardlinks;
-
- struct {
- /* If some of these fields is not NULL, it is a pointer to b_data. */
- char *time;
- char *perm;
- char *user;
- char *group;
- char *target; /* pointer to the target filename of a symlink */
- } strings;
-
- unsigned int flags;
-
- /* used internally */
- char *b_data;
- size_t b_size;
- size_t b_used;
-};
-
-/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */
-#define CURL_CHUNK_BGN_FUNC_OK 0
-#define CURL_CHUNK_BGN_FUNC_FAIL 1 /* tell the lib to end the task */
-#define CURL_CHUNK_BGN_FUNC_SKIP 2 /* skip this chunk over */
-
-/* if splitting of data transfer is enabled, this callback is called before
- download of an individual chunk started. Note that parameter "remains" works
- only for FTP wildcard downloading (for now), otherwise is not used */
-typedef long (*curl_chunk_bgn_callback)(const void *transfer_info,
- void *ptr,
- int remains);
-
-/* return codes for CURLOPT_CHUNK_END_FUNCTION */
-#define CURL_CHUNK_END_FUNC_OK 0
-#define CURL_CHUNK_END_FUNC_FAIL 1 /* tell the lib to end the task */
-
-/* If splitting of data transfer is enabled this callback is called after
- download of an individual chunk finished.
- Note! After this callback was set then it have to be called FOR ALL chunks.
- Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC.
- This is the reason why we don't need "transfer_info" parameter in this
- callback and we are not interested in "remains" parameter too. */
-typedef long (*curl_chunk_end_callback)(void *ptr);
-
-/* return codes for FNMATCHFUNCTION */
-#define CURL_FNMATCHFUNC_MATCH 0 /* string corresponds to the pattern */
-#define CURL_FNMATCHFUNC_NOMATCH 1 /* pattern doesn't match the string */
-#define CURL_FNMATCHFUNC_FAIL 2 /* an error occurred */
-
-/* callback type for wildcard downloading pattern matching. If the
- string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */
-typedef int (*curl_fnmatch_callback)(void *ptr,
- const char *pattern,
- const char *string);
-
-/* These are the return codes for the seek callbacks */
-#define CURL_SEEKFUNC_OK 0
-#define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */
-#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
- libcurl might try other means instead */
-typedef int (*curl_seek_callback)(void *instream,
- curl_off_t offset,
- int origin); /* 'whence' */
-
-/* This is a return code for the read callback that, when returned, will
- signal libcurl to immediately abort the current transfer. */
-#define CURL_READFUNC_ABORT 0x10000000
-/* This is a return code for the read callback that, when returned, will
- signal libcurl to pause sending data on the current transfer. */
-#define CURL_READFUNC_PAUSE 0x10000001
-
-/* Return code for when the trailing headers' callback has terminated
- without any errors*/
-#define CURL_TRAILERFUNC_OK 0
-/* Return code for when was an error in the trailing header's list and we
- want to abort the request */
-#define CURL_TRAILERFUNC_ABORT 1
-
-typedef size_t (*curl_read_callback)(char *buffer,
- size_t size,
- size_t nitems,
- void *instream);
-
-typedef int (*curl_trailer_callback)(struct curl_slist **list,
- void *userdata);
-
-typedef enum {
- CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */
- CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
- CURLSOCKTYPE_LAST /* never use */
-} curlsocktype;
-
-/* The return code from the sockopt_callback can signal information back
- to libcurl: */
-#define CURL_SOCKOPT_OK 0
-#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
- CURLE_ABORTED_BY_CALLBACK */
-#define CURL_SOCKOPT_ALREADY_CONNECTED 2
-
-typedef int (*curl_sockopt_callback)(void *clientp,
- curl_socket_t curlfd,
- curlsocktype purpose);
-
-struct curl_sockaddr {
- int family;
- int socktype;
- int protocol;
- unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it
- turned really ugly and painful on the systems that
- lack this type */
- struct sockaddr addr;
-};
-
-typedef curl_socket_t
-(*curl_opensocket_callback)(void *clientp,
- curlsocktype purpose,
- struct curl_sockaddr *address);
-
-typedef int
-(*curl_closesocket_callback)(void *clientp, curl_socket_t item);
-
-typedef enum {
- CURLIOE_OK, /* I/O operation successful */
- CURLIOE_UNKNOWNCMD, /* command was unknown to callback */
- CURLIOE_FAILRESTART, /* failed to restart the read */
- CURLIOE_LAST /* never use */
-} curlioerr;
-
-typedef enum {
- CURLIOCMD_NOP, /* no operation */
- CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
- CURLIOCMD_LAST /* never use */
-} curliocmd;
-
-typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
- int cmd,
- void *clientp);
-
-#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS
-/*
- * The following typedef's are signatures of malloc, free, realloc, strdup and
- * calloc respectively. Function pointers of these types can be passed to the
- * curl_global_init_mem() function to set user defined memory management
- * callback routines.
- */
-typedef void *(*curl_malloc_callback)(size_t size);
-typedef void (*curl_free_callback)(void *ptr);
-typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
-typedef char *(*curl_strdup_callback)(const char *str);
-typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
-
-#define CURL_DID_MEMORY_FUNC_TYPEDEFS
-#endif
-
-/* the kind of data that is passed to information_callback*/
-typedef enum {
- CURLINFO_TEXT = 0,
- CURLINFO_HEADER_IN, /* 1 */
- CURLINFO_HEADER_OUT, /* 2 */
- CURLINFO_DATA_IN, /* 3 */
- CURLINFO_DATA_OUT, /* 4 */
- CURLINFO_SSL_DATA_IN, /* 5 */
- CURLINFO_SSL_DATA_OUT, /* 6 */
- CURLINFO_END
-} curl_infotype;
-
-typedef int (*curl_debug_callback)
- (CURL *handle, /* the handle/transfer this concerns */
- curl_infotype type, /* what kind of data */
- char *data, /* points to the data */
- size_t size, /* size of the data pointed to */
- void *userptr); /* whatever the user please */
-
-/* All possible error codes from all sorts of curl functions. Future versions
- may return other values, stay prepared.
-
- Always add new return codes last. Never *EVER* remove any. The return
- codes must remain the same!
- */
-
-typedef enum {
- CURLE_OK = 0,
- CURLE_UNSUPPORTED_PROTOCOL, /* 1 */
- CURLE_FAILED_INIT, /* 2 */
- CURLE_URL_MALFORMAT, /* 3 */
- CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for
- 7.17.0, reused in April 2011 for 7.21.5] */
- CURLE_COULDNT_RESOLVE_PROXY, /* 5 */
- CURLE_COULDNT_RESOLVE_HOST, /* 6 */
- CURLE_COULDNT_CONNECT, /* 7 */
- CURLE_WEIRD_SERVER_REPLY, /* 8 */
- CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server
- due to lack of access - when login fails
- this is not returned. */
- CURLE_FTP_ACCEPT_FAILED, /* 10 - [was obsoleted in April 2006 for
- 7.15.4, reused in Dec 2011 for 7.24.0]*/
- CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */
- CURLE_FTP_ACCEPT_TIMEOUT, /* 12 - timeout occurred accepting server
- [was obsoleted in August 2007 for 7.17.0,
- reused in Dec 2011 for 7.24.0]*/
- CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */
- CURLE_FTP_WEIRD_227_FORMAT, /* 14 */
- CURLE_FTP_CANT_GET_HOST, /* 15 */
- CURLE_HTTP2, /* 16 - A problem in the http2 framing layer.
- [was obsoleted in August 2007 for 7.17.0,
- reused in July 2014 for 7.38.0] */
- CURLE_FTP_COULDNT_SET_TYPE, /* 17 */
- CURLE_PARTIAL_FILE, /* 18 */
- CURLE_FTP_COULDNT_RETR_FILE, /* 19 */
- CURLE_OBSOLETE20, /* 20 - NOT USED */
- CURLE_QUOTE_ERROR, /* 21 - quote command failure */
- CURLE_HTTP_RETURNED_ERROR, /* 22 */
- CURLE_WRITE_ERROR, /* 23 */
- CURLE_OBSOLETE24, /* 24 - NOT USED */
- CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */
- CURLE_READ_ERROR, /* 26 - couldn't open/read from file */
- CURLE_OUT_OF_MEMORY, /* 27 */
- /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error
- instead of a memory allocation error if CURL_DOES_CONVERSIONS
- is defined
- */
- CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */
- CURLE_OBSOLETE29, /* 29 - NOT USED */
- CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */
- CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */
- CURLE_OBSOLETE32, /* 32 - NOT USED */
- CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */
- CURLE_HTTP_POST_ERROR, /* 34 */
- CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */
- CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */
- CURLE_FILE_COULDNT_READ_FILE, /* 37 */
- CURLE_LDAP_CANNOT_BIND, /* 38 */
- CURLE_LDAP_SEARCH_FAILED, /* 39 */
- CURLE_OBSOLETE40, /* 40 - NOT USED */
- CURLE_FUNCTION_NOT_FOUND, /* 41 - NOT USED starting with 7.53.0 */
- CURLE_ABORTED_BY_CALLBACK, /* 42 */
- CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */
- CURLE_OBSOLETE44, /* 44 - NOT USED */
- CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */
- CURLE_OBSOLETE46, /* 46 - NOT USED */
- CURLE_TOO_MANY_REDIRECTS, /* 47 - catch endless re-direct loops */
- CURLE_UNKNOWN_OPTION, /* 48 - User specified an unknown option */
- CURLE_TELNET_OPTION_SYNTAX, /* 49 - Malformed telnet option */
- CURLE_OBSOLETE50, /* 50 - NOT USED */
- CURLE_OBSOLETE51, /* 51 - NOT USED */
- CURLE_GOT_NOTHING, /* 52 - when this is a specific error */
- CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */
- CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as
- default */
- CURLE_SEND_ERROR, /* 55 - failed sending network data */
- CURLE_RECV_ERROR, /* 56 - failure in receiving network data */
- CURLE_OBSOLETE57, /* 57 - NOT IN USE */
- CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */
- CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */
- CURLE_PEER_FAILED_VERIFICATION, /* 60 - peer's certificate or fingerprint
- wasn't verified fine */
- CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */
- CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */
- CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */
- CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */
- CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind
- that failed */
- CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */
- CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not
- accepted and we failed to login */
- CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */
- CURLE_TFTP_PERM, /* 69 - permission problem on server */
- CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */
- CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */
- CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */
- CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */
- CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */
- CURLE_CONV_FAILED, /* 75 - conversion failed */
- CURLE_CONV_REQD, /* 76 - caller must register conversion
- callbacks using curl_easy_setopt options
- CURLOPT_CONV_FROM_NETWORK_FUNCTION,
- CURLOPT_CONV_TO_NETWORK_FUNCTION, and
- CURLOPT_CONV_FROM_UTF8_FUNCTION */
- CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing
- or wrong format */
- CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */
- CURLE_SSH, /* 79 - error from the SSH layer, somewhat
- generic so the error message will be of
- interest when this has happened */
-
- CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL
- connection */
- CURLE_AGAIN, /* 81 - socket is not ready for send/recv,
- wait till it's ready and try again (Added
- in 7.18.2) */
- CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or
- wrong format (Added in 7.19.0) */
- CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in
- 7.19.0) */
- CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */
- CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */
- CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Ids */
- CURLE_FTP_BAD_FILE_LIST, /* 87 - unable to parse FTP file list */
- CURLE_CHUNK_FAILED, /* 88 - chunk callback reported error */
- CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the
- session will be queued */
- CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not
- match */
- CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */
- CURLE_HTTP2_STREAM, /* 92 - stream error in HTTP/2 framing layer
- */
- CURLE_RECURSIVE_API_CALL, /* 93 - an api function was called from
- inside a callback */
- CURL_LAST /* never use! */
-} CURLcode;
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
- the obsolete stuff removed! */
-
-/* Previously obsolete error code re-used in 7.38.0 */
-#define CURLE_OBSOLETE16 CURLE_HTTP2
-
-/* Previously obsolete error codes re-used in 7.24.0 */
-#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
-#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
-
-/* compatibility with older names */
-#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING
-#define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY
-
-/* The following were added in 7.62.0 */
-#define CURLE_SSL_CACERT CURLE_PEER_FAILED_VERIFICATION
-
-/* The following were added in 7.21.5, April 2011 */
-#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION
-
-/* The following were added in 7.17.1 */
-/* These are scheduled to disappear by 2009 */
-#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION
-
-/* The following were added in 7.17.0 */
-/* These are scheduled to disappear by 2009 */
-#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */
-#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46
-#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44
-#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10
-#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16
-#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32
-#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29
-#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12
-#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20
-#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40
-#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24
-#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57
-#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN
-
-#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED
-#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE
-#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR
-#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL
-#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS
-#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR
-#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED
-
-/* The following were added earlier */
-
-#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
-
-#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
-#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
-#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
-
-#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
-#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
-
-/* This was the error code 50 in 7.7.3 and a few earlier versions, this
- is no longer used by libcurl but is instead #defined here only to not
- make programs break */
-#define CURLE_ALREADY_COMPLETE 99999
-
-/* Provide defines for really old option names */
-#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */
-#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */
-#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA
-
-/* Since long deprecated options with no code in the lib that does anything
- with them. */
-#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40
-#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72
-
-#endif /*!CURL_NO_OLDIES*/
-
-/* This prototype applies to all conversion callbacks */
-typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
-
-typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */
- void *ssl_ctx, /* actually an OpenSSL
- or WolfSSL SSL_CTX,
- or an mbedTLS
- mbedtls_ssl_config */
- void *userptr);
-
-typedef enum {
- CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use
- CONNECT HTTP/1.1 */
- CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT
- HTTP/1.0 */
- CURLPROXY_HTTPS = 2, /* added in 7.52.0 */
- CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
- in 7.10 */
- CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
- CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */
- CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the
- host name rather than the IP address. added
- in 7.18.0 */
-} curl_proxytype; /* this enum was added in 7.10 */
-
-/*
- * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options:
- *
- * CURLAUTH_NONE - No HTTP authentication
- * CURLAUTH_BASIC - HTTP Basic authentication (default)
- * CURLAUTH_DIGEST - HTTP Digest authentication
- * CURLAUTH_NEGOTIATE - HTTP Negotiate (SPNEGO) authentication
- * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated)
- * CURLAUTH_NTLM - HTTP NTLM authentication
- * CURLAUTH_DIGEST_IE - HTTP Digest authentication with IE flavour
- * CURLAUTH_NTLM_WB - HTTP NTLM authentication delegated to winbind helper
- * CURLAUTH_BEARER - HTTP Bearer token authentication
- * CURLAUTH_ONLY - Use together with a single other type to force no
- * authentication or just that single type
- * CURLAUTH_ANY - All fine types set
- * CURLAUTH_ANYSAFE - All fine types except Basic
- */
-
-#define CURLAUTH_NONE ((unsigned long)0)
-#define CURLAUTH_BASIC (((unsigned long)1)<<0)
-#define CURLAUTH_DIGEST (((unsigned long)1)<<1)
-#define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2)
-/* Deprecated since the advent of CURLAUTH_NEGOTIATE */
-#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
-/* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */
-#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE
-#define CURLAUTH_NTLM (((unsigned long)1)<<3)
-#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4)
-#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5)
-#define CURLAUTH_BEARER (((unsigned long)1)<<6)
-#define CURLAUTH_ONLY (((unsigned long)1)<<31)
-#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)
-#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))
-
-#define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */
-#define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */
-#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */
-#define CURLSSH_AUTH_PASSWORD (1<<1) /* password */
-#define CURLSSH_AUTH_HOST (1<<2) /* host key files */
-#define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */
-#define CURLSSH_AUTH_AGENT (1<<4) /* agent (ssh-agent, pageant...) */
-#define CURLSSH_AUTH_GSSAPI (1<<5) /* gssapi (kerberos, ...) */
-#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
-
-#define CURLGSSAPI_DELEGATION_NONE 0 /* no delegation (default) */
-#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */
-#define CURLGSSAPI_DELEGATION_FLAG (1<<1) /* delegate always */
-
-#define CURL_ERROR_SIZE 256
-
-enum curl_khtype {
- CURLKHTYPE_UNKNOWN,
- CURLKHTYPE_RSA1,
- CURLKHTYPE_RSA,
- CURLKHTYPE_DSS,
- CURLKHTYPE_ECDSA,
- CURLKHTYPE_ED25519
-};
-
-struct curl_khkey {
- const char *key; /* points to a zero-terminated string encoded with base64
- if len is zero, otherwise to the "raw" data */
- size_t len;
- enum curl_khtype keytype;
-};
-
-/* this is the set of return values expected from the curl_sshkeycallback
- callback */
-enum curl_khstat {
- CURLKHSTAT_FINE_ADD_TO_FILE,
- CURLKHSTAT_FINE,
- CURLKHSTAT_REJECT, /* reject the connection, return an error */
- CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now so
- this causes a CURLE_DEFER error but otherwise the
- connection will be left intact etc */
- CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */
-};
-
-/* this is the set of status codes pass in to the callback */
-enum curl_khmatch {
- CURLKHMATCH_OK, /* match */
- CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
- CURLKHMATCH_MISSING, /* no matching host/key found */
- CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */
-};
-
-typedef int
- (*curl_sshkeycallback) (CURL *easy, /* easy handle */
- const struct curl_khkey *knownkey, /* known */
- const struct curl_khkey *foundkey, /* found */
- enum curl_khmatch, /* libcurl's view on the keys */
- void *clientp); /* custom pointer passed from app */
-
-/* parameter for the CURLOPT_USE_SSL option */
-typedef enum {
- CURLUSESSL_NONE, /* do not attempt to use SSL */
- CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */
- CURLUSESSL_CONTROL, /* SSL for the control connection or fail */
- CURLUSESSL_ALL, /* SSL for all communication or fail */
- CURLUSESSL_LAST /* not an option, never use */
-} curl_usessl;
-
-/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */
-
-/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the
- name of improving interoperability with older servers. Some SSL libraries
- have introduced work-arounds for this flaw but those work-arounds sometimes
- make the SSL communication fail. To regain functionality with those broken
- servers, a user can this way allow the vulnerability back. */
-#define CURLSSLOPT_ALLOW_BEAST (1<<0)
-
-/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
- SSL backends where such behavior is present. */
-#define CURLSSLOPT_NO_REVOKE (1<<1)
-
-/* The default connection attempt delay in milliseconds for happy eyeballs.
- CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document
- this value, keep them in sync. */
-#define CURL_HET_DEFAULT 200L
-
-/* The default connection upkeep interval in milliseconds. */
-#define CURL_UPKEEP_INTERVAL_DEFAULT 60000L
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
- the obsolete stuff removed! */
-
-/* Backwards compatibility with older names */
-/* These are scheduled to disappear by 2009 */
-
-#define CURLFTPSSL_NONE CURLUSESSL_NONE
-#define CURLFTPSSL_TRY CURLUSESSL_TRY
-#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL
-#define CURLFTPSSL_ALL CURLUSESSL_ALL
-#define CURLFTPSSL_LAST CURLUSESSL_LAST
-#define curl_ftpssl curl_usessl
-#endif /*!CURL_NO_OLDIES*/
-
-/* parameter for the CURLOPT_FTP_SSL_CCC option */
-typedef enum {
- CURLFTPSSL_CCC_NONE, /* do not send CCC */
- CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */
- CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */
- CURLFTPSSL_CCC_LAST /* not an option, never use */
-} curl_ftpccc;
-
-/* parameter for the CURLOPT_FTPSSLAUTH option */
-typedef enum {
- CURLFTPAUTH_DEFAULT, /* let libcurl decide */
- CURLFTPAUTH_SSL, /* use "AUTH SSL" */
- CURLFTPAUTH_TLS, /* use "AUTH TLS" */
- CURLFTPAUTH_LAST /* not an option, never use */
-} curl_ftpauth;
-
-/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */
-typedef enum {
- CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */
- CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD
- again if MKD succeeded, for SFTP this does
- similar magic */
- CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD
- again even if MKD failed! */
- CURLFTP_CREATE_DIR_LAST /* not an option, never use */
-} curl_ftpcreatedir;
-
-/* parameter for the CURLOPT_FTP_FILEMETHOD option */
-typedef enum {
- CURLFTPMETHOD_DEFAULT, /* let libcurl pick */
- CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */
- CURLFTPMETHOD_NOCWD, /* no CWD at all */
- CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */
- CURLFTPMETHOD_LAST /* not an option, never use */
-} curl_ftpmethod;
-
-/* bitmask defines for CURLOPT_HEADEROPT */
-#define CURLHEADER_UNIFIED 0
-#define CURLHEADER_SEPARATE (1<<0)
-
-/* CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option */
-#define CURLALTSVC_IMMEDIATELY (1<<0)
-#define CURLALTSVC_ALTUSED (1<<1)
-#define CURLALTSVC_READONLYFILE (1<<2)
-#define CURLALTSVC_H1 (1<<3)
-#define CURLALTSVC_H2 (1<<4)
-#define CURLALTSVC_H3 (1<<5)
-
-/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
-#define CURLPROTO_HTTP (1<<0)
-#define CURLPROTO_HTTPS (1<<1)
-#define CURLPROTO_FTP (1<<2)
-#define CURLPROTO_FTPS (1<<3)
-#define CURLPROTO_SCP (1<<4)
-#define CURLPROTO_SFTP (1<<5)
-#define CURLPROTO_TELNET (1<<6)
-#define CURLPROTO_LDAP (1<<7)
-#define CURLPROTO_LDAPS (1<<8)
-#define CURLPROTO_DICT (1<<9)
-#define CURLPROTO_FILE (1<<10)
-#define CURLPROTO_TFTP (1<<11)
-#define CURLPROTO_IMAP (1<<12)
-#define CURLPROTO_IMAPS (1<<13)
-#define CURLPROTO_POP3 (1<<14)
-#define CURLPROTO_POP3S (1<<15)
-#define CURLPROTO_SMTP (1<<16)
-#define CURLPROTO_SMTPS (1<<17)
-#define CURLPROTO_RTSP (1<<18)
-#define CURLPROTO_RTMP (1<<19)
-#define CURLPROTO_RTMPT (1<<20)
-#define CURLPROTO_RTMPE (1<<21)
-#define CURLPROTO_RTMPTE (1<<22)
-#define CURLPROTO_RTMPS (1<<23)
-#define CURLPROTO_RTMPTS (1<<24)
-#define CURLPROTO_GOPHER (1<<25)
-#define CURLPROTO_SMB (1<<26)
-#define CURLPROTO_SMBS (1<<27)
-#define CURLPROTO_ALL (~0) /* enable everything */
-
-/* long may be 32 or 64 bits, but we should never depend on anything else
- but 32 */
-#define CURLOPTTYPE_LONG 0
-#define CURLOPTTYPE_OBJECTPOINT 10000
-#define CURLOPTTYPE_STRINGPOINT 10000
-#define CURLOPTTYPE_FUNCTIONPOINT 20000
-#define CURLOPTTYPE_OFF_T 30000
-
-/* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the
- string options from the header file */
-
-/* name is uppercase CURLOPT_<name>,
- type is one of the defined CURLOPTTYPE_<type>
- number is unique identifier */
-#ifdef CINIT
-#undef CINIT
-#endif
-
-#ifdef CURL_ISOCPP
-#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define LONG CURLOPTTYPE_LONG
-#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
-#define STRINGPOINT CURLOPTTYPE_OBJECTPOINT
-#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
-#define OFF_T CURLOPTTYPE_OFF_T
-#define CINIT(name,type,number) CURLOPT_/**/name = type + number
-#endif
-
-/*
- * This macro-mania below setups the CURLOPT_[what] enum, to be used with
- * curl_easy_setopt(). The first argument in the CINIT() macro is the [what]
- * word.
- */
-
-typedef enum {
- /* This is the FILE * or void * the regular output should be written to. */
- CINIT(WRITEDATA, OBJECTPOINT, 1),
-
- /* The full URL to get/put */
- CINIT(URL, STRINGPOINT, 2),
-
- /* Port number to connect to, if other than default. */
- CINIT(PORT, LONG, 3),
-
- /* Name of proxy to use. */
- CINIT(PROXY, STRINGPOINT, 4),
-
- /* "user:password;options" to use when fetching. */
- CINIT(USERPWD, STRINGPOINT, 5),
-
- /* "user:password" to use with proxy. */
- CINIT(PROXYUSERPWD, STRINGPOINT, 6),
-
- /* Range to get, specified as an ASCII string. */
- CINIT(RANGE, STRINGPOINT, 7),
-
- /* not used */
-
- /* Specified file stream to upload from (use as input): */
- CINIT(READDATA, OBJECTPOINT, 9),
-
- /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
- * bytes big. */
- CINIT(ERRORBUFFER, OBJECTPOINT, 10),
-
- /* Function that will be called to store the output (instead of fwrite). The
- * parameters will use fwrite() syntax, make sure to follow them. */
- CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11),
-
- /* Function that will be called to read the input (instead of fread). The
- * parameters will use fread() syntax, make sure to follow them. */
- CINIT(READFUNCTION, FUNCTIONPOINT, 12),
-
- /* Time-out the read operation after this amount of seconds */
- CINIT(TIMEOUT, LONG, 13),
-
- /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about
- * how large the file being sent really is. That allows better error
- * checking and better verifies that the upload was successful. -1 means
- * unknown size.
- *
- * For large file support, there is also a _LARGE version of the key
- * which takes an off_t type, allowing platforms with larger off_t
- * sizes to handle larger files. See below for INFILESIZE_LARGE.
- */
- CINIT(INFILESIZE, LONG, 14),
-
- /* POST static input fields. */
- CINIT(POSTFIELDS, OBJECTPOINT, 15),
-
- /* Set the referrer page (needed by some CGIs) */
- CINIT(REFERER, STRINGPOINT, 16),
-
- /* Set the FTP PORT string (interface name, named or numerical IP address)
- Use i.e '-' to use default address. */
- CINIT(FTPPORT, STRINGPOINT, 17),
-
- /* Set the User-Agent string (examined by some CGIs) */
- CINIT(USERAGENT, STRINGPOINT, 18),
-
- /* If the download receives less than "low speed limit" bytes/second
- * during "low speed time" seconds, the operations is aborted.
- * You could i.e if you have a pretty high speed connection, abort if
- * it is less than 2000 bytes/sec during 20 seconds.
- */
-
- /* Set the "low speed limit" */
- CINIT(LOW_SPEED_LIMIT, LONG, 19),
-
- /* Set the "low speed time" */
- CINIT(LOW_SPEED_TIME, LONG, 20),
-
- /* Set the continuation offset.
- *
- * Note there is also a _LARGE version of this key which uses
- * off_t types, allowing for large file offsets on platforms which
- * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE.
- */
- CINIT(RESUME_FROM, LONG, 21),
-
- /* Set cookie in request: */
- CINIT(COOKIE, STRINGPOINT, 22),
-
- /* This points to a linked list of headers, struct curl_slist kind. This
- list is also used for RTSP (in spite of its name) */
- CINIT(HTTPHEADER, OBJECTPOINT, 23),
-
- /* This points to a linked list of post entries, struct curl_httppost */
- CINIT(HTTPPOST, OBJECTPOINT, 24),
-
- /* name of the file keeping your private SSL-certificate */
- CINIT(SSLCERT, STRINGPOINT, 25),
-
- /* password for the SSL or SSH private key */
- CINIT(KEYPASSWD, STRINGPOINT, 26),
-
- /* send TYPE parameter? */
- CINIT(CRLF, LONG, 27),
-
- /* send linked-list of QUOTE commands */
- CINIT(QUOTE, OBJECTPOINT, 28),
-
- /* send FILE * or void * to store headers to, if you use a callback it
- is simply passed to the callback unmodified */
- CINIT(HEADERDATA, OBJECTPOINT, 29),
-
- /* point to a file to read the initial cookies from, also enables
- "cookie awareness" */
- CINIT(COOKIEFILE, STRINGPOINT, 31),
-
- /* What version to specifically try to use.
- See CURL_SSLVERSION defines below. */
- CINIT(SSLVERSION, LONG, 32),
-
- /* What kind of HTTP time condition to use, see defines */
- CINIT(TIMECONDITION, LONG, 33),
-
- /* Time to use with the above condition. Specified in number of seconds
- since 1 Jan 1970 */
- CINIT(TIMEVALUE, LONG, 34),
-
- /* 35 = OBSOLETE */
-
- /* Custom request, for customizing the get command like
- HTTP: DELETE, TRACE and others
- FTP: to use a different list command
- */
- CINIT(CUSTOMREQUEST, STRINGPOINT, 36),
-
- /* FILE handle to use instead of stderr */
- CINIT(STDERR, OBJECTPOINT, 37),
-
- /* 38 is not used */
-
- /* send linked-list of post-transfer QUOTE commands */
- CINIT(POSTQUOTE, OBJECTPOINT, 39),
-
- CINIT(OBSOLETE40, OBJECTPOINT, 40), /* OBSOLETE, do not use! */
-
- CINIT(VERBOSE, LONG, 41), /* talk a lot */
- CINIT(HEADER, LONG, 42), /* throw the header out too */
- CINIT(NOPROGRESS, LONG, 43), /* shut off the progress meter */
- CINIT(NOBODY, LONG, 44), /* use HEAD to get http document */
- CINIT(FAILONERROR, LONG, 45), /* no output on http error codes >= 400 */
- CINIT(UPLOAD, LONG, 46), /* this is an upload */
- CINIT(POST, LONG, 47), /* HTTP POST method */
- CINIT(DIRLISTONLY, LONG, 48), /* bare names when listing directories */
-
- CINIT(APPEND, LONG, 50), /* Append instead of overwrite on upload! */
-
- /* Specify whether to read the user+password from the .netrc or the URL.
- * This must be one of the CURL_NETRC_* enums below. */
- CINIT(NETRC, LONG, 51),
-
- CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */
-
- CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */
- CINIT(PUT, LONG, 54), /* HTTP PUT */
-
- /* 55 = OBSOLETE */
-
- /* DEPRECATED
- * Function that will be called instead of the internal progress display
- * function. This function should be defined as the curl_progress_callback
- * prototype defines. */
- CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56),
-
- /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION
- callbacks */
- CINIT(PROGRESSDATA, OBJECTPOINT, 57),
-#define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA
-
- /* We want the referrer field set automatically when following locations */
- CINIT(AUTOREFERER, LONG, 58),
-
- /* Port of the proxy, can be set in the proxy string as well with:
- "[host]:[port]" */
- CINIT(PROXYPORT, LONG, 59),
-
- /* size of the POST input data, if strlen() is not good to use */
- CINIT(POSTFIELDSIZE, LONG, 60),
-
- /* tunnel non-http operations through a HTTP proxy */
- CINIT(HTTPPROXYTUNNEL, LONG, 61),
-
- /* Set the interface string to use as outgoing network interface */
- CINIT(INTERFACE, STRINGPOINT, 62),
-
- /* Set the krb4/5 security level, this also enables krb4/5 awareness. This
- * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string
- * is set but doesn't match one of these, 'private' will be used. */
- CINIT(KRBLEVEL, STRINGPOINT, 63),
-
- /* Set if we should verify the peer in ssl handshake, set 1 to verify. */
- CINIT(SSL_VERIFYPEER, LONG, 64),
-
- /* The CApath or CAfile used to validate the peer certificate
- this option is used only if SSL_VERIFYPEER is true */
- CINIT(CAINFO, STRINGPOINT, 65),
-
- /* 66 = OBSOLETE */
- /* 67 = OBSOLETE */
-
- /* Maximum number of http redirects to follow */
- CINIT(MAXREDIRS, LONG, 68),
-
- /* Pass a long set to 1 to get the date of the requested document (if
- possible)! Pass a zero to shut it off. */
- CINIT(FILETIME, LONG, 69),
-
- /* This points to a linked list of telnet options */
- CINIT(TELNETOPTIONS, OBJECTPOINT, 70),
-
- /* Max amount of cached alive connections */
- CINIT(MAXCONNECTS, LONG, 71),
-
- CINIT(OBSOLETE72, LONG, 72), /* OBSOLETE, do not use! */
-
- /* 73 = OBSOLETE */
-
- /* Set to explicitly use a new connection for the upcoming transfer.
- Do not use this unless you're absolutely sure of this, as it makes the
- operation slower and is less friendly for the network. */
- CINIT(FRESH_CONNECT, LONG, 74),
-
- /* Set to explicitly forbid the upcoming transfer's connection to be re-used
- when done. Do not use this unless you're absolutely sure of this, as it
- makes the operation slower and is less friendly for the network. */
- CINIT(FORBID_REUSE, LONG, 75),
-
- /* Set to a file name that contains random data for libcurl to use to
- seed the random engine when doing SSL connects. */
- CINIT(RANDOM_FILE, STRINGPOINT, 76),
-
- /* Set to the Entropy Gathering Daemon socket pathname */
- CINIT(EGDSOCKET, STRINGPOINT, 77),
-
- /* Time-out connect operations after this amount of seconds, if connects are
- OK within this time, then fine... This only aborts the connect phase. */
- CINIT(CONNECTTIMEOUT, LONG, 78),
-
- /* Function that will be called to store headers (instead of fwrite). The
- * parameters will use fwrite() syntax, make sure to follow them. */
- CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79),
-
- /* Set this to force the HTTP request to get back to GET. Only really usable
- if POST, PUT or a custom request have been used first.
- */
- CINIT(HTTPGET, LONG, 80),
-
- /* Set if we should verify the Common name from the peer certificate in ssl
- * handshake, set 1 to check existence, 2 to ensure that it matches the
- * provided hostname. */
- CINIT(SSL_VERIFYHOST, LONG, 81),
-
- /* Specify which file name to write all known cookies in after completed
- operation. Set file name to "-" (dash) to make it go to stdout. */
- CINIT(COOKIEJAR, STRINGPOINT, 82),
-
- /* Specify which SSL ciphers to use */
- CINIT(SSL_CIPHER_LIST, STRINGPOINT, 83),
-
- /* Specify which HTTP version to use! This must be set to one of the
- CURL_HTTP_VERSION* enums set below. */
- CINIT(HTTP_VERSION, LONG, 84),
-
- /* Specifically switch on or off the FTP engine's use of the EPSV command. By
- default, that one will always be attempted before the more traditional
- PASV command. */
- CINIT(FTP_USE_EPSV, LONG, 85),
-
- /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */
- CINIT(SSLCERTTYPE, STRINGPOINT, 86),
-
- /* name of the file keeping your private SSL-key */
- CINIT(SSLKEY, STRINGPOINT, 87),
-
- /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */
- CINIT(SSLKEYTYPE, STRINGPOINT, 88),
-
- /* crypto engine for the SSL-sub system */
- CINIT(SSLENGINE, STRINGPOINT, 89),
-
- /* set the crypto engine for the SSL-sub system as default
- the param has no meaning...
- */
- CINIT(SSLENGINE_DEFAULT, LONG, 90),
-
- /* Non-zero value means to use the global dns cache */
- CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* DEPRECATED, do not use! */
-
- /* DNS cache timeout */
- CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
-
- /* send linked-list of pre-transfer QUOTE commands */
- CINIT(PREQUOTE, OBJECTPOINT, 93),
-
- /* set the debug function */
- CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),
-
- /* set the data for the debug function */
- CINIT(DEBUGDATA, OBJECTPOINT, 95),
-
- /* mark this as start of a cookie session */
- CINIT(COOKIESESSION, LONG, 96),
-
- /* The CApath directory used to validate the peer certificate
- this option is used only if SSL_VERIFYPEER is true */
- CINIT(CAPATH, STRINGPOINT, 97),
-
- /* Instruct libcurl to use a smaller receive buffer */
- CINIT(BUFFERSIZE, LONG, 98),
-
- /* Instruct libcurl to not use any signal/alarm handlers, even when using
- timeouts. This option is useful for multi-threaded applications.
- See libcurl-the-guide for more background information. */
- CINIT(NOSIGNAL, LONG, 99),
-
- /* Provide a CURLShare for mutexing non-ts data */
- CINIT(SHARE, OBJECTPOINT, 100),
-
- /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),
- CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and
- CURLPROXY_SOCKS5. */
- CINIT(PROXYTYPE, LONG, 101),
-
- /* Set the Accept-Encoding string. Use this to tell a server you would like
- the response to be compressed. Before 7.21.6, this was known as
- CURLOPT_ENCODING */
- CINIT(ACCEPT_ENCODING, STRINGPOINT, 102),
-
- /* Set pointer to private data */
- CINIT(PRIVATE, OBJECTPOINT, 103),
-
- /* Set aliases for HTTP 200 in the HTTP Response header */
- CINIT(HTTP200ALIASES, OBJECTPOINT, 104),
-
- /* Continue to send authentication (user+password) when following locations,
- even when hostname changed. This can potentially send off the name
- and password to whatever host the server decides. */
- CINIT(UNRESTRICTED_AUTH, LONG, 105),
-
- /* Specifically switch on or off the FTP engine's use of the EPRT command (
- it also disables the LPRT attempt). By default, those ones will always be
- attempted before the good old traditional PORT command. */
- CINIT(FTP_USE_EPRT, LONG, 106),
-
- /* Set this to a bitmask value to enable the particular authentications
- methods you like. Use this in combination with CURLOPT_USERPWD.
- Note that setting multiple bits may cause extra network round-trips. */
- CINIT(HTTPAUTH, LONG, 107),
-
- /* Set the ssl context callback function, currently only for OpenSSL or
- WolfSSL ssl_ctx, or mbedTLS mbedtls_ssl_config in the second argument.
- The function must match the curl_ssl_ctx_callback prototype. */
- CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108),
-
- /* Set the userdata for the ssl context callback function's third
- argument */
- CINIT(SSL_CTX_DATA, OBJECTPOINT, 109),
-
- /* FTP Option that causes missing dirs to be created on the remote server.
- In 7.19.4 we introduced the convenience enums for this option using the
- CURLFTP_CREATE_DIR prefix.
- */
- CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110),
-
- /* Set this to a bitmask value to enable the particular authentications
- methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
- Note that setting multiple bits may cause extra network round-trips. */
- CINIT(PROXYAUTH, LONG, 111),
-
- /* FTP option that changes the timeout, in seconds, associated with
- getting a response. This is different from transfer timeout time and
- essentially places a demand on the FTP server to acknowledge commands
- in a timely manner. */
- CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),
-#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
-
- /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
- tell libcurl to resolve names to those IP versions only. This only has
- affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */
- CINIT(IPRESOLVE, LONG, 113),
-
- /* Set this option to limit the size of a file that will be downloaded from
- an HTTP or FTP server.
-
- Note there is also _LARGE version which adds large file support for
- platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */
- CINIT(MAXFILESIZE, LONG, 114),
-
- /* See the comment for INFILESIZE above, but in short, specifies
- * the size of the file being uploaded. -1 means unknown.
- */
- CINIT(INFILESIZE_LARGE, OFF_T, 115),
-
- /* Sets the continuation offset. There is also a LONG version of this;
- * look above for RESUME_FROM.
- */
- CINIT(RESUME_FROM_LARGE, OFF_T, 116),
-
- /* Sets the maximum size of data that will be downloaded from
- * an HTTP or FTP server. See MAXFILESIZE above for the LONG version.
- */
- CINIT(MAXFILESIZE_LARGE, OFF_T, 117),
-
- /* Set this option to the file name of your .netrc file you want libcurl
- to parse (using the CURLOPT_NETRC option). If not set, libcurl will do
- a poor attempt to find the user's home directory and check for a .netrc
- file in there. */
- CINIT(NETRC_FILE, STRINGPOINT, 118),
-
- /* Enable SSL/TLS for FTP, pick one of:
- CURLUSESSL_TRY - try using SSL, proceed anyway otherwise
- CURLUSESSL_CONTROL - SSL for the control connection or fail
- CURLUSESSL_ALL - SSL for all communication or fail
- */
- CINIT(USE_SSL, LONG, 119),
-
- /* The _LARGE version of the standard POSTFIELDSIZE option */
- CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120),
-
- /* Enable/disable the TCP Nagle algorithm */
- CINIT(TCP_NODELAY, LONG, 121),
-
- /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 123 OBSOLETE. Gone in 7.16.0 */
- /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
- /* 127 OBSOLETE. Gone in 7.16.0 */
- /* 128 OBSOLETE. Gone in 7.16.0 */
-
- /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option
- can be used to change libcurl's default action which is to first try
- "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK
- response has been received.
-
- Available parameters are:
- CURLFTPAUTH_DEFAULT - let libcurl decide
- CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS
- CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL
- */
- CINIT(FTPSSLAUTH, LONG, 129),
-
- CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130),
- CINIT(IOCTLDATA, OBJECTPOINT, 131),
-
- /* 132 OBSOLETE. Gone in 7.16.0 */
- /* 133 OBSOLETE. Gone in 7.16.0 */
-
- /* zero terminated string for pass on to the FTP server when asked for
- "account" info */
- CINIT(FTP_ACCOUNT, STRINGPOINT, 134),
-
- /* feed cookie into cookie engine */
- CINIT(COOKIELIST, STRINGPOINT, 135),
-
- /* ignore Content-Length */
- CINIT(IGNORE_CONTENT_LENGTH, LONG, 136),
-
- /* Set to non-zero to skip the IP address received in a 227 PASV FTP server
- response. Typically used for FTP-SSL purposes but is not restricted to
- that. libcurl will then instead use the same IP address it used for the
- control connection. */
- CINIT(FTP_SKIP_PASV_IP, LONG, 137),
-
- /* Select "file method" to use when doing FTP, see the curl_ftpmethod
- above. */
- CINIT(FTP_FILEMETHOD, LONG, 138),
-
- /* Local port number to bind the socket to */
- CINIT(LOCALPORT, LONG, 139),
-
- /* Number of ports to try, including the first one set with LOCALPORT.
- Thus, setting it to 1 will make no additional attempts but the first.
- */
- CINIT(LOCALPORTRANGE, LONG, 140),
-
- /* no transfer, set up connection and let application use the socket by
- extracting it with CURLINFO_LASTSOCKET */
- CINIT(CONNECT_ONLY, LONG, 141),
-
- /* Function that will be called to convert from the
- network encoding (instead of using the iconv calls in libcurl) */
- CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142),
-
- /* Function that will be called to convert to the
- network encoding (instead of using the iconv calls in libcurl) */
- CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143),
-
- /* Function that will be called to convert from UTF8
- (instead of using the iconv calls in libcurl)
- Note that this is used only for SSL certificate processing */
- CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144),
-
- /* if the connection proceeds too quickly then need to slow it down */
- /* limit-rate: maximum number of bytes per second to send or receive */
- CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145),
- CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146),
-
- /* Pointer to command string to send if USER/PASS fails. */
- CINIT(FTP_ALTERNATIVE_TO_USER, STRINGPOINT, 147),
-
- /* callback function for setting socket options */
- CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148),
- CINIT(SOCKOPTDATA, OBJECTPOINT, 149),
-
- /* set to 0 to disable session ID re-use for this transfer, default is
- enabled (== 1) */
- CINIT(SSL_SESSIONID_CACHE, LONG, 150),
-
- /* allowed SSH authentication methods */
- CINIT(SSH_AUTH_TYPES, LONG, 151),
-
- /* Used by scp/sftp to do public/private key authentication */
- CINIT(SSH_PUBLIC_KEYFILE, STRINGPOINT, 152),
- CINIT(SSH_PRIVATE_KEYFILE, STRINGPOINT, 153),
-
- /* Send CCC (Clear Command Channel) after authentication */
- CINIT(FTP_SSL_CCC, LONG, 154),
-
- /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */
- CINIT(TIMEOUT_MS, LONG, 155),
- CINIT(CONNECTTIMEOUT_MS, LONG, 156),
-
- /* set to zero to disable the libcurl's decoding and thus pass the raw body
- data to the application even when it is encoded/compressed */
- CINIT(HTTP_TRANSFER_DECODING, LONG, 157),
- CINIT(HTTP_CONTENT_DECODING, LONG, 158),
-
- /* Permission used when creating new files and directories on the remote
- server for protocols that support it, SFTP/SCP/FILE */
- CINIT(NEW_FILE_PERMS, LONG, 159),
- CINIT(NEW_DIRECTORY_PERMS, LONG, 160),
-
- /* Set the behaviour of POST when redirecting. Values must be set to one
- of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */
- CINIT(POSTREDIR, LONG, 161),
-
- /* used by scp/sftp to verify the host's public key */
- CINIT(SSH_HOST_PUBLIC_KEY_MD5, STRINGPOINT, 162),
-
- /* Callback function for opening socket (instead of socket(2)). Optionally,
- callback is able change the address or refuse to connect returning
- CURL_SOCKET_BAD. The callback should have type
- curl_opensocket_callback */
- CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163),
- CINIT(OPENSOCKETDATA, OBJECTPOINT, 164),
-
- /* POST volatile input fields. */
- CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165),
-
- /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */
- CINIT(PROXY_TRANSFER_MODE, LONG, 166),
-
- /* Callback function for seeking in the input stream */
- CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
- CINIT(SEEKDATA, OBJECTPOINT, 168),
-
- /* CRL file */
- CINIT(CRLFILE, STRINGPOINT, 169),
-
- /* Issuer certificate */
- CINIT(ISSUERCERT, STRINGPOINT, 170),
-
- /* (IPv6) Address scope */
- CINIT(ADDRESS_SCOPE, LONG, 171),
-
- /* Collect certificate chain info and allow it to get retrievable with
- CURLINFO_CERTINFO after the transfer is complete. */
- CINIT(CERTINFO, LONG, 172),
-
- /* "name" and "pwd" to use when fetching. */
- CINIT(USERNAME, STRINGPOINT, 173),
- CINIT(PASSWORD, STRINGPOINT, 174),
-
- /* "name" and "pwd" to use with Proxy when fetching. */
- CINIT(PROXYUSERNAME, STRINGPOINT, 175),
- CINIT(PROXYPASSWORD, STRINGPOINT, 176),
-
- /* Comma separated list of hostnames defining no-proxy zones. These should
- match both hostnames directly, and hostnames within a domain. For
- example, local.com will match local.com and www.local.com, but NOT
- notlocal.com or www.notlocal.com. For compatibility with other
- implementations of this, .local.com will be considered to be the same as
- local.com. A single * is the only valid wildcard, and effectively
- disables the use of proxy. */
- CINIT(NOPROXY, STRINGPOINT, 177),
-
- /* block size for TFTP transfers */
- CINIT(TFTP_BLKSIZE, LONG, 178),
-
- /* Socks Service */
- CINIT(SOCKS5_GSSAPI_SERVICE, STRINGPOINT, 179), /* DEPRECATED, do not use! */
-
- /* Socks Service */
- CINIT(SOCKS5_GSSAPI_NEC, LONG, 180),
-
- /* set the bitmask for the protocols that are allowed to be used for the
- transfer, which thus helps the app which takes URLs from users or other
- external inputs and want to restrict what protocol(s) to deal
- with. Defaults to CURLPROTO_ALL. */
- CINIT(PROTOCOLS, LONG, 181),
-
- /* set the bitmask for the protocols that libcurl is allowed to follow to,
- as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
- to be set in both bitmasks to be allowed to get redirected to. Defaults
- to all protocols except FILE and SCP. */
- CINIT(REDIR_PROTOCOLS, LONG, 182),
-
- /* set the SSH knownhost file name to use */
- CINIT(SSH_KNOWNHOSTS, STRINGPOINT, 183),
-
- /* set the SSH host key callback, must point to a curl_sshkeycallback
- function */
- CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184),
-
- /* set the SSH host key callback custom pointer */
- CINIT(SSH_KEYDATA, OBJECTPOINT, 185),
-
- /* set the SMTP mail originator */
- CINIT(MAIL_FROM, STRINGPOINT, 186),
-
- /* set the list of SMTP mail receiver(s) */
- CINIT(MAIL_RCPT, OBJECTPOINT, 187),
-
- /* FTP: send PRET before PASV */
- CINIT(FTP_USE_PRET, LONG, 188),
-
- /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */
- CINIT(RTSP_REQUEST, LONG, 189),
-
- /* The RTSP session identifier */
- CINIT(RTSP_SESSION_ID, STRINGPOINT, 190),
-
- /* The RTSP stream URI */
- CINIT(RTSP_STREAM_URI, STRINGPOINT, 191),
-
- /* The Transport: header to use in RTSP requests */
- CINIT(RTSP_TRANSPORT, STRINGPOINT, 192),
-
- /* Manually initialize the client RTSP CSeq for this handle */
- CINIT(RTSP_CLIENT_CSEQ, LONG, 193),
-
- /* Manually initialize the server RTSP CSeq for this handle */
- CINIT(RTSP_SERVER_CSEQ, LONG, 194),
-
- /* The stream to pass to INTERLEAVEFUNCTION. */
- CINIT(INTERLEAVEDATA, OBJECTPOINT, 195),
-
- /* Let the application define a custom write method for RTP data */
- CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196),
-
- /* Turn on wildcard matching */
- CINIT(WILDCARDMATCH, LONG, 197),
-
- /* Directory matching callback called before downloading of an
- individual file (chunk) started */
- CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198),
-
- /* Directory matching callback called after the file (chunk)
- was downloaded, or skipped */
- CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199),
-
- /* Change match (fnmatch-like) callback for wildcard matching */
- CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200),
-
- /* Let the application define custom chunk data pointer */
- CINIT(CHUNK_DATA, OBJECTPOINT, 201),
-
- /* FNMATCH_FUNCTION user pointer */
- CINIT(FNMATCH_DATA, OBJECTPOINT, 202),
-
- /* send linked-list of name:port:address sets */
- CINIT(RESOLVE, OBJECTPOINT, 203),
-
- /* Set a username for authenticated TLS */
- CINIT(TLSAUTH_USERNAME, STRINGPOINT, 204),
-
- /* Set a password for authenticated TLS */
- CINIT(TLSAUTH_PASSWORD, STRINGPOINT, 205),
-
- /* Set authentication type for authenticated TLS */
- CINIT(TLSAUTH_TYPE, STRINGPOINT, 206),
-
- /* Set to 1 to enable the "TE:" header in HTTP requests to ask for
- compressed transfer-encoded responses. Set to 0 to disable the use of TE:
- in outgoing requests. The current default is 0, but it might change in a
- future libcurl release.
-
- libcurl will ask for the compressed methods it knows of, and if that
- isn't any, it will not ask for transfer-encoding at all even if this
- option is set to 1.
-
- */
- CINIT(TRANSFER_ENCODING, LONG, 207),
-
- /* Callback function for closing socket (instead of close(2)). The callback
- should have type curl_closesocket_callback */
- CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208),
- CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209),
-
- /* allow GSSAPI credential delegation */
- CINIT(GSSAPI_DELEGATION, LONG, 210),
-
- /* Set the name servers to use for DNS resolution */
- CINIT(DNS_SERVERS, STRINGPOINT, 211),
-
- /* Time-out accept operations (currently for FTP only) after this amount
- of milliseconds. */
- CINIT(ACCEPTTIMEOUT_MS, LONG, 212),
-
- /* Set TCP keepalive */
- CINIT(TCP_KEEPALIVE, LONG, 213),
-
- /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */
- CINIT(TCP_KEEPIDLE, LONG, 214),
- CINIT(TCP_KEEPINTVL, LONG, 215),
-
- /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */
- CINIT(SSL_OPTIONS, LONG, 216),
-
- /* Set the SMTP auth originator */
- CINIT(MAIL_AUTH, STRINGPOINT, 217),
-
- /* Enable/disable SASL initial response */
- CINIT(SASL_IR, LONG, 218),
-
- /* Function that will be called instead of the internal progress display
- * function. This function should be defined as the curl_xferinfo_callback
- * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
- CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
-
- /* The XOAUTH2 bearer token */
- CINIT(XOAUTH2_BEARER, STRINGPOINT, 220),
-
- /* Set the interface string to use as outgoing network
- * interface for DNS requests.
- * Only supported by the c-ares DNS backend */
- CINIT(DNS_INTERFACE, STRINGPOINT, 221),
-
- /* Set the local IPv4 address to use for outgoing DNS requests.
- * Only supported by the c-ares DNS backend */
- CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222),
-
- /* Set the local IPv6 address to use for outgoing DNS requests.
- * Only supported by the c-ares DNS backend */
- CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223),
-
- /* Set authentication options directly */
- CINIT(LOGIN_OPTIONS, STRINGPOINT, 224),
-
- /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */
- CINIT(SSL_ENABLE_NPN, LONG, 225),
-
- /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */
- CINIT(SSL_ENABLE_ALPN, LONG, 226),
-
- /* Time to wait for a response to a HTTP request containing an
- * Expect: 100-continue header before sending the data anyway. */
- CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227),
-
- /* This points to a linked list of headers used for proxy requests only,
- struct curl_slist kind */
- CINIT(PROXYHEADER, OBJECTPOINT, 228),
-
- /* Pass in a bitmask of "header options" */
- CINIT(HEADEROPT, LONG, 229),
-
- /* The public key in DER form used to validate the peer public key
- this option is used only if SSL_VERIFYPEER is true */
- CINIT(PINNEDPUBLICKEY, STRINGPOINT, 230),
-
- /* Path to Unix domain socket */
- CINIT(UNIX_SOCKET_PATH, STRINGPOINT, 231),
-
- /* Set if we should verify the certificate status. */
- CINIT(SSL_VERIFYSTATUS, LONG, 232),
-
- /* Set if we should enable TLS false start. */
- CINIT(SSL_FALSESTART, LONG, 233),
-
- /* Do not squash dot-dot sequences */
- CINIT(PATH_AS_IS, LONG, 234),
-
- /* Proxy Service Name */
- CINIT(PROXY_SERVICE_NAME, STRINGPOINT, 235),
-
- /* Service Name */
- CINIT(SERVICE_NAME, STRINGPOINT, 236),
-
- /* Wait/don't wait for pipe/mutex to clarify */
- CINIT(PIPEWAIT, LONG, 237),
-
- /* Set the protocol used when curl is given a URL without a protocol */
- CINIT(DEFAULT_PROTOCOL, STRINGPOINT, 238),
-
- /* Set stream weight, 1 - 256 (default is 16) */
- CINIT(STREAM_WEIGHT, LONG, 239),
-
- /* Set stream dependency on another CURL handle */
- CINIT(STREAM_DEPENDS, OBJECTPOINT, 240),
-
- /* Set E-xclusive stream dependency on another CURL handle */
- CINIT(STREAM_DEPENDS_E, OBJECTPOINT, 241),
-
- /* Do not send any tftp option requests to the server */
- CINIT(TFTP_NO_OPTIONS, LONG, 242),
-
- /* Linked-list of host:port:connect-to-host:connect-to-port,
- overrides the URL's host:port (only for the network layer) */
- CINIT(CONNECT_TO, OBJECTPOINT, 243),
-
- /* Set TCP Fast Open */
- CINIT(TCP_FASTOPEN, LONG, 244),
-
- /* Continue to send data if the server responds early with an
- * HTTP status code >= 300 */
- CINIT(KEEP_SENDING_ON_ERROR, LONG, 245),
-
- /* The CApath or CAfile used to validate the proxy certificate
- this option is used only if PROXY_SSL_VERIFYPEER is true */
- CINIT(PROXY_CAINFO, STRINGPOINT, 246),
-
- /* The CApath directory used to validate the proxy certificate
- this option is used only if PROXY_SSL_VERIFYPEER is true */
- CINIT(PROXY_CAPATH, STRINGPOINT, 247),
-
- /* Set if we should verify the proxy in ssl handshake,
- set 1 to verify. */
- CINIT(PROXY_SSL_VERIFYPEER, LONG, 248),
-
- /* Set if we should verify the Common name from the proxy certificate in ssl
- * handshake, set 1 to check existence, 2 to ensure that it matches
- * the provided hostname. */
- CINIT(PROXY_SSL_VERIFYHOST, LONG, 249),
-
- /* What version to specifically try to use for proxy.
- See CURL_SSLVERSION defines below. */
- CINIT(PROXY_SSLVERSION, LONG, 250),
-
- /* Set a username for authenticated TLS for proxy */
- CINIT(PROXY_TLSAUTH_USERNAME, STRINGPOINT, 251),
-
- /* Set a password for authenticated TLS for proxy */
- CINIT(PROXY_TLSAUTH_PASSWORD, STRINGPOINT, 252),
-
- /* Set authentication type for authenticated TLS for proxy */
- CINIT(PROXY_TLSAUTH_TYPE, STRINGPOINT, 253),
-
- /* name of the file keeping your private SSL-certificate for proxy */
- CINIT(PROXY_SSLCERT, STRINGPOINT, 254),
-
- /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") for
- proxy */
- CINIT(PROXY_SSLCERTTYPE, STRINGPOINT, 255),
-
- /* name of the file keeping your private SSL-key for proxy */
- CINIT(PROXY_SSLKEY, STRINGPOINT, 256),
-
- /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") for
- proxy */
- CINIT(PROXY_SSLKEYTYPE, STRINGPOINT, 257),
-
- /* password for the SSL private key for proxy */
- CINIT(PROXY_KEYPASSWD, STRINGPOINT, 258),
-
- /* Specify which SSL ciphers to use for proxy */
- CINIT(PROXY_SSL_CIPHER_LIST, STRINGPOINT, 259),
-
- /* CRL file for proxy */
- CINIT(PROXY_CRLFILE, STRINGPOINT, 260),
-
- /* Enable/disable specific SSL features with a bitmask for proxy, see
- CURLSSLOPT_* */
- CINIT(PROXY_SSL_OPTIONS, LONG, 261),
-
- /* Name of pre proxy to use. */
- CINIT(PRE_PROXY, STRINGPOINT, 262),
-
- /* The public key in DER form used to validate the proxy public key
- this option is used only if PROXY_SSL_VERIFYPEER is true */
- CINIT(PROXY_PINNEDPUBLICKEY, STRINGPOINT, 263),
-
- /* Path to an abstract Unix domain socket */
- CINIT(ABSTRACT_UNIX_SOCKET, STRINGPOINT, 264),
-
- /* Suppress proxy CONNECT response headers from user callbacks */
- CINIT(SUPPRESS_CONNECT_HEADERS, LONG, 265),
-
- /* The request target, instead of extracted from the URL */
- CINIT(REQUEST_TARGET, STRINGPOINT, 266),
-
- /* bitmask of allowed auth methods for connections to SOCKS5 proxies */
- CINIT(SOCKS5_AUTH, LONG, 267),
-
- /* Enable/disable SSH compression */
- CINIT(SSH_COMPRESSION, LONG, 268),
-
- /* Post MIME data. */
- CINIT(MIMEPOST, OBJECTPOINT, 269),
-
- /* Time to use with the CURLOPT_TIMECONDITION. Specified in number of
- seconds since 1 Jan 1970. */
- CINIT(TIMEVALUE_LARGE, OFF_T, 270),
-
- /* Head start in milliseconds to give happy eyeballs. */
- CINIT(HAPPY_EYEBALLS_TIMEOUT_MS, LONG, 271),
-
- /* Function that will be called before a resolver request is made */
- CINIT(RESOLVER_START_FUNCTION, FUNCTIONPOINT, 272),
-
- /* User data to pass to the resolver start callback. */
- CINIT(RESOLVER_START_DATA, OBJECTPOINT, 273),
-
- /* send HAProxy PROXY protocol header? */
- CINIT(HAPROXYPROTOCOL, LONG, 274),
-
- /* shuffle addresses before use when DNS returns multiple */
- CINIT(DNS_SHUFFLE_ADDRESSES, LONG, 275),
-
- /* Specify which TLS 1.3 ciphers suites to use */
- CINIT(TLS13_CIPHERS, STRINGPOINT, 276),
- CINIT(PROXY_TLS13_CIPHERS, STRINGPOINT, 277),
-
- /* Disallow specifying username/login in URL. */
- CINIT(DISALLOW_USERNAME_IN_URL, LONG, 278),
-
- /* DNS-over-HTTPS URL */
- CINIT(DOH_URL, STRINGPOINT, 279),
-
- /* Preferred buffer size to use for uploads */
- CINIT(UPLOAD_BUFFERSIZE, LONG, 280),
-
- /* Time in ms between connection upkeep calls for long-lived connections. */
- CINIT(UPKEEP_INTERVAL_MS, LONG, 281),
-
- /* Specify URL using CURL URL API. */
- CINIT(CURLU, OBJECTPOINT, 282),
-
- /* add trailing data just after no more data is available */
- CINIT(TRAILERFUNCTION, FUNCTIONPOINT, 283),
-
- /* pointer to be passed to HTTP_TRAILER_FUNCTION */
- CINIT(TRAILERDATA, OBJECTPOINT, 284),
-
- /* set this to 1L to allow HTTP/0.9 responses or 0L to disallow */
- CINIT(HTTP09_ALLOWED, LONG, 285),
-
- /* alt-svc control bitmask */
- CINIT(ALTSVC_CTRL, LONG, 286),
-
- /* alt-svc cache file name to possibly read from/write to */
- CINIT(ALTSVC, STRINGPOINT, 287),
-
- /* maximum age of a connection to consider it for reuse (in seconds) */
- CINIT(MAXAGE_CONN, LONG, 288),
-
- CURLOPT_LASTENTRY /* the last unused */
-} CURLoption;
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
- the obsolete stuff removed! */
-
-/* Backwards compatibility with older names */
-/* These are scheduled to disappear by 2011 */
-
-/* This was added in version 7.19.1 */
-#define CURLOPT_POST301 CURLOPT_POSTREDIR
-
-/* These are scheduled to disappear by 2009 */
-
-/* The following were added in 7.17.0 */
-#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD
-#define CURLOPT_FTPAPPEND CURLOPT_APPEND
-#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY
-#define CURLOPT_FTP_SSL CURLOPT_USE_SSL
-
-/* The following were added earlier */
-
-#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
-#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
-
-#else
-/* This is set if CURL_NO_OLDIES is defined at compile-time */
-#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
-#endif
-
-
- /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
- name resolves addresses using more than one IP protocol version, this
- option might be handy to force libcurl to use a specific IP version. */
-#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP
- versions that your system allows */
-#define CURL_IPRESOLVE_V4 1 /* resolve to IPv4 addresses */
-#define CURL_IPRESOLVE_V6 2 /* resolve to IPv6 addresses */
-
- /* three convenient "aliases" that follow the name scheme better */
-#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
-
- /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
-enum {
- CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
- like the library to choose the best possible
- for us! */
- CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */
- CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */
- CURL_HTTP_VERSION_2_0, /* please use HTTP 2 in the request */
- CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */
- CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, /* please use HTTP 2 without HTTP/1.1
- Upgrade */
-
- CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
-};
-
-/* Convenience definition simple because the name of the version is HTTP/2 and
- not 2.0. The 2_0 version of the enum name was set while the version was
- still planned to be 2.0 and we stick to it for compatibility. */
-#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
-
-/*
- * Public API enums for RTSP requests
- */
-enum {
- CURL_RTSPREQ_NONE, /* first in list */
- CURL_RTSPREQ_OPTIONS,
- CURL_RTSPREQ_DESCRIBE,
- CURL_RTSPREQ_ANNOUNCE,
- CURL_RTSPREQ_SETUP,
- CURL_RTSPREQ_PLAY,
- CURL_RTSPREQ_PAUSE,
- CURL_RTSPREQ_TEARDOWN,
- CURL_RTSPREQ_GET_PARAMETER,
- CURL_RTSPREQ_SET_PARAMETER,
- CURL_RTSPREQ_RECORD,
- CURL_RTSPREQ_RECEIVE,
- CURL_RTSPREQ_LAST /* last in list */
-};
-
- /* These enums are for use with the CURLOPT_NETRC option. */
-enum CURL_NETRC_OPTION {
- CURL_NETRC_IGNORED, /* The .netrc will never be read.
- * This is the default. */
- CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred
- * to one in the .netrc. */
- CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored.
- * Unless one is set programmatically, the .netrc
- * will be queried. */
- CURL_NETRC_LAST
-};
-
-enum {
- CURL_SSLVERSION_DEFAULT,
- CURL_SSLVERSION_TLSv1, /* TLS 1.x */
- CURL_SSLVERSION_SSLv2,
- CURL_SSLVERSION_SSLv3,
- CURL_SSLVERSION_TLSv1_0,
- CURL_SSLVERSION_TLSv1_1,
- CURL_SSLVERSION_TLSv1_2,
- CURL_SSLVERSION_TLSv1_3,
-
- CURL_SSLVERSION_LAST /* never use, keep last */
-};
-
-enum {
- CURL_SSLVERSION_MAX_NONE = 0,
- CURL_SSLVERSION_MAX_DEFAULT = (CURL_SSLVERSION_TLSv1 << 16),
- CURL_SSLVERSION_MAX_TLSv1_0 = (CURL_SSLVERSION_TLSv1_0 << 16),
- CURL_SSLVERSION_MAX_TLSv1_1 = (CURL_SSLVERSION_TLSv1_1 << 16),
- CURL_SSLVERSION_MAX_TLSv1_2 = (CURL_SSLVERSION_TLSv1_2 << 16),
- CURL_SSLVERSION_MAX_TLSv1_3 = (CURL_SSLVERSION_TLSv1_3 << 16),
-
- /* never use, keep last */
- CURL_SSLVERSION_MAX_LAST = (CURL_SSLVERSION_LAST << 16)
-};
-
-enum CURL_TLSAUTH {
- CURL_TLSAUTH_NONE,
- CURL_TLSAUTH_SRP,
- CURL_TLSAUTH_LAST /* never use, keep last */
-};
-
-/* symbols to use with CURLOPT_POSTREDIR.
- CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303
- can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302
- | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */
-
-#define CURL_REDIR_GET_ALL 0
-#define CURL_REDIR_POST_301 1
-#define CURL_REDIR_POST_302 2
-#define CURL_REDIR_POST_303 4
-#define CURL_REDIR_POST_ALL \
- (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303)
-
-typedef enum {
- CURL_TIMECOND_NONE,
-
- CURL_TIMECOND_IFMODSINCE,
- CURL_TIMECOND_IFUNMODSINCE,
- CURL_TIMECOND_LASTMOD,
-
- CURL_TIMECOND_LAST
-} curl_TimeCond;
-
-/* Special size_t value signaling a zero-terminated string. */
-#define CURL_ZERO_TERMINATED ((size_t) -1)
-
-/* curl_strequal() and curl_strnequal() are subject for removal in a future
- release */
-CURL_EXTERN int curl_strequal(const char *s1, const char *s2);
-CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n);
-
-/* Mime/form handling support. */
-typedef struct curl_mime_s curl_mime; /* Mime context. */
-typedef struct curl_mimepart_s curl_mimepart; /* Mime part context. */
-
-/*
- * NAME curl_mime_init()
- *
- * DESCRIPTION
- *
- * Create a mime context and return its handle. The easy parameter is the
- * target handle.
- */
-CURL_EXTERN curl_mime *curl_mime_init(CURL *easy);
-
-/*
- * NAME curl_mime_free()
- *
- * DESCRIPTION
- *
- * release a mime handle and its substructures.
- */
-CURL_EXTERN void curl_mime_free(curl_mime *mime);
-
-/*
- * NAME curl_mime_addpart()
- *
- * DESCRIPTION
- *
- * Append a new empty part to the given mime context and return a handle to
- * the created part.
- */
-CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);
-
-/*
- * NAME curl_mime_name()
- *
- * DESCRIPTION
- *
- * Set mime/form part name.
- */
-CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name);
-
-/*
- * NAME curl_mime_filename()
- *
- * DESCRIPTION
- *
- * Set mime part remote file name.
- */
-CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,
- const char *filename);
-
-/*
- * NAME curl_mime_type()
- *
- * DESCRIPTION
- *
- * Set mime part type.
- */
-CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
-
-/*
- * NAME curl_mime_encoder()
- *
- * DESCRIPTION
- *
- * Set mime data transfer encoder.
- */
-CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part,
- const char *encoding);
-
-/*
- * NAME curl_mime_data()
- *
- * DESCRIPTION
- *
- * Set mime part data source from memory data,
- */
-CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,
- const char *data, size_t datasize);
-
-/*
- * NAME curl_mime_filedata()
- *
- * DESCRIPTION
- *
- * Set mime part data source from named file.
- */
-CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,
- const char *filename);
-
-/*
- * NAME curl_mime_data_cb()
- *
- * DESCRIPTION
- *
- * Set mime part data source from callback function.
- */
-CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,
- curl_off_t datasize,
- curl_read_callback readfunc,
- curl_seek_callback seekfunc,
- curl_free_callback freefunc,
- void *arg);
-
-/*
- * NAME curl_mime_subparts()
- *
- * DESCRIPTION
- *
- * Set mime part data source from subparts.
- */
-CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,
- curl_mime *subparts);
-/*
- * NAME curl_mime_headers()
- *
- * DESCRIPTION
- *
- * Set mime part headers.
- */
-CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,
- struct curl_slist *headers,
- int take_ownership);
-
-/* Old form API. */
-/* name is uppercase CURLFORM_<name> */
-#ifdef CFINIT
-#undef CFINIT
-#endif
-
-#ifdef CURL_ISOCPP
-#define CFINIT(name) CURLFORM_ ## name
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define CFINIT(name) CURLFORM_/**/name
-#endif
-
-typedef enum {
- CFINIT(NOTHING), /********* the first one is unused ************/
-
- /* */
- CFINIT(COPYNAME),
- CFINIT(PTRNAME),
- CFINIT(NAMELENGTH),
- CFINIT(COPYCONTENTS),
- CFINIT(PTRCONTENTS),
- CFINIT(CONTENTSLENGTH),
- CFINIT(FILECONTENT),
- CFINIT(ARRAY),
- CFINIT(OBSOLETE),
- CFINIT(FILE),
-
- CFINIT(BUFFER),
- CFINIT(BUFFERPTR),
- CFINIT(BUFFERLENGTH),
-
- CFINIT(CONTENTTYPE),
- CFINIT(CONTENTHEADER),
- CFINIT(FILENAME),
- CFINIT(END),
- CFINIT(OBSOLETE2),
-
- CFINIT(STREAM),
- CFINIT(CONTENTLEN), /* added in 7.46.0, provide a curl_off_t length */
-
- CURLFORM_LASTENTRY /* the last unused */
-} CURLformoption;
-
-#undef CFINIT /* done */
-
-/* structure to be used as parameter for CURLFORM_ARRAY */
-struct curl_forms {
- CURLformoption option;
- const char *value;
-};
-
-/* use this for multipart formpost building */
-/* Returns code for curl_formadd()
- *
- * Returns:
- * CURL_FORMADD_OK on success
- * CURL_FORMADD_MEMORY if the FormInfo allocation fails
- * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form
- * CURL_FORMADD_NULL if a null pointer was given for a char
- * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed
- * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
- * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)
- * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated
- * CURL_FORMADD_MEMORY if some allocation for string copying failed.
- * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array
- *
- ***************************************************************************/
-typedef enum {
- CURL_FORMADD_OK, /* first, no error */
-
- CURL_FORMADD_MEMORY,
- CURL_FORMADD_OPTION_TWICE,
- CURL_FORMADD_NULL,
- CURL_FORMADD_UNKNOWN_OPTION,
- CURL_FORMADD_INCOMPLETE,
- CURL_FORMADD_ILLEGAL_ARRAY,
- CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */
-
- CURL_FORMADD_LAST /* last */
-} CURLFORMcode;
-
-/*
- * NAME curl_formadd()
- *
- * DESCRIPTION
- *
- * Pretty advanced function for building multi-part formposts. Each invoke
- * adds one part that together construct a full post. Then use
- * CURLOPT_HTTPPOST to send it off to libcurl.
- */
-CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
- struct curl_httppost **last_post,
- ...);
-
-/*
- * callback function for curl_formget()
- * The void *arg pointer will be the one passed as second argument to
- * curl_formget().
- * The character buffer passed to it must not be freed.
- * Should return the buffer length passed to it as the argument "len" on
- * success.
- */
-typedef size_t (*curl_formget_callback)(void *arg, const char *buf,
- size_t len);
-
-/*
- * NAME curl_formget()
- *
- * DESCRIPTION
- *
- * Serialize a curl_httppost struct built with curl_formadd().
- * Accepts a void pointer as second argument which will be passed to
- * the curl_formget_callback function.
- * Returns 0 on success.
- */
-CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
- curl_formget_callback append);
-/*
- * NAME curl_formfree()
- *
- * DESCRIPTION
- *
- * Free a multipart formpost previously built with curl_formadd().
- */
-CURL_EXTERN void curl_formfree(struct curl_httppost *form);
-
-/*
- * NAME curl_getenv()
- *
- * DESCRIPTION
- *
- * Returns a malloc()'ed string that MUST be curl_free()ed after usage is
- * complete. DEPRECATED - see lib/README.curlx
- */
-CURL_EXTERN char *curl_getenv(const char *variable);
-
-/*
- * NAME curl_version()
- *
- * DESCRIPTION
- *
- * Returns a static ascii string of the libcurl version.
- */
-CURL_EXTERN char *curl_version(void);
-
-/*
- * NAME curl_easy_escape()
- *
- * DESCRIPTION
- *
- * Escapes URL strings (converts all letters consider illegal in URLs to their
- * %XX versions). This function returns a new allocated string or NULL if an
- * error occurred.
- */
-CURL_EXTERN char *curl_easy_escape(CURL *handle,
- const char *string,
- int length);
-
-/* the previous version: */
-CURL_EXTERN char *curl_escape(const char *string,
- int length);
-
-
-/*
- * NAME curl_easy_unescape()
- *
- * DESCRIPTION
- *
- * Unescapes URL encoding in strings (converts all %XX codes to their 8bit
- * versions). This function returns a new allocated string or NULL if an error
- * occurred.
- * Conversion Note: On non-ASCII platforms the ASCII %XX codes are
- * converted into the host encoding.
- */
-CURL_EXTERN char *curl_easy_unescape(CURL *handle,
- const char *string,
- int length,
- int *outlength);
-
-/* the previous version */
-CURL_EXTERN char *curl_unescape(const char *string,
- int length);
-
-/*
- * NAME curl_free()
- *
- * DESCRIPTION
- *
- * Provided for de-allocation in the same translation unit that did the
- * allocation. Added in libcurl 7.10
- */
-CURL_EXTERN void curl_free(void *p);
-
-/*
- * NAME curl_global_init()
- *
- * DESCRIPTION
- *
- * curl_global_init() should be invoked exactly once for each application that
- * uses libcurl and before any call of other libcurl functions.
- *
- * This function is not thread-safe!
- */
-CURL_EXTERN CURLcode curl_global_init(long flags);
-
-/*
- * NAME curl_global_init_mem()
- *
- * DESCRIPTION
- *
- * curl_global_init() or curl_global_init_mem() should be invoked exactly once
- * for each application that uses libcurl. This function can be used to
- * initialize libcurl and set user defined memory management callback
- * functions. Users can implement memory management routines to check for
- * memory leaks, check for mis-use of the curl library etc. User registered
- * callback routines with be invoked by this library instead of the system
- * memory management routines like malloc, free etc.
- */
-CURL_EXTERN CURLcode curl_global_init_mem(long flags,
- curl_malloc_callback m,
- curl_free_callback f,
- curl_realloc_callback r,
- curl_strdup_callback s,
- curl_calloc_callback c);
-
-/*
- * NAME curl_global_cleanup()
- *
- * DESCRIPTION
- *
- * curl_global_cleanup() should be invoked exactly once for each application
- * that uses libcurl
- */
-CURL_EXTERN void curl_global_cleanup(void);
-
-/* linked-list structure for the CURLOPT_QUOTE option (and other) */
-struct curl_slist {
- char *data;
- struct curl_slist *next;
-};
-
-/*
- * NAME curl_global_sslset()
- *
- * DESCRIPTION
- *
- * When built with multiple SSL backends, curl_global_sslset() allows to
- * choose one. This function can only be called once, and it must be called
- * *before* curl_global_init().
- *
- * The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The
- * backend can also be specified via the name parameter (passing -1 as id).
- * If both id and name are specified, the name will be ignored. If neither id
- * nor name are specified, the function will fail with
- * CURLSSLSET_UNKNOWN_BACKEND and set the "avail" pointer to the
- * NULL-terminated list of available backends.
- *
- * Upon success, the function returns CURLSSLSET_OK.
- *
- * If the specified SSL backend is not available, the function returns
- * CURLSSLSET_UNKNOWN_BACKEND and sets the "avail" pointer to a NULL-terminated
- * list of available SSL backends.
- *
- * The SSL backend can be set only once. If it has already been set, a
- * subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE.
- */
-
-typedef struct {
- curl_sslbackend id;
- const char *name;
-} curl_ssl_backend;
-
-typedef enum {
- CURLSSLSET_OK = 0,
- CURLSSLSET_UNKNOWN_BACKEND,
- CURLSSLSET_TOO_LATE,
- CURLSSLSET_NO_BACKENDS /* libcurl was built without any SSL support */
-} CURLsslset;
-
-CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
- const curl_ssl_backend ***avail);
-
-/*
- * NAME curl_slist_append()
- *
- * DESCRIPTION
- *
- * Appends a string to a linked list. If no list exists, it will be created
- * first. Returns the new list, after appending.
- */
-CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
- const char *);
-
-/*
- * NAME curl_slist_free_all()
- *
- * DESCRIPTION
- *
- * free a previously built curl_slist.
- */
-CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
-
-/*
- * NAME curl_getdate()
- *
- * DESCRIPTION
- *
- * Returns the time, in seconds since 1 Jan 1970 of the time string given in
- * the first argument. The time argument in the second parameter is unused
- * and should be set to NULL.
- */
-CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
-
-/* info about the certificate chain, only for OpenSSL, GnuTLS, Schannel, NSS
- and GSKit builds. Asked for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */
-struct curl_certinfo {
- int num_of_certs; /* number of certificates with information */
- struct curl_slist **certinfo; /* for each index in this array, there's a
- linked list with textual information in the
- format "name: value" */
-};
-
-/* Information about the SSL library used and the respective internal SSL
- handle, which can be used to obtain further information regarding the
- connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */
-struct curl_tlssessioninfo {
- curl_sslbackend backend;
- void *internals;
-};
-
-#define CURLINFO_STRING 0x100000
-#define CURLINFO_LONG 0x200000
-#define CURLINFO_DOUBLE 0x300000
-#define CURLINFO_SLIST 0x400000
-#define CURLINFO_PTR 0x400000 /* same as SLIST */
-#define CURLINFO_SOCKET 0x500000
-#define CURLINFO_OFF_T 0x600000
-#define CURLINFO_MASK 0x0fffff
-#define CURLINFO_TYPEMASK 0xf00000
-
-typedef enum {
- CURLINFO_NONE, /* first, never use this */
- CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1,
- CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2,
- CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3,
- CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4,
- CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5,
- CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,
- CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7,
- CURLINFO_SIZE_UPLOAD_T = CURLINFO_OFF_T + 7,
- CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8,
- CURLINFO_SIZE_DOWNLOAD_T = CURLINFO_OFF_T + 8,
- CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9,
- CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T + 9,
- CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10,
- CURLINFO_SPEED_UPLOAD_T = CURLINFO_OFF_T + 10,
- CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11,
- CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12,
- CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13,
- CURLINFO_FILETIME = CURLINFO_LONG + 14,
- CURLINFO_FILETIME_T = CURLINFO_OFF_T + 14,
- CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15,
- CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T + 15,
- CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16,
- CURLINFO_CONTENT_LENGTH_UPLOAD_T = CURLINFO_OFF_T + 16,
- CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
- CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
- CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,
- CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,
- CURLINFO_PRIVATE = CURLINFO_STRING + 21,
- CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22,
- CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23,
- CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24,
- CURLINFO_OS_ERRNO = CURLINFO_LONG + 25,
- CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26,
- CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27,
- CURLINFO_COOKIELIST = CURLINFO_SLIST + 28,
- CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,
- CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
- CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,
- CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32,
- CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
- CURLINFO_CERTINFO = CURLINFO_PTR + 34,
- CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35,
- CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36,
- CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37,
- CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38,
- CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39,
- CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40,
- CURLINFO_LOCAL_IP = CURLINFO_STRING + 41,
- CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42,
- CURLINFO_TLS_SESSION = CURLINFO_PTR + 43,
- CURLINFO_ACTIVESOCKET = CURLINFO_SOCKET + 44,
- CURLINFO_TLS_SSL_PTR = CURLINFO_PTR + 45,
- CURLINFO_HTTP_VERSION = CURLINFO_LONG + 46,
- CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47,
- CURLINFO_PROTOCOL = CURLINFO_LONG + 48,
- CURLINFO_SCHEME = CURLINFO_STRING + 49,
- /* Fill in new entries below here! */
-
- /* Preferably these would be defined conditionally based on the
- sizeof curl_off_t being 64-bits */
- CURLINFO_TOTAL_TIME_T = CURLINFO_OFF_T + 50,
- CURLINFO_NAMELOOKUP_TIME_T = CURLINFO_OFF_T + 51,
- CURLINFO_CONNECT_TIME_T = CURLINFO_OFF_T + 52,
- CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,
- CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
- CURLINFO_REDIRECT_TIME_T = CURLINFO_OFF_T + 55,
- CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
-
- CURLINFO_LASTONE = 56
-} CURLINFO;
-
-/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
- CURLINFO_HTTP_CODE */
-#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
-
-typedef enum {
- CURLCLOSEPOLICY_NONE, /* first, never use this */
-
- CURLCLOSEPOLICY_OLDEST,
- CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
- CURLCLOSEPOLICY_LEAST_TRAFFIC,
- CURLCLOSEPOLICY_SLOWEST,
- CURLCLOSEPOLICY_CALLBACK,
-
- CURLCLOSEPOLICY_LAST /* last, never use this */
-} curl_closepolicy;
-
-#define CURL_GLOBAL_SSL (1<<0) /* no purpose since since 7.57.0 */
-#define CURL_GLOBAL_WIN32 (1<<1)
-#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
-#define CURL_GLOBAL_NOTHING 0
-#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
-#define CURL_GLOBAL_ACK_EINTR (1<<2)
-
-
-/*****************************************************************************
- * Setup defines, protos etc for the sharing stuff.
- */
-
-/* Different data locks for a single share */
-typedef enum {
- CURL_LOCK_DATA_NONE = 0,
- /* CURL_LOCK_DATA_SHARE is used internally to say that
- * the locking is just made to change the internal state of the share
- * itself.
- */
- CURL_LOCK_DATA_SHARE,
- CURL_LOCK_DATA_COOKIE,
- CURL_LOCK_DATA_DNS,
- CURL_LOCK_DATA_SSL_SESSION,
- CURL_LOCK_DATA_CONNECT,
- CURL_LOCK_DATA_PSL,
- CURL_LOCK_DATA_LAST
-} curl_lock_data;
-
-/* Different lock access types */
-typedef enum {
- CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */
- CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */
- CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */
- CURL_LOCK_ACCESS_LAST /* never use */
-} curl_lock_access;
-
-typedef void (*curl_lock_function)(CURL *handle,
- curl_lock_data data,
- curl_lock_access locktype,
- void *userptr);
-typedef void (*curl_unlock_function)(CURL *handle,
- curl_lock_data data,
- void *userptr);
-
-
-typedef enum {
- CURLSHE_OK, /* all is fine */
- CURLSHE_BAD_OPTION, /* 1 */
- CURLSHE_IN_USE, /* 2 */
- CURLSHE_INVALID, /* 3 */
- CURLSHE_NOMEM, /* 4 out of memory */
- CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */
- CURLSHE_LAST /* never use */
-} CURLSHcode;
-
-typedef enum {
- CURLSHOPT_NONE, /* don't use */
- CURLSHOPT_SHARE, /* specify a data type to share */
- CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */
- CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */
- CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */
- CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock
- callback functions */
- CURLSHOPT_LAST /* never use */
-} CURLSHoption;
-
-CURL_EXTERN CURLSH *curl_share_init(void);
-CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
-CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
-
-/****************************************************************************
- * Structures for querying information about the curl library at runtime.
- */
-
-typedef enum {
- CURLVERSION_FIRST,
- CURLVERSION_SECOND,
- CURLVERSION_THIRD,
- CURLVERSION_FOURTH,
- CURLVERSION_FIFTH,
- CURLVERSION_LAST /* never actually use this */
-} CURLversion;
-
-/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
- basically all programs ever that want to get version information. It is
- meant to be a built-in version number for what kind of struct the caller
- expects. If the struct ever changes, we redefine the NOW to another enum
- from above. */
-#define CURLVERSION_NOW CURLVERSION_FIFTH
-
-typedef struct {
- CURLversion age; /* age of the returned struct */
- const char *version; /* LIBCURL_VERSION */
- unsigned int version_num; /* LIBCURL_VERSION_NUM */
- const char *host; /* OS/host/cpu/machine when configured */
- int features; /* bitmask, see defines below */
- const char *ssl_version; /* human readable string */
- long ssl_version_num; /* not used anymore, always 0 */
- const char *libz_version; /* human readable string */
- /* protocols is terminated by an entry with a NULL protoname */
- const char * const *protocols;
-
- /* The fields below this were added in CURLVERSION_SECOND */
- const char *ares;
- int ares_num;
-
- /* This field was added in CURLVERSION_THIRD */
- const char *libidn;
-
- /* These field were added in CURLVERSION_FOURTH */
-
- /* Same as '_libiconv_version' if built with HAVE_ICONV */
- int iconv_ver_num;
-
- const char *libssh_version; /* human readable string */
-
- /* These fields were added in CURLVERSION_FIFTH */
-
- unsigned int brotli_ver_num; /* Numeric Brotli version
- (MAJOR << 24) | (MINOR << 12) | PATCH */
- const char *brotli_version; /* human readable string. */
-
-} curl_version_info_data;
-
-#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */
-#define CURL_VERSION_KERBEROS4 (1<<1) /* Kerberos V4 auth is supported
- (deprecated) */
-#define CURL_VERSION_SSL (1<<2) /* SSL options are present */
-#define CURL_VERSION_LIBZ (1<<3) /* libz features are present */
-#define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */
-#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth is supported
- (deprecated) */
-#define CURL_VERSION_DEBUG (1<<6) /* Built with debug capabilities */
-#define CURL_VERSION_ASYNCHDNS (1<<7) /* Asynchronous DNS resolves */
-#define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth is supported */
-#define CURL_VERSION_LARGEFILE (1<<9) /* Supports files larger than 2GB */
-#define CURL_VERSION_IDN (1<<10) /* Internationized Domain Names are
- supported */
-#define CURL_VERSION_SSPI (1<<11) /* Built against Windows SSPI */
-#define CURL_VERSION_CONV (1<<12) /* Character conversions supported */
-#define CURL_VERSION_CURLDEBUG (1<<13) /* Debug memory tracking supported */
-#define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */
-#define CURL_VERSION_NTLM_WB (1<<15) /* NTLM delegation to winbind helper
- is supported */
-#define CURL_VERSION_HTTP2 (1<<16) /* HTTP2 support built-in */
-#define CURL_VERSION_GSSAPI (1<<17) /* Built against a GSS-API library */
-#define CURL_VERSION_KERBEROS5 (1<<18) /* Kerberos V5 auth is supported */
-#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */
-#define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used
- for cookie domain verification */
-#define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */
-#define CURL_VERSION_MULTI_SSL (1<<22) /* Multiple SSL backends available */
-#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */
-#define CURL_VERSION_ALTSVC (1<<24) /* Alt-Svc handling built-in */
-
- /*
- * NAME curl_version_info()
- *
- * DESCRIPTION
- *
- * This function returns a pointer to a static copy of the version info
- * struct. See above.
- */
-CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
-
-/*
- * NAME curl_easy_strerror()
- *
- * DESCRIPTION
- *
- * The curl_easy_strerror function may be used to turn a CURLcode value
- * into the equivalent human readable error string. This is useful
- * for printing meaningful error messages.
- */
-CURL_EXTERN const char *curl_easy_strerror(CURLcode);
-
-/*
- * NAME curl_share_strerror()
- *
- * DESCRIPTION
- *
- * The curl_share_strerror function may be used to turn a CURLSHcode value
- * into the equivalent human readable error string. This is useful
- * for printing meaningful error messages.
- */
-CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
-
-/*
- * NAME curl_easy_pause()
- *
- * DESCRIPTION
- *
- * The curl_easy_pause function pauses or unpauses transfers. Select the new
- * state by setting the bitmask, use the convenience defines below.
- *
- */
-CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
-
-#define CURLPAUSE_RECV (1<<0)
-#define CURLPAUSE_RECV_CONT (0)
-
-#define CURLPAUSE_SEND (1<<2)
-#define CURLPAUSE_SEND_CONT (0)
-
-#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND)
-#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)
-
-#ifdef __cplusplus
-}
-#endif
-
-/* unfortunately, the easy.h and multi.h include files need options and info
- stuff before they can be included! */
-#include "easy.h" /* nothing in curl is fun without the easy stuff */
-#include "multi.h"
-#include "urlapi.h"
-
-/* the typechecker doesn't work in C++ (yet) */
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
- ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
- !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)
-#include "typecheck-gcc.h"
-#else
-#if defined(__STDC__) && (__STDC__ >= 1)
-/* This preprocessor magic that replaces a call with the exact same call is
- only done to make sure application authors pass exactly three arguments
- to these functions. */
-#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)
-#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)
-#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
-#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
-#endif /* __STDC__ >= 1 */
-#endif /* gcc >= 4.3 && !__cplusplus */
-
-#endif /* __CURL_CURL_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/curlver.h b/components/cronet/third_party/curl_headers/include/curl/curlver.h
deleted file mode 100644
index 4afe4a9..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/curlver.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef __CURL_CURLVER_H
-#define __CURL_CURLVER_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* This header file contains nothing but libcurl version info, generated by
- a script at release-time. This was made its own header file in 7.11.2 */
-
-/* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2019 Daniel Stenberg, <daniel@haxx.se>."
-
-/* This is the version number of the libcurl package from which this header
- file origins: */
-#define LIBCURL_VERSION "7.65.1-DEV"
-
-/* The numeric version number is also available "in parts" by using these
- defines: */
-#define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 65
-#define LIBCURL_VERSION_PATCH 1
-
-/* This is the numeric version of the libcurl version number, meant for easier
- parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
- always follow this syntax:
-
- 0xXXYYZZ
-
- Where XX, YY and ZZ are the main version, release and patch numbers in
- hexadecimal (using 8 bits each). All three numbers are always represented
- using two digits. 1.2 would appear as "0x010200" while version 9.11.7
- appears as "0x090b07".
-
- This 6-digit (24 bits) hexadecimal number does not show pre-release number,
- and it is always a greater number in a more recent release. It makes
- comparisons with greater than and less than work.
-
- Note: This define is the full hex number and _does not_ use the
- CURL_VERSION_BITS() macro since curl's own configure script greps for it
- and needs it to contain the full number.
-*/
-#define LIBCURL_VERSION_NUM 0x074101
-
-/*
- * This is the date and time when the full source package was created. The
- * timestamp is not stored in git, as the timestamp is properly set in the
- * tarballs by the maketgz script.
- *
- * The format of the date follows this template:
- *
- * "2007-11-23"
- */
-#define LIBCURL_TIMESTAMP "[unreleased]"
-
-#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
-#define CURL_AT_LEAST_VERSION(x,y,z) \
- (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
-
-#endif /* __CURL_CURLVER_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/easy.h b/components/cronet/third_party/curl_headers/include/curl/easy.h
deleted file mode 100644
index f42a8a9..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/easy.h
+++ /dev/null
@@ -1,112 +0,0 @@
-#ifndef __CURL_EASY_H
-#define __CURL_EASY_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-CURL_EXTERN CURL *curl_easy_init(void);
-CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
-CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
-CURL_EXTERN void curl_easy_cleanup(CURL *curl);
-
-/*
- * NAME curl_easy_getinfo()
- *
- * DESCRIPTION
- *
- * Request internal information from the curl session with this function. The
- * third argument MUST be a pointer to a long, a pointer to a char * or a
- * pointer to a double (as the documentation describes elsewhere). The data
- * pointed to will be filled in accordingly and can be relied upon only if the
- * function returns CURLE_OK. This function is intended to get used *AFTER* a
- * performed transfer, all results from this function are undefined until the
- * transfer is completed.
- */
-CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
-
-
-/*
- * NAME curl_easy_duphandle()
- *
- * DESCRIPTION
- *
- * Creates a new curl session handle with the same options set for the handle
- * passed in. Duplicating a handle could only be a matter of cloning data and
- * options, internal state info and things like persistent connections cannot
- * be transferred. It is useful in multithreaded applications when you can run
- * curl_easy_duphandle() for each new thread to avoid a series of identical
- * curl_easy_setopt() invokes in every thread.
- */
-CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);
-
-/*
- * NAME curl_easy_reset()
- *
- * DESCRIPTION
- *
- * Re-initializes a CURL handle to the default values. This puts back the
- * handle to the same state as it was in when it was just created.
- *
- * It does keep: live connections, the Session ID cache, the DNS cache and the
- * cookies.
- */
-CURL_EXTERN void curl_easy_reset(CURL *curl);
-
-/*
- * NAME curl_easy_recv()
- *
- * DESCRIPTION
- *
- * Receives data from the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
- */
-CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
- size_t *n);
-
-/*
- * NAME curl_easy_send()
- *
- * DESCRIPTION
- *
- * Sends data over the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
- */
-CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
- size_t buflen, size_t *n);
-
-
-/*
- * NAME curl_easy_upkeep()
- *
- * DESCRIPTION
- *
- * Performs connection upkeep for the given session handle.
- */
-CURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/cronet/third_party/curl_headers/include/curl/mprintf.h b/components/cronet/third_party/curl_headers/include/curl/mprintf.h
deleted file mode 100644
index e20f546..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/mprintf.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef __CURL_MPRINTF_H
-#define __CURL_MPRINTF_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include <stdarg.h>
-#include <stdio.h> /* needed for FILE */
-#include "curl.h" /* for CURL_EXTERN */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-CURL_EXTERN int curl_mprintf(const char *format, ...);
-CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
-CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
-CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
- const char *format, ...);
-CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
-CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
-CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
-CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
- const char *format, va_list args);
-CURL_EXTERN char *curl_maprintf(const char *format, ...);
-CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __CURL_MPRINTF_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/multi.h b/components/cronet/third_party/curl_headers/include/curl/multi.h
deleted file mode 100644
index b19dbaf..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/multi.h
+++ /dev/null
@@ -1,441 +0,0 @@
-#ifndef __CURL_MULTI_H
-#define __CURL_MULTI_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-/*
- This is an "external" header file. Don't give away any internals here!
-
- GOALS
-
- o Enable a "pull" interface. The application that uses libcurl decides where
- and when to ask libcurl to get/send data.
-
- o Enable multiple simultaneous transfers in the same thread without making it
- complicated for the application.
-
- o Enable the application to select() on its own file descriptors and curl's
- file descriptors simultaneous easily.
-
-*/
-
-/*
- * This header file should not really need to include "curl.h" since curl.h
- * itself includes this file and we expect user applications to do #include
- * <curl/curl.h> without the need for especially including multi.h.
- *
- * For some reason we added this include here at one point, and rather than to
- * break existing (wrongly written) libcurl applications, we leave it as-is
- * but with this warning attached.
- */
-#include "curl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
-typedef struct Curl_multi CURLM;
-#else
-typedef void CURLM;
-#endif
-
-typedef enum {
- CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
- curl_multi_socket*() soon */
- CURLM_OK,
- CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */
- CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
- CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */
- CURLM_INTERNAL_ERROR, /* this is a libcurl bug */
- CURLM_BAD_SOCKET, /* the passed in socket argument did not match */
- CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */
- CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was
- attempted to get added - again */
- CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
- callback */
- CURLM_LAST
-} CURLMcode;
-
-/* just to make code nicer when using curl_multi_socket() you can now check
- for CURLM_CALL_MULTI_SOCKET too in the same style it works for
- curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
-#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
-
-/* bitmask bits for CURLMOPT_PIPELINING */
-#define CURLPIPE_NOTHING 0L
-#define CURLPIPE_HTTP1 1L
-#define CURLPIPE_MULTIPLEX 2L
-
-typedef enum {
- CURLMSG_NONE, /* first, not used */
- CURLMSG_DONE, /* This easy handle has completed. 'result' contains
- the CURLcode of the transfer */
- CURLMSG_LAST /* last, not used */
-} CURLMSG;
-
-struct CURLMsg {
- CURLMSG msg; /* what this message means */
- CURL *easy_handle; /* the handle it concerns */
- union {
- void *whatever; /* message-specific data */
- CURLcode result; /* return code for transfer */
- } data;
-};
-typedef struct CURLMsg CURLMsg;
-
-/* Based on poll(2) structure and values.
- * We don't use pollfd and POLL* constants explicitly
- * to cover platforms without poll(). */
-#define CURL_WAIT_POLLIN 0x0001
-#define CURL_WAIT_POLLPRI 0x0002
-#define CURL_WAIT_POLLOUT 0x0004
-
-struct curl_waitfd {
- curl_socket_t fd;
- short events;
- short revents; /* not supported yet */
-};
-
-/*
- * Name: curl_multi_init()
- *
- * Desc: inititalize multi-style curl usage
- *
- * Returns: a new CURLM handle to use in all 'curl_multi' functions.
- */
-CURL_EXTERN CURLM *curl_multi_init(void);
-
-/*
- * Name: curl_multi_add_handle()
- *
- * Desc: add a standard curl handle to the multi stack
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
- CURL *curl_handle);
-
- /*
- * Name: curl_multi_remove_handle()
- *
- * Desc: removes a curl handle from the multi stack again
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
- CURL *curl_handle);
-
- /*
- * Name: curl_multi_fdset()
- *
- * Desc: Ask curl for its fd_set sets. The app can use these to select() or
- * poll() on. We want curl_multi_perform() called as soon as one of
- * them are ready.
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
- fd_set *read_fd_set,
- fd_set *write_fd_set,
- fd_set *exc_fd_set,
- int *max_fd);
-
-/*
- * Name: curl_multi_wait()
- *
- * Desc: Poll on all fds within a CURLM set as well as any
- * additional fds passed to the function.
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
- struct curl_waitfd extra_fds[],
- unsigned int extra_nfds,
- int timeout_ms,
- int *ret);
-
- /*
- * Name: curl_multi_perform()
- *
- * Desc: When the app thinks there's data available for curl it calls this
- * function to read/write whatever there is right now. This returns
- * as soon as the reads and writes are done. This function does not
- * require that there actually is data available for reading or that
- * data can be written, it can be called just in case. It returns
- * the number of handles that still transfer data in the second
- * argument's integer-pointer.
- *
- * Returns: CURLMcode type, general multi error code. *NOTE* that this only
- * returns errors etc regarding the whole multi stack. There might
- * still have occurred problems on individual transfers even when
- * this returns OK.
- */
-CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
- int *running_handles);
-
- /*
- * Name: curl_multi_cleanup()
- *
- * Desc: Cleans up and removes a whole multi stack. It does not free or
- * touch any individual easy handles in any way. We need to define
- * in what state those handles will be if this function is called
- * in the middle of a transfer.
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
-
-/*
- * Name: curl_multi_info_read()
- *
- * Desc: Ask the multi handle if there's any messages/informationals from
- * the individual transfers. Messages include informationals such as
- * error code from the transfer or just the fact that a transfer is
- * completed. More details on these should be written down as well.
- *
- * Repeated calls to this function will return a new struct each
- * time, until a special "end of msgs" struct is returned as a signal
- * that there is no more to get at this point.
- *
- * The data the returned pointer points to will not survive calling
- * curl_multi_cleanup().
- *
- * The 'CURLMsg' struct is meant to be very simple and only contain
- * very basic information. If more involved information is wanted,
- * we will provide the particular "transfer handle" in that struct
- * and that should/could/would be used in subsequent
- * curl_easy_getinfo() calls (or similar). The point being that we
- * must never expose complex structs to applications, as then we'll
- * undoubtably get backwards compatibility problems in the future.
- *
- * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
- * of structs. It also writes the number of messages left in the
- * queue (after this read) in the integer the second argument points
- * to.
- */
-CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
- int *msgs_in_queue);
-
-/*
- * Name: curl_multi_strerror()
- *
- * Desc: The curl_multi_strerror function may be used to turn a CURLMcode
- * value into the equivalent human readable error string. This is
- * useful for printing meaningful error messages.
- *
- * Returns: A pointer to a zero-terminated error message.
- */
-CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
-
-/*
- * Name: curl_multi_socket() and
- * curl_multi_socket_all()
- *
- * Desc: An alternative version of curl_multi_perform() that allows the
- * application to pass in one of the file descriptors that have been
- * detected to have "action" on them and let libcurl perform.
- * See man page for details.
- */
-#define CURL_POLL_NONE 0
-#define CURL_POLL_IN 1
-#define CURL_POLL_OUT 2
-#define CURL_POLL_INOUT 3
-#define CURL_POLL_REMOVE 4
-
-#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
-
-#define CURL_CSELECT_IN 0x01
-#define CURL_CSELECT_OUT 0x02
-#define CURL_CSELECT_ERR 0x04
-
-typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */
- curl_socket_t s, /* socket */
- int what, /* see above */
- void *userp, /* private callback
- pointer */
- void *socketp); /* private socket
- pointer */
-/*
- * Name: curl_multi_timer_callback
- *
- * Desc: Called by libcurl whenever the library detects a change in the
- * maximum number of milliseconds the app is allowed to wait before
- * curl_multi_socket() or curl_multi_perform() must be called
- * (to allow libcurl's timed events to take place).
- *
- * Returns: The callback should return zero.
- */
-typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */
- long timeout_ms, /* see above */
- void *userp); /* private callback
- pointer */
-
-CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
- int *running_handles);
-
-CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
- curl_socket_t s,
- int ev_bitmask,
- int *running_handles);
-
-CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
- int *running_handles);
-
-#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
-/* This macro below was added in 7.16.3 to push users who recompile to use
- the new curl_multi_socket_action() instead of the old curl_multi_socket()
-*/
-#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
-#endif
-
-/*
- * Name: curl_multi_timeout()
- *
- * Desc: Returns the maximum number of milliseconds the app is allowed to
- * wait before curl_multi_socket() or curl_multi_perform() must be
- * called (to allow libcurl's timed events to take place).
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
- long *milliseconds);
-
-#undef CINIT /* re-using the same name as in curl.h */
-
-#ifdef CURL_ISOCPP
-#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define LONG CURLOPTTYPE_LONG
-#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
-#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
-#define OFF_T CURLOPTTYPE_OFF_T
-#define CINIT(name,type,number) CURLMOPT_/**/name = type + number
-#endif
-
-typedef enum {
- /* This is the socket callback function pointer */
- CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),
-
- /* This is the argument passed to the socket callback */
- CINIT(SOCKETDATA, OBJECTPOINT, 2),
-
- /* set to 1 to enable pipelining for this multi handle */
- CINIT(PIPELINING, LONG, 3),
-
- /* This is the timer callback function pointer */
- CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),
-
- /* This is the argument passed to the timer callback */
- CINIT(TIMERDATA, OBJECTPOINT, 5),
-
- /* maximum number of entries in the connection cache */
- CINIT(MAXCONNECTS, LONG, 6),
-
- /* maximum number of (pipelining) connections to one host */
- CINIT(MAX_HOST_CONNECTIONS, LONG, 7),
-
- /* maximum number of requests in a pipeline */
- CINIT(MAX_PIPELINE_LENGTH, LONG, 8),
-
- /* a connection with a content-length longer than this
- will not be considered for pipelining */
- CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9),
-
- /* a connection with a chunk length longer than this
- will not be considered for pipelining */
- CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10),
-
- /* a list of site names(+port) that are blacklisted from
- pipelining */
- CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11),
-
- /* a list of server types that are blacklisted from
- pipelining */
- CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12),
-
- /* maximum number of open connections in total */
- CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
-
- /* This is the server push callback function pointer */
- CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
-
- /* This is the argument passed to the server push callback */
- CINIT(PUSHDATA, OBJECTPOINT, 15),
-
- CURLMOPT_LASTENTRY /* the last unused */
-} CURLMoption;
-
-
-/*
- * Name: curl_multi_setopt()
- *
- * Desc: Sets options for the multi handle.
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
- CURLMoption option, ...);
-
-
-/*
- * Name: curl_multi_assign()
- *
- * Desc: This function sets an association in the multi handle between the
- * given socket and a private pointer of the application. This is
- * (only) useful for curl_multi_socket uses.
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
- curl_socket_t sockfd, void *sockp);
-
-
-/*
- * Name: curl_push_callback
- *
- * Desc: This callback gets called when a new stream is being pushed by the
- * server. It approves or denies the new stream.
- *
- * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
- */
-#define CURL_PUSH_OK 0
-#define CURL_PUSH_DENY 1
-
-struct curl_pushheaders; /* forward declaration only */
-
-CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
- size_t num);
-CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
- const char *name);
-
-typedef int (*curl_push_callback)(CURL *parent,
- CURL *easy,
- size_t num_headers,
- struct curl_pushheaders *headers,
- void *userp);
-
-#ifdef __cplusplus
-} /* end of extern "C" */
-#endif
-
-#endif
diff --git a/components/cronet/third_party/curl_headers/include/curl/stdcheaders.h b/components/cronet/third_party/curl_headers/include/curl/stdcheaders.h
deleted file mode 100644
index 027b6f4..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/stdcheaders.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef __STDC_HEADERS_H
-#define __STDC_HEADERS_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include <sys/types.h>
-
-size_t fread(void *, size_t, size_t, FILE *);
-size_t fwrite(const void *, size_t, size_t, FILE *);
-
-int strcasecmp(const char *, const char *);
-int strncasecmp(const char *, const char *, size_t);
-
-#endif /* __STDC_HEADERS_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/system.h b/components/cronet/third_party/curl_headers/include/curl/system.h
deleted file mode 100644
index 1e555ec..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/system.h
+++ /dev/null
@@ -1,493 +0,0 @@
-#ifndef __CURL_SYSTEM_H
-#define __CURL_SYSTEM_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/*
- * Try to keep one section per platform, compiler and architecture, otherwise,
- * if an existing section is reused for a different one and later on the
- * original is adjusted, probably the piggybacking one can be adversely
- * changed.
- *
- * In order to differentiate between platforms/compilers/architectures use
- * only compiler built in predefined preprocessor symbols.
- *
- * curl_off_t
- * ----------
- *
- * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit
- * wide signed integral data type. The width of this data type must remain
- * constant and independent of any possible large file support settings.
- *
- * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit
- * wide signed integral data type if there is no 64-bit type.
- *
- * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall
- * only be violated if off_t is the only 64-bit data type available and the
- * size of off_t is independent of large file support settings. Keep your
- * build on the safe side avoiding an off_t gating. If you have a 64-bit
- * off_t then take for sure that another 64-bit data type exists, dig deeper
- * and you will find it.
- *
- */
-
-#if defined(__DJGPP__) || defined(__GO32__)
-# if defined(__DJGPP__) && (__DJGPP__ > 1)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__SALFORDC__)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__BORLANDC__)
-# if (__BORLANDC__ < 0x520)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__TURBOC__)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__WATCOMC__)
-# if defined(__386__)
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__POCC__)
-# if (__POCC__ < 280)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# elif defined(_MSC_VER)
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__LCC__)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__SYMBIAN32__)
-# if defined(__EABI__) /* Treat all ARM compilers equally */
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__CW32__)
-# pragma longlong on
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__VC32__)
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
-
-#elif defined(__MWERKS__)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(_WIN32_WCE)
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__MINGW32__)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_WS2TCPIP_H 1
-
-#elif defined(__VMS)
-# if defined(__VAX)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
-
-#elif defined(__OS400__)
-# if defined(__ILEC400__)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(__MVS__)
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# if defined(_ILP32)
-# elif defined(_LP64)
-# endif
-# if defined(_LONG_LONG)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(_LP64)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(__370__)
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# if defined(_ILP32)
-# elif defined(_LP64)
-# endif
-# if defined(_LONG_LONG)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(_LP64)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(TPF)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__TINYC__) /* also known as tcc */
-
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */
-# if !defined(__LP64) && (defined(__ILP32) || \
- defined(__i386) || \
- defined(__sparcv8) || \
- defined(__sparcv8plus))
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__LP64) || \
- defined(__amd64) || defined(__sparcv9)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-
-#elif defined(__xlc__) /* IBM xlc compiler */
-# if !defined(_LP64)
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-
-/* ===================================== */
-/* KEEP MSVC THE PENULTIMATE ENTRY */
-/* ===================================== */
-
-#elif defined(_MSC_VER)
-# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
-# define CURL_TYPEOF_CURL_OFF_T __int64
-# define CURL_FORMAT_CURL_OFF_T "I64d"
-# define CURL_FORMAT_CURL_OFF_TU "I64u"
-# define CURL_SUFFIX_CURL_OFF_T i64
-# define CURL_SUFFIX_CURL_OFF_TU ui64
-# else
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-/* ===================================== */
-/* KEEP GENERIC GCC THE LAST ENTRY */
-/* ===================================== */
-
-#elif defined(__GNUC__) && !defined(_SCO_DS)
-# if !defined(__LP64__) && \
- (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) || \
- defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || \
- defined(__sparc__) || defined(__mips__) || defined(__sh__) || \
- defined(__XTENSA__) || \
- (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \
- (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L))
-# define CURL_TYPEOF_CURL_OFF_T long long
-# define CURL_FORMAT_CURL_OFF_T "lld"
-# define CURL_FORMAT_CURL_OFF_TU "llu"
-# define CURL_SUFFIX_CURL_OFF_T LL
-# define CURL_SUFFIX_CURL_OFF_TU ULL
-# elif defined(__LP64__) || \
- defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \
- (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
- (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# endif
-# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-# define CURL_PULL_SYS_TYPES_H 1
-# define CURL_PULL_SYS_SOCKET_H 1
-
-#else
-/* generic "safe guess" on old 32 bit style */
-# define CURL_TYPEOF_CURL_OFF_T long
-# define CURL_FORMAT_CURL_OFF_T "ld"
-# define CURL_FORMAT_CURL_OFF_TU "lu"
-# define CURL_SUFFIX_CURL_OFF_T L
-# define CURL_SUFFIX_CURL_OFF_TU UL
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-#endif
-
-#ifdef _AIX
-/* AIX needs <sys/poll.h> */
-#define CURL_PULL_SYS_POLL_H
-#endif
-
-
-/* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file */
-/* ws2tcpip.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_WS2TCPIP_H
-# include <winsock2.h>
-# include <windows.h>
-# include <ws2tcpip.h>
-#endif
-
-/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */
-/* sys/types.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
-/* sys/socket.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-
-/* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file */
-/* sys/poll.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_POLL_H
-# include <sys/poll.h>
-#endif
-
-/* Data type definition of curl_socklen_t. */
-#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
- typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
-#endif
-
-/* Data type definition of curl_off_t. */
-
-#ifdef CURL_TYPEOF_CURL_OFF_T
- typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
-#endif
-
-/*
- * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
- * these to be visible and exported by the external libcurl interface API,
- * while also making them visible to the library internals, simply including
- * curl_setup.h, without actually needing to include curl.h internally.
- * If some day this section would grow big enough, all this should be moved
- * to its own header file.
- */
-
-/*
- * Figure out if we can use the ## preprocessor operator, which is supported
- * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
- * or __cplusplus so we need to carefully check for them too.
- */
-
-#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
- defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
- defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
- defined(__ILEC400__)
- /* This compiler is believed to have an ISO compatible preprocessor */
-#define CURL_ISOCPP
-#else
- /* This compiler is believed NOT to have an ISO compatible preprocessor */
-#undef CURL_ISOCPP
-#endif
-
-/*
- * Macros for minimum-width signed and unsigned curl_off_t integer constants.
- */
-
-#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)
-# define __CURL_OFF_T_C_HLPR2(x) x
-# define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x)
-# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
- __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)
-# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
- __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)
-#else
-# ifdef CURL_ISOCPP
-# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix
-# else
-# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix
-# endif
-# define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix)
-# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)
-# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)
-#endif
-
-#endif /* __CURL_SYSTEM_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/typecheck-gcc.h b/components/cronet/third_party/curl_headers/include/curl/typecheck-gcc.h
deleted file mode 100644
index 2d1de4d..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/typecheck-gcc.h
+++ /dev/null
@@ -1,694 +0,0 @@
-#ifndef __CURL_TYPECHECK_GCC_H
-#define __CURL_TYPECHECK_GCC_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-/* wraps curl_easy_setopt() with typechecking */
-
-/* To add a new kind of warning, add an
- * if(_curl_is_sometype_option(_curl_opt))
- * if(!_curl_is_sometype(value))
- * _curl_easy_setopt_err_sometype();
- * block and define _curl_is_sometype_option, _curl_is_sometype and
- * _curl_easy_setopt_err_sometype below
- *
- * NOTE: We use two nested 'if' statements here instead of the && operator, in
- * order to work around gcc bug #32061. It affects only gcc 4.3.x/4.4.x
- * when compiling with -Wlogical-op.
- *
- * To add an option that uses the same type as an existing option, you'll just
- * need to extend the appropriate _curl_*_option macro
- */
-#define curl_easy_setopt(handle, option, value) \
-__extension__ ({ \
- __typeof__(option) _curl_opt = option; \
- if(__builtin_constant_p(_curl_opt)) { \
- if(_curl_is_long_option(_curl_opt)) \
- if(!_curl_is_long(value)) \
- _curl_easy_setopt_err_long(); \
- if(_curl_is_off_t_option(_curl_opt)) \
- if(!_curl_is_off_t(value)) \
- _curl_easy_setopt_err_curl_off_t(); \
- if(_curl_is_string_option(_curl_opt)) \
- if(!_curl_is_string(value)) \
- _curl_easy_setopt_err_string(); \
- if(_curl_is_write_cb_option(_curl_opt)) \
- if(!_curl_is_write_cb(value)) \
- _curl_easy_setopt_err_write_callback(); \
- if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION) \
- if(!_curl_is_resolver_start_callback(value)) \
- _curl_easy_setopt_err_resolver_start_callback(); \
- if((_curl_opt) == CURLOPT_READFUNCTION) \
- if(!_curl_is_read_cb(value)) \
- _curl_easy_setopt_err_read_cb(); \
- if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \
- if(!_curl_is_ioctl_cb(value)) \
- _curl_easy_setopt_err_ioctl_cb(); \
- if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \
- if(!_curl_is_sockopt_cb(value)) \
- _curl_easy_setopt_err_sockopt_cb(); \
- if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \
- if(!_curl_is_opensocket_cb(value)) \
- _curl_easy_setopt_err_opensocket_cb(); \
- if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \
- if(!_curl_is_progress_cb(value)) \
- _curl_easy_setopt_err_progress_cb(); \
- if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \
- if(!_curl_is_debug_cb(value)) \
- _curl_easy_setopt_err_debug_cb(); \
- if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \
- if(!_curl_is_ssl_ctx_cb(value)) \
- _curl_easy_setopt_err_ssl_ctx_cb(); \
- if(_curl_is_conv_cb_option(_curl_opt)) \
- if(!_curl_is_conv_cb(value)) \
- _curl_easy_setopt_err_conv_cb(); \
- if((_curl_opt) == CURLOPT_SEEKFUNCTION) \
- if(!_curl_is_seek_cb(value)) \
- _curl_easy_setopt_err_seek_cb(); \
- if(_curl_is_cb_data_option(_curl_opt)) \
- if(!_curl_is_cb_data(value)) \
- _curl_easy_setopt_err_cb_data(); \
- if((_curl_opt) == CURLOPT_ERRORBUFFER) \
- if(!_curl_is_error_buffer(value)) \
- _curl_easy_setopt_err_error_buffer(); \
- if((_curl_opt) == CURLOPT_STDERR) \
- if(!_curl_is_FILE(value)) \
- _curl_easy_setopt_err_FILE(); \
- if(_curl_is_postfields_option(_curl_opt)) \
- if(!_curl_is_postfields(value)) \
- _curl_easy_setopt_err_postfields(); \
- if((_curl_opt) == CURLOPT_HTTPPOST) \
- if(!_curl_is_arr((value), struct curl_httppost)) \
- _curl_easy_setopt_err_curl_httpost(); \
- if((_curl_opt) == CURLOPT_MIMEPOST) \
- if(!_curl_is_ptr((value), curl_mime)) \
- _curl_easy_setopt_err_curl_mimepost(); \
- if(_curl_is_slist_option(_curl_opt)) \
- if(!_curl_is_arr((value), struct curl_slist)) \
- _curl_easy_setopt_err_curl_slist(); \
- if((_curl_opt) == CURLOPT_SHARE) \
- if(!_curl_is_ptr((value), CURLSH)) \
- _curl_easy_setopt_err_CURLSH(); \
- } \
- curl_easy_setopt(handle, _curl_opt, value); \
-})
-
-/* wraps curl_easy_getinfo() with typechecking */
-#define curl_easy_getinfo(handle, info, arg) \
-__extension__ ({ \
- __typeof__(info) _curl_info = info; \
- if(__builtin_constant_p(_curl_info)) { \
- if(_curl_is_string_info(_curl_info)) \
- if(!_curl_is_arr((arg), char *)) \
- _curl_easy_getinfo_err_string(); \
- if(_curl_is_long_info(_curl_info)) \
- if(!_curl_is_arr((arg), long)) \
- _curl_easy_getinfo_err_long(); \
- if(_curl_is_double_info(_curl_info)) \
- if(!_curl_is_arr((arg), double)) \
- _curl_easy_getinfo_err_double(); \
- if(_curl_is_slist_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_slist *)) \
- _curl_easy_getinfo_err_curl_slist(); \
- if(_curl_is_tlssessioninfo_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_tlssessioninfo *)) \
- _curl_easy_getinfo_err_curl_tlssesssioninfo(); \
- if(_curl_is_certinfo_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_certinfo *)) \
- _curl_easy_getinfo_err_curl_certinfo(); \
- if(_curl_is_socket_info(_curl_info)) \
- if(!_curl_is_arr((arg), curl_socket_t)) \
- _curl_easy_getinfo_err_curl_socket(); \
- if(_curl_is_off_t_info(_curl_info)) \
- if(!_curl_is_arr((arg), curl_off_t)) \
- _curl_easy_getinfo_err_curl_off_t(); \
- } \
- curl_easy_getinfo(handle, _curl_info, arg); \
-})
-
-/*
- * For now, just make sure that the functions are called with three arguments
- */
-#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
-#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
-
-
-/* the actual warnings, triggered by calling the _curl_easy_setopt_err*
- * functions */
-
-/* To define a new warning, use _CURL_WARNING(identifier, "message") */
-#define _CURL_WARNING(id, message) \
- static void __attribute__((__warning__(message))) \
- __attribute__((__unused__)) __attribute__((__noinline__)) \
- id(void) { __asm__(""); }
-
-_CURL_WARNING(_curl_easy_setopt_err_long,
- "curl_easy_setopt expects a long argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_off_t,
- "curl_easy_setopt expects a curl_off_t argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_string,
- "curl_easy_setopt expects a "
- "string ('char *' or char[]) argument for this option"
- )
-_CURL_WARNING(_curl_easy_setopt_err_write_callback,
- "curl_easy_setopt expects a curl_write_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_resolver_start_callback,
- "curl_easy_setopt expects a "
- "curl_resolver_start_callback argument for this option"
- )
-_CURL_WARNING(_curl_easy_setopt_err_read_cb,
- "curl_easy_setopt expects a curl_read_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,
- "curl_easy_setopt expects a curl_ioctl_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb,
- "curl_easy_setopt expects a curl_sockopt_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb,
- "curl_easy_setopt expects a "
- "curl_opensocket_callback argument for this option"
- )
-_CURL_WARNING(_curl_easy_setopt_err_progress_cb,
- "curl_easy_setopt expects a curl_progress_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_debug_cb,
- "curl_easy_setopt expects a curl_debug_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb,
- "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_conv_cb,
- "curl_easy_setopt expects a curl_conv_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_seek_cb,
- "curl_easy_setopt expects a curl_seek_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_cb_data,
- "curl_easy_setopt expects a "
- "private data pointer as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_error_buffer,
- "curl_easy_setopt expects a "
- "char buffer of CURL_ERROR_SIZE as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_FILE,
- "curl_easy_setopt expects a 'FILE *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_postfields,
- "curl_easy_setopt expects a 'void *' or 'char *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,
- "curl_easy_setopt expects a 'struct curl_httppost *' "
- "argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_mimepost,
- "curl_easy_setopt expects a 'curl_mime *' "
- "argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_slist,
- "curl_easy_setopt expects a 'struct curl_slist *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_CURLSH,
- "curl_easy_setopt expects a CURLSH* argument for this option")
-
-_CURL_WARNING(_curl_easy_getinfo_err_string,
- "curl_easy_getinfo expects a pointer to 'char *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_long,
- "curl_easy_getinfo expects a pointer to long for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_double,
- "curl_easy_getinfo expects a pointer to double for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
- "curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo,
- "curl_easy_getinfo expects a pointer to "
- "'struct curl_tlssessioninfo *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_certinfo,
- "curl_easy_getinfo expects a pointer to "
- "'struct curl_certinfo *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_socket,
- "curl_easy_getinfo expects a pointer to curl_socket_t for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
- "curl_easy_getinfo expects a pointer to curl_off_t for this info")
-
-/* groups of curl_easy_setops options that take the same type of argument */
-
-/* To add a new option to one of the groups, just add
- * (option) == CURLOPT_SOMETHING
- * to the or-expression. If the option takes a long or curl_off_t, you don't
- * have to do anything
- */
-
-/* evaluates to true if option takes a long argument */
-#define _curl_is_long_option(option) \
- (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)
-
-#define _curl_is_off_t_option(option) \
- ((option) > CURLOPTTYPE_OFF_T)
-
-/* evaluates to true if option takes a char* argument */
-#define _curl_is_string_option(option) \
- ((option) == CURLOPT_ABSTRACT_UNIX_SOCKET || \
- (option) == CURLOPT_ACCEPT_ENCODING || \
- (option) == CURLOPT_ALTSVC || \
- (option) == CURLOPT_CAINFO || \
- (option) == CURLOPT_CAPATH || \
- (option) == CURLOPT_COOKIE || \
- (option) == CURLOPT_COOKIEFILE || \
- (option) == CURLOPT_COOKIEJAR || \
- (option) == CURLOPT_COOKIELIST || \
- (option) == CURLOPT_CRLFILE || \
- (option) == CURLOPT_CUSTOMREQUEST || \
- (option) == CURLOPT_DEFAULT_PROTOCOL || \
- (option) == CURLOPT_DNS_INTERFACE || \
- (option) == CURLOPT_DNS_LOCAL_IP4 || \
- (option) == CURLOPT_DNS_LOCAL_IP6 || \
- (option) == CURLOPT_DNS_SERVERS || \
- (option) == CURLOPT_DOH_URL || \
- (option) == CURLOPT_EGDSOCKET || \
- (option) == CURLOPT_FTPPORT || \
- (option) == CURLOPT_FTP_ACCOUNT || \
- (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \
- (option) == CURLOPT_INTERFACE || \
- (option) == CURLOPT_ISSUERCERT || \
- (option) == CURLOPT_KEYPASSWD || \
- (option) == CURLOPT_KRBLEVEL || \
- (option) == CURLOPT_LOGIN_OPTIONS || \
- (option) == CURLOPT_MAIL_AUTH || \
- (option) == CURLOPT_MAIL_FROM || \
- (option) == CURLOPT_NETRC_FILE || \
- (option) == CURLOPT_NOPROXY || \
- (option) == CURLOPT_PASSWORD || \
- (option) == CURLOPT_PINNEDPUBLICKEY || \
- (option) == CURLOPT_PRE_PROXY || \
- (option) == CURLOPT_PROXY || \
- (option) == CURLOPT_PROXYPASSWORD || \
- (option) == CURLOPT_PROXYUSERNAME || \
- (option) == CURLOPT_PROXYUSERPWD || \
- (option) == CURLOPT_PROXY_CAINFO || \
- (option) == CURLOPT_PROXY_CAPATH || \
- (option) == CURLOPT_PROXY_CRLFILE || \
- (option) == CURLOPT_PROXY_KEYPASSWD || \
- (option) == CURLOPT_PROXY_PINNEDPUBLICKEY || \
- (option) == CURLOPT_PROXY_SERVICE_NAME || \
- (option) == CURLOPT_PROXY_SSLCERT || \
- (option) == CURLOPT_PROXY_SSLCERTTYPE || \
- (option) == CURLOPT_PROXY_SSLKEY || \
- (option) == CURLOPT_PROXY_SSLKEYTYPE || \
- (option) == CURLOPT_PROXY_SSL_CIPHER_LIST || \
- (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD || \
- (option) == CURLOPT_PROXY_TLSAUTH_USERNAME || \
- (option) == CURLOPT_PROXY_TLSAUTH_TYPE || \
- (option) == CURLOPT_RANDOM_FILE || \
- (option) == CURLOPT_RANGE || \
- (option) == CURLOPT_REFERER || \
- (option) == CURLOPT_RTSP_SESSION_ID || \
- (option) == CURLOPT_RTSP_STREAM_URI || \
- (option) == CURLOPT_RTSP_TRANSPORT || \
- (option) == CURLOPT_SERVICE_NAME || \
- (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \
- (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
- (option) == CURLOPT_SSH_KNOWNHOSTS || \
- (option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
- (option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
- (option) == CURLOPT_SSLCERT || \
- (option) == CURLOPT_SSLCERTTYPE || \
- (option) == CURLOPT_SSLENGINE || \
- (option) == CURLOPT_SSLKEY || \
- (option) == CURLOPT_SSLKEYTYPE || \
- (option) == CURLOPT_SSL_CIPHER_LIST || \
- (option) == CURLOPT_TLSAUTH_PASSWORD || \
- (option) == CURLOPT_TLSAUTH_TYPE || \
- (option) == CURLOPT_TLSAUTH_USERNAME || \
- (option) == CURLOPT_UNIX_SOCKET_PATH || \
- (option) == CURLOPT_URL || \
- (option) == CURLOPT_USERAGENT || \
- (option) == CURLOPT_USERNAME || \
- (option) == CURLOPT_USERPWD || \
- (option) == CURLOPT_XOAUTH2_BEARER || \
- 0)
-
-/* evaluates to true if option takes a curl_write_callback argument */
-#define _curl_is_write_cb_option(option) \
- ((option) == CURLOPT_HEADERFUNCTION || \
- (option) == CURLOPT_WRITEFUNCTION)
-
-/* evaluates to true if option takes a curl_conv_callback argument */
-#define _curl_is_conv_cb_option(option) \
- ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \
- (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \
- (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)
-
-/* evaluates to true if option takes a data argument to pass to a callback */
-#define _curl_is_cb_data_option(option) \
- ((option) == CURLOPT_CHUNK_DATA || \
- (option) == CURLOPT_CLOSESOCKETDATA || \
- (option) == CURLOPT_DEBUGDATA || \
- (option) == CURLOPT_FNMATCH_DATA || \
- (option) == CURLOPT_HEADERDATA || \
- (option) == CURLOPT_INTERLEAVEDATA || \
- (option) == CURLOPT_IOCTLDATA || \
- (option) == CURLOPT_OPENSOCKETDATA || \
- (option) == CURLOPT_PRIVATE || \
- (option) == CURLOPT_PROGRESSDATA || \
- (option) == CURLOPT_READDATA || \
- (option) == CURLOPT_SEEKDATA || \
- (option) == CURLOPT_SOCKOPTDATA || \
- (option) == CURLOPT_SSH_KEYDATA || \
- (option) == CURLOPT_SSL_CTX_DATA || \
- (option) == CURLOPT_WRITEDATA || \
- (option) == CURLOPT_RESOLVER_START_DATA || \
- (option) == CURLOPT_CURLU || \
- 0)
-
-/* evaluates to true if option takes a POST data argument (void* or char*) */
-#define _curl_is_postfields_option(option) \
- ((option) == CURLOPT_POSTFIELDS || \
- (option) == CURLOPT_COPYPOSTFIELDS || \
- 0)
-
-/* evaluates to true if option takes a struct curl_slist * argument */
-#define _curl_is_slist_option(option) \
- ((option) == CURLOPT_HTTP200ALIASES || \
- (option) == CURLOPT_HTTPHEADER || \
- (option) == CURLOPT_MAIL_RCPT || \
- (option) == CURLOPT_POSTQUOTE || \
- (option) == CURLOPT_PREQUOTE || \
- (option) == CURLOPT_PROXYHEADER || \
- (option) == CURLOPT_QUOTE || \
- (option) == CURLOPT_RESOLVE || \
- (option) == CURLOPT_TELNETOPTIONS || \
- 0)
-
-/* groups of curl_easy_getinfo infos that take the same type of argument */
-
-/* evaluates to true if info expects a pointer to char * argument */
-#define _curl_is_string_info(info) \
- (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG)
-
-/* evaluates to true if info expects a pointer to long argument */
-#define _curl_is_long_info(info) \
- (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)
-
-/* evaluates to true if info expects a pointer to double argument */
-#define _curl_is_double_info(info) \
- (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)
-
-/* true if info expects a pointer to struct curl_slist * argument */
-#define _curl_is_slist_info(info) \
- (((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST))
-
-/* true if info expects a pointer to struct curl_tlssessioninfo * argument */
-#define _curl_is_tlssessioninfo_info(info) \
- (((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION))
-
-/* true if info expects a pointer to struct curl_certinfo * argument */
-#define _curl_is_certinfo_info(info) ((info) == CURLINFO_CERTINFO)
-
-/* true if info expects a pointer to struct curl_socket_t argument */
-#define _curl_is_socket_info(info) \
- (CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T)
-
-/* true if info expects a pointer to curl_off_t argument */
-#define _curl_is_off_t_info(info) \
- (CURLINFO_OFF_T < (info))
-
-
-/* typecheck helpers -- check whether given expression has requested type*/
-
-/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros,
- * otherwise define a new macro. Search for __builtin_types_compatible_p
- * in the GCC manual.
- * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is
- * the actual expression passed to the curl_easy_setopt macro. This
- * means that you can only apply the sizeof and __typeof__ operators, no
- * == or whatsoever.
- */
-
-/* XXX: should evaluate to true if expr is a pointer */
-#define _curl_is_any_ptr(expr) \
- (sizeof(expr) == sizeof(void *))
-
-/* evaluates to true if expr is NULL */
-/* XXX: must not evaluate expr, so this check is not accurate */
-#define _curl_is_NULL(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))
-
-/* evaluates to true if expr is type*, const type* or NULL */
-#define _curl_is_ptr(expr, type) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), type *) || \
- __builtin_types_compatible_p(__typeof__(expr), const type *))
-
-/* evaluates to true if expr is one of type[], type*, NULL or const type* */
-#define _curl_is_arr(expr, type) \
- (_curl_is_ptr((expr), type) || \
- __builtin_types_compatible_p(__typeof__(expr), type []))
-
-/* evaluates to true if expr is a string */
-#define _curl_is_string(expr) \
- (_curl_is_arr((expr), char) || \
- _curl_is_arr((expr), signed char) || \
- _curl_is_arr((expr), unsigned char))
-
-/* evaluates to true if expr is a long (no matter the signedness)
- * XXX: for now, int is also accepted (and therefore short and char, which
- * are promoted to int when passed to a variadic function) */
-#define _curl_is_long(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), long) || \
- __builtin_types_compatible_p(__typeof__(expr), signed long) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned long) || \
- __builtin_types_compatible_p(__typeof__(expr), int) || \
- __builtin_types_compatible_p(__typeof__(expr), signed int) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned int) || \
- __builtin_types_compatible_p(__typeof__(expr), short) || \
- __builtin_types_compatible_p(__typeof__(expr), signed short) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned short) || \
- __builtin_types_compatible_p(__typeof__(expr), char) || \
- __builtin_types_compatible_p(__typeof__(expr), signed char) || \
- __builtin_types_compatible_p(__typeof__(expr), unsigned char))
-
-/* evaluates to true if expr is of type curl_off_t */
-#define _curl_is_off_t(expr) \
- (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
-
-/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
-/* XXX: also check size of an char[] array? */
-#define _curl_is_error_buffer(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), char *) || \
- __builtin_types_compatible_p(__typeof__(expr), char[]))
-
-/* evaluates to true if expr is of type (const) void* or (const) FILE* */
-#if 0
-#define _curl_is_cb_data(expr) \
- (_curl_is_ptr((expr), void) || \
- _curl_is_ptr((expr), FILE))
-#else /* be less strict */
-#define _curl_is_cb_data(expr) \
- _curl_is_any_ptr(expr)
-#endif
-
-/* evaluates to true if expr is of type FILE* */
-#define _curl_is_FILE(expr) \
- (_curl_is_NULL(expr) || \
- (__builtin_types_compatible_p(__typeof__(expr), FILE *)))
-
-/* evaluates to true if expr can be passed as POST data (void* or char*) */
-#define _curl_is_postfields(expr) \
- (_curl_is_ptr((expr), void) || \
- _curl_is_arr((expr), char) || \
- _curl_is_arr((expr), unsigned char))
-
-/* helper: __builtin_types_compatible_p distinguishes between functions and
- * function pointers, hide it */
-#define _curl_callback_compatible(func, type) \
- (__builtin_types_compatible_p(__typeof__(func), type) || \
- __builtin_types_compatible_p(__typeof__(func) *, type))
-
-/* evaluates to true if expr is of type curl_resolver_start_callback */
-#define _curl_is_resolver_start_callback(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_resolver_start_callback))
-
-/* evaluates to true if expr is of type curl_read_callback or "similar" */
-#define _curl_is_read_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), __typeof__(fread) *) || \
- _curl_callback_compatible((expr), curl_read_callback) || \
- _curl_callback_compatible((expr), _curl_read_callback1) || \
- _curl_callback_compatible((expr), _curl_read_callback2) || \
- _curl_callback_compatible((expr), _curl_read_callback3) || \
- _curl_callback_compatible((expr), _curl_read_callback4) || \
- _curl_callback_compatible((expr), _curl_read_callback5) || \
- _curl_callback_compatible((expr), _curl_read_callback6))
-typedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *);
-typedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *);
-typedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *);
-typedef size_t (*_curl_read_callback4)(void *, size_t, size_t, void *);
-typedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *);
-typedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *);
-
-/* evaluates to true if expr is of type curl_write_callback or "similar" */
-#define _curl_is_write_cb(expr) \
- (_curl_is_read_cb(expr) || \
- _curl_callback_compatible((expr), __typeof__(fwrite) *) || \
- _curl_callback_compatible((expr), curl_write_callback) || \
- _curl_callback_compatible((expr), _curl_write_callback1) || \
- _curl_callback_compatible((expr), _curl_write_callback2) || \
- _curl_callback_compatible((expr), _curl_write_callback3) || \
- _curl_callback_compatible((expr), _curl_write_callback4) || \
- _curl_callback_compatible((expr), _curl_write_callback5) || \
- _curl_callback_compatible((expr), _curl_write_callback6))
-typedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *);
-typedef size_t (*_curl_write_callback2)(const char *, size_t, size_t,
- const void *);
-typedef size_t (*_curl_write_callback3)(const char *, size_t, size_t, FILE *);
-typedef size_t (*_curl_write_callback4)(const void *, size_t, size_t, void *);
-typedef size_t (*_curl_write_callback5)(const void *, size_t, size_t,
- const void *);
-typedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *);
-
-/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */
-#define _curl_is_ioctl_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_ioctl_callback) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback1) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback2) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback3) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback4))
-typedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *);
-typedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *);
-typedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *);
-typedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *);
-
-/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */
-#define _curl_is_sockopt_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_sockopt_callback) || \
- _curl_callback_compatible((expr), _curl_sockopt_callback1) || \
- _curl_callback_compatible((expr), _curl_sockopt_callback2))
-typedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);
-typedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t,
- curlsocktype);
-
-/* evaluates to true if expr is of type curl_opensocket_callback or
- "similar" */
-#define _curl_is_opensocket_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_opensocket_callback) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback1) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback2) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback3) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback4))
-typedef curl_socket_t (*_curl_opensocket_callback1)
- (void *, curlsocktype, struct curl_sockaddr *);
-typedef curl_socket_t (*_curl_opensocket_callback2)
- (void *, curlsocktype, const struct curl_sockaddr *);
-typedef curl_socket_t (*_curl_opensocket_callback3)
- (const void *, curlsocktype, struct curl_sockaddr *);
-typedef curl_socket_t (*_curl_opensocket_callback4)
- (const void *, curlsocktype, const struct curl_sockaddr *);
-
-/* evaluates to true if expr is of type curl_progress_callback or "similar" */
-#define _curl_is_progress_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_progress_callback) || \
- _curl_callback_compatible((expr), _curl_progress_callback1) || \
- _curl_callback_compatible((expr), _curl_progress_callback2))
-typedef int (*_curl_progress_callback1)(void *,
- double, double, double, double);
-typedef int (*_curl_progress_callback2)(const void *,
- double, double, double, double);
-
-/* evaluates to true if expr is of type curl_debug_callback or "similar" */
-#define _curl_is_debug_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_debug_callback) || \
- _curl_callback_compatible((expr), _curl_debug_callback1) || \
- _curl_callback_compatible((expr), _curl_debug_callback2) || \
- _curl_callback_compatible((expr), _curl_debug_callback3) || \
- _curl_callback_compatible((expr), _curl_debug_callback4) || \
- _curl_callback_compatible((expr), _curl_debug_callback5) || \
- _curl_callback_compatible((expr), _curl_debug_callback6) || \
- _curl_callback_compatible((expr), _curl_debug_callback7) || \
- _curl_callback_compatible((expr), _curl_debug_callback8))
-typedef int (*_curl_debug_callback1) (CURL *,
- curl_infotype, char *, size_t, void *);
-typedef int (*_curl_debug_callback2) (CURL *,
- curl_infotype, char *, size_t, const void *);
-typedef int (*_curl_debug_callback3) (CURL *,
- curl_infotype, const char *, size_t, void *);
-typedef int (*_curl_debug_callback4) (CURL *,
- curl_infotype, const char *, size_t, const void *);
-typedef int (*_curl_debug_callback5) (CURL *,
- curl_infotype, unsigned char *, size_t, void *);
-typedef int (*_curl_debug_callback6) (CURL *,
- curl_infotype, unsigned char *, size_t, const void *);
-typedef int (*_curl_debug_callback7) (CURL *,
- curl_infotype, const unsigned char *, size_t, void *);
-typedef int (*_curl_debug_callback8) (CURL *,
- curl_infotype, const unsigned char *, size_t, const void *);
-
-/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */
-/* this is getting even messier... */
-#define _curl_is_ssl_ctx_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_ssl_ctx_callback) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback8))
-typedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *);
-typedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback4)(CURL *, const void *,
- const void *);
-#ifdef HEADER_SSL_H
-/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX
- * this will of course break if we're included before OpenSSL headers...
- */
-typedef CURLcode (*_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *);
-typedef CURLcode (*_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX,
- const void *);
-#else
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;
-#endif
-
-/* evaluates to true if expr is of type curl_conv_callback or "similar" */
-#define _curl_is_conv_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_conv_callback) || \
- _curl_callback_compatible((expr), _curl_conv_callback1) || \
- _curl_callback_compatible((expr), _curl_conv_callback2) || \
- _curl_callback_compatible((expr), _curl_conv_callback3) || \
- _curl_callback_compatible((expr), _curl_conv_callback4))
-typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);
-typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);
-typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);
-typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);
-
-/* evaluates to true if expr is of type curl_seek_callback or "similar" */
-#define _curl_is_seek_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_seek_callback) || \
- _curl_callback_compatible((expr), _curl_seek_callback1) || \
- _curl_callback_compatible((expr), _curl_seek_callback2))
-typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);
-typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);
-
-
-#endif /* __CURL_TYPECHECK_GCC_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/urlapi.h b/components/cronet/third_party/curl_headers/include/curl/urlapi.h
deleted file mode 100644
index 58e89d8..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/urlapi.h
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef __CURL_URLAPI_H
-#define __CURL_URLAPI_H
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-
-#include "curl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* the error codes for the URL API */
-typedef enum {
- CURLUE_OK,
- CURLUE_BAD_HANDLE, /* 1 */
- CURLUE_BAD_PARTPOINTER, /* 2 */
- CURLUE_MALFORMED_INPUT, /* 3 */
- CURLUE_BAD_PORT_NUMBER, /* 4 */
- CURLUE_UNSUPPORTED_SCHEME, /* 5 */
- CURLUE_URLDECODE, /* 6 */
- CURLUE_OUT_OF_MEMORY, /* 7 */
- CURLUE_USER_NOT_ALLOWED, /* 8 */
- CURLUE_UNKNOWN_PART, /* 9 */
- CURLUE_NO_SCHEME, /* 10 */
- CURLUE_NO_USER, /* 11 */
- CURLUE_NO_PASSWORD, /* 12 */
- CURLUE_NO_OPTIONS, /* 13 */
- CURLUE_NO_HOST, /* 14 */
- CURLUE_NO_PORT, /* 15 */
- CURLUE_NO_QUERY, /* 16 */
- CURLUE_NO_FRAGMENT /* 17 */
-} CURLUcode;
-
-typedef enum {
- CURLUPART_URL,
- CURLUPART_SCHEME,
- CURLUPART_USER,
- CURLUPART_PASSWORD,
- CURLUPART_OPTIONS,
- CURLUPART_HOST,
- CURLUPART_PORT,
- CURLUPART_PATH,
- CURLUPART_QUERY,
- CURLUPART_FRAGMENT,
- CURLUPART_ZONEID /* added in 7.65.0 */
-} CURLUPart;
-
-#define CURLU_DEFAULT_PORT (1<<0) /* return default port number */
-#define CURLU_NO_DEFAULT_PORT (1<<1) /* act as if no port number was set,
- if the port number matches the
- default for the scheme */
-#define CURLU_DEFAULT_SCHEME (1<<2) /* return default scheme if
- missing */
-#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
-#define CURLU_PATH_AS_IS (1<<4) /* leave dot sequences */
-#define CURLU_DISALLOW_USER (1<<5) /* no user+password allowed */
-#define CURLU_URLDECODE (1<<6) /* URL decode on get */
-#define CURLU_URLENCODE (1<<7) /* URL encode on set */
-#define CURLU_APPENDQUERY (1<<8) /* append a form style part */
-#define CURLU_GUESS_SCHEME (1<<9) /* legacy curl-style guessing */
-
-typedef struct Curl_URL CURLU;
-
-/*
- * curl_url() creates a new CURLU handle and returns a pointer to it.
- * Must be freed with curl_url_cleanup().
- */
-CURL_EXTERN CURLU *curl_url(void);
-
-/*
- * curl_url_cleanup() frees the CURLU handle and related resources used for
- * the URL parsing. It will not free strings previously returned with the URL
- * API.
- */
-CURL_EXTERN void curl_url_cleanup(CURLU *handle);
-
-/*
- * curl_url_dup() duplicates a CURLU handle and returns a new copy. The new
- * handle must also be freed with curl_url_cleanup().
- */
-CURL_EXTERN CURLU *curl_url_dup(CURLU *in);
-
-/*
- * curl_url_get() extracts a specific part of the URL from a CURLU
- * handle. Returns error code. The returned pointer MUST be freed with
- * curl_free() afterwards.
- */
-CURL_EXTERN CURLUcode curl_url_get(CURLU *handle, CURLUPart what,
- char **part, unsigned int flags);
-
-/*
- * curl_url_set() sets a specific part of the URL in a CURLU handle. Returns
- * error code. The passed in string will be copied. Passing a NULL instead of
- * a part string, clears that part.
- */
-CURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,
- const char *part, unsigned int flags);
-
-
-#ifdef __cplusplus
-} /* end of extern "C" */
-#endif
-
-#endif