]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/blobdiff - tests/client.c
Use gnutls_transport_set_int() if available.
[tlsproxy/tlsproxy.git] / tests / client.c
index 51429107c40c83c14c54bad8e50779721256ee99..fe10c8ce8b1f0983375797b1d44dcc9c548d1abe 100644 (file)
@@ -39,6 +39,12 @@ static int fdopen_read_write(int socket, FILE **read_fd, FILE **write_fd);
 static int connect_to_host(const char *hostname, const char *port);
 static int read_http_request(FILE *client_fd, char *request, size_t length);
 
+#if 0
+static void log_function_gnutls(int level, const char *string) {
+    (void)level;
+    fprintf(stderr, "    => %s", string);
+}
+#endif
 
 int main (int argc, char *argv[]) {
     int result, response;
@@ -65,6 +71,11 @@ int main (int argc, char *argv[]) {
     gnutls_global_init();
     gnutls_certificate_allocate_credentials(&xcred);
 
+#if 0
+    gnutls_global_set_log_level(10);
+    gnutls_global_set_log_function(log_function_gnutls);
+#endif
+
     gnutls_certificate_set_x509_trust_file(xcred,
                                            argv[1], GNUTLS_X509_FMT_PEM);
 
@@ -104,7 +115,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) {
@@ -153,6 +169,11 @@ int main (int argc, char *argv[]) {
 
     gnutls_x509_crt_deinit(cert);
 
+    /* Send a bogus request to the server. Otherwise recent gnutls-serv won't
+     * terminate the connection when gnutls_bye() is used. */
+    gnutls_record_send(session, "GET / HTTP/1.0\r\n\r\n",
+                                strlen("GET / HTTP/1.0\r\n\r\n"));
+
     gnutls_bye(session, GNUTLS_SHUT_RDWR);
     fclose(fd_read);
     fclose(fd_write);