123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #if defined(CONFIG_USING_TLS)
- #include "http_tls.h"
- #include "http_parser.h"
- static int get_port(const char *url, struct http_parser_url *u)
- {
- if (u->field_data[UF_PORT].len) {
- return strtol(&url[u->field_data[UF_PORT].off], NULL, 10);
- } else {
- if (strncasecmp(&url[u->field_data[UF_SCHEMA].off], "http", u->field_data[UF_SCHEMA].len) == 0) {
- return 80;
- } else if (strncasecmp(&url[u->field_data[UF_SCHEMA].off], "https", u->field_data[UF_SCHEMA].len) == 0) {
- return 443;
- }
- }
- return 0;
- }
- /**
- * @brief Create a new TLS/SSL connection with a given "HTTP" url
- */
- tls_t *tls_conn_http_new(const char *url, const tls_cfg_t *cfg)
- {
- /* Parse URI */
- struct http_parser_url u;
- http_parser_url_init(&u);
- http_parser_parse_url(url, strlen(url), 0, &u);
- /* Connect to host */
- return tls_conn_new(&url[u.field_data[UF_HOST].off], u.field_data[UF_HOST].len,
- get_port(url, &u), cfg);
- }
- /**
- * @brief Create a new non-blocking TLS/SSL connection with a given "HTTP" url
- */
- int tls_conn_http_new_async(const char *url, const tls_cfg_t *cfg, tls_t *tls)
- {
- /* Parse URI */
- struct http_parser_url u;
- http_parser_url_init(&u);
- http_parser_parse_url(url, strlen(url), 0, &u);
- /* Connect to host */
- return tls_conn_new_async(&url[u.field_data[UF_HOST].off], u.field_data[UF_HOST].len,
- get_port(url, &u), cfg, tls);
- }
- #endif
|