Commit f8caa3c8 authored by Matt Caswell's avatar Matt Caswell
Browse files

Move s->s3->wpend_* to s->rlayer

parent 4aa7389e
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);
+8 −0
Original line number Diff line number Diff line
@@ -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;


+13 −13
Original line number Diff line number Diff line
@@ -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) {
                /*
+0 −5
Original line number Diff line number Diff line
@@ -1237,11 +1237,6 @@ typedef struct ssl3_state_st {
    int empty_fragment_done;
    /* The value of 'extra' when the buffers were initialized */
    int init_extra;
    /* partial write - check the numbers match */
    int wpend_tot;              /* number bytes written */
    int wpend_type;
    int wpend_ret;              /* number of bytes submitted */
    const unsigned char *wpend_buf;
    /* used during startup, digest all incoming/outgoing packets */
    BIO *handshake_buffer;
    /*