From b0083e50ffdb11c155fab2c1d0df254e0cac1858 Mon Sep 17 00:00:00 2001 From: Nathan Wagner Date: Fri, 15 Feb 2019 18:31:57 +0000 Subject: [PATCH] add missing file --- crypto/https.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 crypto/https.c diff --git a/crypto/https.c b/crypto/https.c new file mode 100644 index 0000000..bdec709 --- /dev/null +++ b/crypto/https.c @@ -0,0 +1,54 @@ +#define _POSIX_C_SOURCE 200112L +#include +#include +#include +#include +#include +#include + +int open_tcp_connection(char *host, int port) { + int sock, rv; + struct addrinfo hint = { 0 }; + struct addrinfo *addr; + + hint.ai_family = AF_INET; + hint.ai_socktype = SOCK_STREAM; + + rv = getaddrinfo(host, NULL, &hint, &addr); + if (rv != 0) { + perror(gai_strerror(rv)); + return -1; + } + + ((struct sockaddr_in *)addr->ai_addr)->sin_port = htons(port); + + sock = socket(PF_INET, SOCK_STREAM, 0); + if (sock != -1) { + if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) { + perror("can't connect"); + close(sock); + sock = -1; + } + } + freeaddrinfo(addr); + return sock; +} + +#if 0 +int main(int ac, char **av) { + int socket; + char *req = "GET / HTTP/1.1\r\nHost: granicus.if.org\r\nConnection: close\r\n\r\n"; + ssize_t bytes; + char buffer[1024]; + + socket = open_tcp_connection(av[1], 80); + write(socket, req, strlen(req)); + while ((bytes = read(socket, buffer, sizeof buffer)) > 0) { + write(1, buffer, bytes); + } + + close(socket); + return 0; + +} +#endif -- 2.40.0