]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
added IO debugging code
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 23 Oct 2001 17:31:50 +0000 (17:31 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 23 Oct 2001 17:31:50 +0000 (17:31 +0000)
lib/Makefile.am
lib/io_debug.h [new file with mode: 0644]

index ed73fec8d22472c39bb8a222216bc37ef083d4c0..4271b123f3a1e95d9a7f908a35b58df8b4801e0c 100644 (file)
@@ -17,7 +17,7 @@ EXTRA_DIST = debug.h gnutls_compress.h defines.h pkcs1.asn pkix.asn \
        ext_dnsname.h gnutls_pk.h gnutls_record.h gnutls_cert.h \
        gnutls_privkey.h gnutls_constate.h gnutls_global.h x509_verify.h \
        gnutls_sig.h gnutls_mem.h x509_extensions.h gnutls_ui.h \
-       gnutls-api.tex
+       gnutls-api.tex io_debug.h
 
 lib_LTLIBRARIES = libgnutls.la
 
diff --git a/lib/io_debug.h b/lib/io_debug.h
new file mode 100644 (file)
index 0000000..68b04f1
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * This file is part of GNUTLS.
+ *
+ * GNUTLS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GNUTLS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+/* This debug file was contributed by 
+ * Paul Sheer <psheer@icon.co.za>
+ *
+ * It does return EAGAIN errors in recv() and
+ * send() calls in order to check, whether
+ * non blocking support is ok.
+ *
+ */
+
+#ifdef IO_DEBUG
+
+#include <gnutls_int.h>
+
+#define EDUNNO 11 /* EAGAIN */
+
+extern int errno;
+static int initialized_rand = 0;
+
+#define INITIALIZE_RAND if (initialized_rand==0) {\
+               srand(time(0)); \
+               initialized_rand = 1; \
+               }
+static int recv_debug (int fd, char *buf, int len, int flags)
+{
+    INITIALIZE_RAND;
+    
+    if (!(rand % 2)) {
+       errno = EDUNNO;
+       return -1;
+    }
+    if (len > 1)
+       len = 1;
+    return recv (fd, buf, len, flags);
+}
+
+#define recv recv_debug
+
+static int send_debug (int fd, char *buf, int len, int flags)
+{
+    INITIALIZE_RAND;
+    
+    if (!(rand() % 2)) {
+       errno = EDUNNO;
+       return -1;
+    }
+    if (len > 1)
+       len = 1;
+    return send (fd, buf, len, flags);
+}
+
+#define send send_debug
+
+#endif