X-Git-Url: https://ruderich.org/simon/gitweb/?p=tlsproxy%2Ftlsproxy.git;a=blobdiff_plain;f=tests%2Fclient.c;h=7ed4f05a1519de553a18ef46d381ec5c763d9951;hp=028189a24d44843c932955c5bcf0b6a6addc5975;hb=7eba49d24d56288d83746f3f0ce383d7c0c36552;hpb=23787d573fd2e4f31c1205f17c5d90fd5516a3fc diff --git a/tests/client.c b/tests/client.c index 028189a..7ed4f05 100644 --- a/tests/client.c +++ b/tests/client.c @@ -1,7 +1,7 @@ /* * Simple GnuTLS client used for testing. * - * Copyright (C) 2011-2013 Simon Ruderich + * Copyright (C) 2011-2014 Simon Ruderich * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +20,9 @@ #include #include +#include #include +#include #include #include #include @@ -98,7 +100,7 @@ int main (int argc, char *argv[]) { } fprintf(fd_write, "\r\n"); fflush(fd_write); - if (read_http_request(fd_read, buffer, sizeof(buffer)) == -1) { + if (read_http_request(fd_read, buffer, sizeof(buffer)) != 0) { fprintf(stderr, "invalid proxy response\n"); return EXIT_FAILURE; } @@ -115,7 +117,12 @@ int main (int argc, char *argv[]) { return EXIT_FAILURE; } +#ifdef HAVE_GNUTLS_TRANSPORT_SET_INT2 + /* gnutls_transport_set_int() is a macro. */ + gnutls_transport_set_int(session, server); +#else gnutls_transport_set_ptr(session, (gnutls_transport_ptr_t)server); +#endif result = gnutls_handshake(session); if (result != GNUTLS_E_SUCCESS) { @@ -219,8 +226,10 @@ static int connect_to_host(const char *hostname, const char *port) { gai_hints.ai_socktype = SOCK_STREAM; gai_hints.ai_protocol = 0; gai_hints.ai_flags = AI_NUMERICSERV /* given port is numeric */ +#ifdef AI_ADDRCONFIG | AI_ADDRCONFIG /* supported by this computer */ - | AI_V4MAPPED; /* support IPv4 through IPv6 */ +#endif + ; gai_return = getaddrinfo(hostname, port, &gai_hints, &gai_result); if (gai_return != 0) { if (gai_return == EAI_SYSTEM) { @@ -264,6 +273,7 @@ static int connect_to_host(const char *hostname, const char *port) { static int read_http_request(FILE *client_fd, char *request, size_t length) { char buffer[MAX_REQUEST_LINE]; + assert(length <= INT_MAX); if (fgets(request, (int)length, client_fd) == NULL) { if (ferror(client_fd)) { perror("read_http_request(): fgets()"); @@ -282,6 +292,8 @@ static int read_http_request(FILE *client_fd, char *request, size_t length) { if (ferror(client_fd)) { perror("read_http_request(): fgets()"); return -1; + } else if (feof(client_fd)) { + return -2; } return 0;