summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2000-11-28 06:58:22 +0000
committerBodo Möller <bodo@openssl.org>2000-11-28 06:58:22 +0000
commit24b44446e20b3e80999b18fd4f76316f7220b5cd (patch)
tree51302d4b691491cb10a9543733f5b09ebb1277c3
parent87739b2c53238f7185ab476b020183da35feb899 (diff)
Comments on SSL_peek deficiencies
-rw-r--r--ssl/s2_lib.c3
-rw-r--r--ssl/s3_lib.c4
-rw-r--r--ssl/ssl_lib.c7
3 files changed, 12 insertions, 2 deletions
diff --git a/ssl/s2_lib.c b/ssl/s2_lib.c
index 129ed89d97..a6f4db36c0 100644
--- a/ssl/s2_lib.c
+++ b/ssl/s2_lib.c
@@ -260,6 +260,9 @@ SSL_CIPHER *ssl2_get_cipher(unsigned int u)
int ssl2_pending(SSL *s)
{
+ /* Unlike ssl2_pending, this one probably works (if read-ahead
+ * is disabled), but it should be examined
+ * XXX */
return(s->s2->ract_data_length);
}
diff --git a/ssl/s3_lib.c b/ssl/s3_lib.c
index 184d4f47ff..b8ffbed646 100644
--- a/ssl/s3_lib.c
+++ b/ssl/s3_lib.c
@@ -638,10 +638,10 @@ SSL_CIPHER *ssl3_get_cipher(unsigned int u)
return(NULL);
}
-/* The problem is that it may not be the correct record type */
int ssl3_pending(SSL *s)
{
- return(s->s3->rrec.length);
+ /* The problem is that it may not be the correct record type */
+ return(s->s3->rrec.length); /* FIXME */
}
int ssl3_new(SSL *s)
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index ed2b820984..105bcb2fca 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -576,6 +576,13 @@ int SSL_get_read_ahead(SSL *s)
int SSL_pending(SSL *s)
{
+ /* SSL_pending cannot work properly if read-ahead is enabled
+ * (SSL_[CTX_]ctrl(..., SSL_CTRL_SET_READ_AHEAD, 1, NULL)),
+ * and it is impossible to fix since SSL_pending cannot report
+ * errors that may be observed while scanning the new data.
+ * (Note that SSL_pending() is often used as a boolean value,
+ * so we'd better not return -1.)
+ */
return(s->method->ssl_pending(s));
}