* for which no specific BIO method is available.
* See ssl/ssltest.c for some hints on how this can be used. */
+#ifndef BIO_PAIR_DEBUG
+# undef NDEBUG /* avoid conflicting definitions */
+# define NDEBUG
+#endif
+
#include <assert.h>
#include <stdlib.h>
#include <string.h>
size_t size;
char *buf; /* "size" elements (if != NULL) */
- size_t request; /* valid iff peer != NULL; 0 if len != 0;
+ size_t request; /* valid iff peer != NULL; 0 if len != 0,
* otherwise set by peer to number of bytes
- * it (unsuccesfully) tried to read. */
+ * it (unsuccesfully) tried to read,
+ * never more than buffer space (size-len) warrants. */
};
static int bio_new(BIO *bio)
if (size <= peer_b->size)
peer_b->request = size;
else
- peer_b->request = peer_b->size; /* don't ask for more than
- * the peer can deliver
- * in one write */
+ /* don't ask for more than the peer can
+ * deliver in one write */
+ peer_b->request = peer_b->size;
return -1;
}
}
BIOerr(BIO_F_BIO_CTRL, BIO_R_IN_USE);
ret = 0;
}
+ else if (num == 0)
+ {
+ BIOerr(BIO_F_BIO_CTRL, BIO_R_INVALID_ARGUMENT);
+ ret = 0;
+ }
else
{
size_t new_size = num;
case BIO_CTRL_PENDING:
if (b->peer != NULL)
{
- struct bio_bio_st *peer_b =b->peer->ptr;
+ struct bio_bio_st *peer_b = b->peer->ptr;
ret = (long) peer_b->len;
}
}
size_t BIO_ctrl_get_write_guarantee(BIO *bio)
- {
+ {
return BIO_ctrl(bio, BIO_C_GET_WRITE_GUARANTEE, 0, NULL);
}
-size_t BIO_ctrl_read_request(BIO *bio)
- {
+size_t BIO_ctrl_get_read_request(BIO *bio)
+ {
return BIO_ctrl(bio, BIO_C_GET_READ_REQUEST, 0, NULL);
}