summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2001-10-23 17:31:50 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2001-10-23 17:31:50 +0000
commitd782a44f1c756dfa19b395ad30e8564b6c7a607a (patch)
tree13bf037bb6fb05b8ab843d3158758b0c2d1e5acb
parent9b82d27b2872cdf7fc28ae17259a88dfac10db13 (diff)
downloadgnutls-d782a44f1c756dfa19b395ad30e8564b6c7a607a.tar.gz
added IO debugging code
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/io_debug.h71
2 files changed, 72 insertions, 1 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
index ed73fec8d2..4271b123f3 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -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
index 0000000000..68b04f1f51
--- /dev/null
+++ b/lib/io_debug.h
@@ -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