summaryrefslogtreecommitdiffstats
path: root/ssl/record
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-02-03 13:22:12 +0000
committerMatt Caswell <matt@openssl.org>2015-03-26 15:02:00 +0000
commitf8caa3c813bcf9c621f8576eeba8a0df67596dac (patch)
treecc87a894bf67458f4bb5efd235f07df87fbcac8f /ssl/record
parent4aa7389e6c5509416d1672c7adddd1476dc1af09 (diff)
Move s->s3->wpend_* to s->rlayer
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'ssl/record')
-rw-r--r--ssl/record/d1_pkt.c8
-rw-r--r--ssl/record/rec_layer.h8
-rw-r--r--ssl/record/s3_pkt.c26
3 files changed, 25 insertions, 17 deletions
diff --git a/ssl/record/d1_pkt.c b/ssl/record/d1_pkt.c
index 5df1d3043a..3b69d8eb41 100644
--- a/ssl/record/d1_pkt.c
+++ b/ssl/record/d1_pkt.c
@@ -1212,10 +1212,10 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
* memorize arguments so that ssl3_write_pending can detect bad write
* retries later
*/
- s->s3->wpend_tot = len;
- s->s3->wpend_buf = buf;
- s->s3->wpend_type = type;
- s->s3->wpend_ret = len;
+ s->rlayer.wpend_tot = len;
+ s->rlayer.wpend_buf = buf;
+ s->rlayer.wpend_type = type;
+ s->rlayer.wpend_ret = len;
/* we now just need to write the buffer */
return ssl3_write_pending(s, type, buf, len);
diff --git a/ssl/record/rec_layer.h b/ssl/record/rec_layer.h
index 0123c5682c..c81c6ce5e0 100644
--- a/ssl/record/rec_layer.h
+++ b/ssl/record/rec_layer.h
@@ -166,6 +166,14 @@ typedef struct record_layer_st {
unsigned int alert_fragment_len;
unsigned char handshake_fragment[4];
unsigned int handshake_fragment_len;
+
+ /* partial write - check the numbers match */
+ /* number bytes written */
+ int wpend_tot;
+ int wpend_type;
+ /* number of bytes submitted */
+ int wpend_ret;
+ const unsigned char *wpend_buf;
} RECORD_LAYER;
diff --git a/ssl/record/s3_pkt.c b/ssl/record/s3_pkt.c
index fea7dbbb03..88209299a0 100644
--- a/ssl/record/s3_pkt.c
+++ b/ssl/record/s3_pkt.c
@@ -467,7 +467,7 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
* will happen with non blocking IO
*/
if (wb->left != 0) {
- i = ssl3_write_pending(s, type, &buf[tot], s->s3->wpend_tot);
+ i = ssl3_write_pending(s, type, &buf[tot], s->rlayer.wpend_tot);
if (i <= 0) {
/* XXX should we ssl3_release_write_buffer if i<0? */
s->rlayer.wnum = tot;
@@ -579,10 +579,10 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
wb->offset = 0;
wb->left = packlen;
- s->s3->wpend_tot = nw;
- s->s3->wpend_buf = &buf[tot];
- s->s3->wpend_type = type;
- s->s3->wpend_ret = nw;
+ s->rlayer.wpend_tot = nw;
+ s->rlayer.wpend_buf = &buf[tot];
+ s->rlayer.wpend_type = type;
+ s->rlayer.wpend_ret = nw;
i = ssl3_write_pending(s, type, &buf[tot], nw);
if (i <= 0) {
@@ -863,10 +863,10 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
* memorize arguments so that ssl3_write_pending can detect bad write
* retries later
*/
- s->s3->wpend_tot = len;
- s->s3->wpend_buf = buf;
- s->s3->wpend_type = type;
- s->s3->wpend_ret = len;
+ s->rlayer.wpend_tot = len;
+ s->rlayer.wpend_buf = buf;
+ s->rlayer.wpend_type = type;
+ s->rlayer.wpend_ret = len;
/* we now just need to write the buffer */
return ssl3_write_pending(s, type, buf, len);
@@ -882,10 +882,10 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
SSL3_BUFFER *wb = &s->rlayer.wbuf;
/* XXXX */
- if ((s->s3->wpend_tot > (int)len)
- || ((s->s3->wpend_buf != buf) &&
+ if ((s->rlayer.wpend_tot > (int)len)
+ || ((s->rlayer.wpend_buf != buf) &&
!(s->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER))
- || (s->s3->wpend_type != type)) {
+ || (s->rlayer.wpend_type != type)) {
SSLerr(SSL_F_SSL3_WRITE_PENDING, SSL_R_BAD_WRITE_RETRY);
return (-1);
}
@@ -905,7 +905,7 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
wb->left = 0;
wb->offset += i;
s->rwstate = SSL_NOTHING;
- return (s->s3->wpend_ret);
+ return (s->rlayer.wpend_ret);
} else if (i <= 0) {
if (s->version == DTLS1_VERSION || s->version == DTLS1_BAD_VER) {
/*