diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-10-23 17:31:50 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2001-10-23 17:31:50 +0000 |
commit | d782a44f1c756dfa19b395ad30e8564b6c7a607a (patch) | |
tree | 13bf037bb6fb05b8ab843d3158758b0c2d1e5acb | |
parent | 9b82d27b2872cdf7fc28ae17259a88dfac10db13 (diff) | |
download | gnutls-d782a44f1c756dfa19b395ad30e8564b6c7a607a.tar.gz |
added IO debugging code
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/io_debug.h | 71 |
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 |