url.h (5320B)
1 #ifndef HEADER_CURL_URL_H 2 #define HEADER_CURL_URL_H 3 /*************************************************************************** 4 * _ _ ____ _ 5 * Project ___| | | | _ \| | 6 * / __| | | | |_) | | 7 * | (__| |_| | _ <| |___ 8 * \___|\___/|_| \_\_____| 9 * 10 * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 11 * 12 * This software is licensed as described in the file COPYING, which 13 * you should have received as part of this distribution. The terms 14 * are also available at https://curl.se/docs/copyright.html. 15 * 16 * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17 * copies of the Software, and permit persons to whom the Software is 18 * furnished to do so, under the terms of the COPYING file. 19 * 20 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21 * KIND, either express or implied. 22 * 23 * SPDX-License-Identifier: curl 24 * 25 ***************************************************************************/ 26 #include "curl_setup.h" 27 28 /* 29 * Prototypes for library-wide functions provided by url.c 30 */ 31 32 CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn); 33 CURLcode Curl_open(struct Curl_easy **curl); 34 CURLcode Curl_init_userdefined(struct Curl_easy *data); 35 36 void Curl_freeset(struct Curl_easy *data); 37 CURLcode Curl_uc_to_curlcode(CURLUcode uc); 38 CURLcode Curl_close(struct Curl_easy **datap); /* opposite of curl_open() */ 39 CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect); 40 CURLcode Curl_setup_conn(struct Curl_easy *data, 41 struct Curl_dns_entry *dns, 42 bool *protocol_done); 43 void Curl_conn_free(struct Curl_easy *data, struct connectdata *conn); 44 CURLcode Curl_parse_login_details(const char *login, const size_t len, 45 char **userptr, char **passwdptr, 46 char **optionsptr); 47 48 /* Attach/Clear/Get meta data for an easy handle. Needs to provide 49 * a destructor, will be automatically called when the easy handle 50 * is reset or closed. */ 51 typedef void Curl_meta_dtor(void *key, size_t key_len, void *meta_data); 52 53 /* Set the transfer meta data for the key. Any existing entry for that 54 * key will be destroyed. 55 * Takes ownership of `meta_data` and destroys it when the call fails. */ 56 CURLcode Curl_meta_set(struct Curl_easy *data, const char *key, 57 void *meta_data, Curl_meta_dtor *meta_dtor); 58 void Curl_meta_remove(struct Curl_easy *data, const char *key); 59 void *Curl_meta_get(struct Curl_easy *data, const char *key); 60 void Curl_meta_reset(struct Curl_easy *data); 61 62 /* Set connection meta data for the key. Any existing entry for that 63 * key will be destroyed. 64 * Takes ownership of `meta_data` and destroys it when the call fails. */ 65 CURLcode Curl_conn_meta_set(struct connectdata *conn, const char *key, 66 void *meta_data, Curl_meta_dtor *meta_dtor); 67 void Curl_conn_meta_remove(struct connectdata *conn, const char *key); 68 void *Curl_conn_meta_get(struct connectdata *conn, const char *key); 69 70 /* Get protocol handler for a URI scheme 71 * @param scheme URI scheme, case-insensitive 72 * @return NULL of handler not found 73 */ 74 const struct Curl_handler *Curl_get_scheme_handler(const char *scheme); 75 const struct Curl_handler *Curl_getn_scheme_handler(const char *scheme, 76 size_t len); 77 78 #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */ 79 #define CURL_DEFAULT_HTTPS_PROXY_PORT 443 /* default https proxy port unless 80 specified */ 81 82 #ifdef CURL_DISABLE_VERBOSE_STRINGS 83 #define Curl_verboseconnect(x,y,z) Curl_nop_stmt 84 #else 85 void Curl_verboseconnect(struct Curl_easy *data, struct connectdata *conn, 86 int sockindex); 87 #endif 88 89 /** 90 * Return TRUE iff the given connection is considered dead. 91 * @param nowp NULL or pointer to time being checked against. 92 */ 93 bool Curl_conn_seems_dead(struct connectdata *conn, 94 struct Curl_easy *data, 95 struct curltime *nowp); 96 97 /** 98 * Perform upkeep operations on the connection. 99 */ 100 CURLcode Curl_conn_upkeep(struct Curl_easy *data, 101 struct connectdata *conn, 102 struct curltime *now); 103 104 /** 105 * Always eval all arguments, return the first result != CURLE_OK. 106 * A non-short-circuit evaluation. 107 */ 108 CURLcode Curl_1st_err(CURLcode r1, CURLcode r2); 109 110 /** 111 * Always eval all arguments, return the first 112 * result != (CURLE_OK|CURLE_AGAIN) or `r1`. 113 * A non-short-circuit evaluation. 114 */ 115 CURLcode Curl_1st_fatal(CURLcode r1, CURLcode r2); 116 117 #if defined(USE_HTTP2) || defined(USE_HTTP3) 118 void Curl_data_priority_clear_state(struct Curl_easy *data); 119 #else 120 #define Curl_data_priority_clear_state(x) 121 #endif /* !(defined(USE_HTTP2) || defined(USE_HTTP3)) */ 122 123 #ifdef USE_NGHTTP2 124 CURLcode Curl_data_priority_add_child(struct Curl_easy *parent, 125 struct Curl_easy *child, 126 bool exclusive); 127 #else 128 #define Curl_data_priority_add_child(x, y, z) CURLE_NOT_BUILT_IN 129 #endif 130 131 #endif /* HEADER_CURL_URL_H */