url.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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, <[email protected]>, 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. * Prototypes for library-wide functions provided by url.c
  29. */
  30. CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn);
  31. CURLcode Curl_open(struct Curl_easy **curl);
  32. void Curl_init_userdefined(struct Curl_easy *data);
  33. void Curl_freeset(struct Curl_easy *data);
  34. CURLcode Curl_uc_to_curlcode(CURLUcode uc);
  35. CURLcode Curl_close(struct Curl_easy **datap); /* opposite of curl_open() */
  36. CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect);
  37. CURLcode Curl_setup_conn(struct Curl_easy *data,
  38. struct Curl_dns_entry *dns,
  39. bool *protocol_done);
  40. void Curl_conn_free(struct Curl_easy *data, struct connectdata *conn);
  41. CURLcode Curl_parse_login_details(const char *login, const size_t len,
  42. char **userptr, char **passwdptr,
  43. char **optionsptr);
  44. /* Attach/Clear/Get meta data for an easy handle. Needs to provide
  45. * a destructor, will be automatically called when the easy handle
  46. * is reset or closed. */
  47. typedef void Curl_meta_dtor(void *key, size_t key_len, void *meta_data);
  48. /* Set the transfer meta data for the key. Any existing entry for that
  49. * key will be destroyed.
  50. * Takes ownership of `meta_data` and destroys it when the call fails. */
  51. CURLcode Curl_meta_set(struct Curl_easy *data, const char *key,
  52. void *meta_data, Curl_meta_dtor *meta_dtor);
  53. void Curl_meta_remove(struct Curl_easy *data, const char *key);
  54. void *Curl_meta_get(struct Curl_easy *data, const char *key);
  55. void Curl_meta_reset(struct Curl_easy *data);
  56. /* Set connection meta data for the key. Any existing entry for that
  57. * key will be destroyed.
  58. * Takes ownership of `meta_data` and destroys it when the call fails. */
  59. CURLcode Curl_conn_meta_set(struct connectdata *conn, const char *key,
  60. void *meta_data, Curl_meta_dtor *meta_dtor);
  61. void Curl_conn_meta_remove(struct connectdata *conn, const char *key);
  62. void *Curl_conn_meta_get(struct connectdata *conn, const char *key);
  63. /* Get protocol handler for a URI scheme
  64. * @param scheme URI scheme, case-insensitive
  65. * @return NULL of handler not found
  66. */
  67. const struct Curl_handler *Curl_get_scheme_handler(const char *scheme);
  68. const struct Curl_handler *Curl_getn_scheme_handler(const char *scheme,
  69. size_t len);
  70. #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */
  71. #define CURL_DEFAULT_HTTPS_PROXY_PORT 443 /* default https proxy port unless
  72. specified */
  73. /**
  74. * Return TRUE iff the given connection is considered dead.
  75. * @param nowp NULL or pointer to time being checked against.
  76. */
  77. bool Curl_conn_seems_dead(struct connectdata *conn,
  78. struct Curl_easy *data,
  79. struct curltime *nowp);
  80. /**
  81. * Perform upkeep operations on the connection.
  82. */
  83. CURLcode Curl_conn_upkeep(struct Curl_easy *data,
  84. struct connectdata *conn,
  85. struct curltime *now);
  86. /**
  87. * Always eval all arguments, return the first result != CURLE_OK.
  88. * A non-short-circuit evaluation.
  89. */
  90. CURLcode Curl_1st_err(CURLcode r1, CURLcode r2);
  91. /**
  92. * Always eval all arguments, return the first
  93. * result != (CURLE_OK|CURLE_AGAIN) or `r1`.
  94. * A non-short-circuit evaluation.
  95. */
  96. CURLcode Curl_1st_fatal(CURLcode r1, CURLcode r2);
  97. #if defined(USE_HTTP2) || defined(USE_HTTP3)
  98. void Curl_data_priority_clear_state(struct Curl_easy *data);
  99. #else
  100. #define Curl_data_priority_clear_state(x)
  101. #endif /* USE_HTTP2 || USE_HTTP3 */
  102. #ifdef USE_NGHTTP2
  103. CURLcode Curl_data_priority_add_child(struct Curl_easy *parent,
  104. struct Curl_easy *child,
  105. bool exclusive);
  106. #else
  107. #define Curl_data_priority_add_child(x, y, z) CURLE_NOT_BUILT_IN
  108. #endif
  109. #endif /* HEADER_CURL_URL_H */