}
/*
- * Return values are as per SSL_read(), i.e.
- * 1 Success
- * 0 Failure (not retryable)
- * <0 Failure (may be retryable)
+ * Return values are as per SSL_read()
*/
int ssl3_read_n(SSL *s, size_t n, size_t max, int extend, int clearold,
- size_t *read)
+ size_t *readbytes)
{
/*
* If extend == 0, obtain new n-byte packet; if extend == 1, increase
s->rlayer.packet_length += n;
rb->left = left - n;
rb->offset += n;
- *read = n;
+ *readbytes = n;
return 1;
}
/* else we need to read more data */
- if (n > (rb->len - rb->offset)) { /* does not happen */
+ if (n > rb->len - rb->offset) { /* does not happen */
SSLerr(SSL_F_SSL3_READ_N, ERR_R_INTERNAL_ERROR);
return -1;
}
else {
if (max < n)
max = n;
- if (max > (rb->len - rb->offset))
+ if (max > rb->len - rb->offset)
max = rb->len - rb->offset;
}
while (left < n) {
- size_t bioread;
+ size_t bioread = 0;
int ret;
/*
if (s->mode & SSL_MODE_RELEASE_BUFFERS && !SSL_IS_DTLS(s))
if (len + left == 0)
ssl3_release_read_buffer(s);
- return -1;
+ return ret;
}
left += bioread;
/*
rb->left = left - n;
s->rlayer.packet_length += n;
s->rwstate = SSL_NOTHING;
- *read = n;
+ *readbytes = n;
return 1;
}
return i;
}
- if ((tmpwrit == n) ||
+ if (tmpwrit == n ||
(type == SSL3_RT_APPLICATION_DATA &&
(s->mode & SSL_MODE_ENABLE_PARTIAL_WRITE))) {
/*
*/
if (!SSL_USE_ETM(s) && mac_size != 0) {
- if (s->method->ssl3_enc->mac(s, &wr[j],
- &(outbuf[j][wr[j].length + eivlen]),
- 1) < 0)
+ if (!s->method->ssl3_enc->mac(s, &wr[j],
+ &(outbuf[j][wr[j].length + eivlen]),
+ 1))
goto err;
SSL3_RECORD_add_length(&wr[j], mac_size);
}
for (j = 0; j < numpipes; j++) {
if (SSL_USE_ETM(s) && mac_size != 0) {
- if (s->method->ssl3_enc->mac(s, &wr[j],
- outbuf[j] + wr[j].length, 1) < 0)
+ if (!s->method->ssl3_enc->mac(s, &wr[j],
+ outbuf[j] + wr[j].length, 1))
goto err;
SSL3_RECORD_add_length(&wr[j], mac_size);
}
/* if s->s3->wbuf.left != 0, we need to call this
*
- * Return values are as per SSL_read(), i.e.
- * 1 Success
- * 0 Failure (not retryable)
- * <0 Failure (may be retryable)
+ * Return values are as per SSL_write()
*/
int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, size_t len,
size_t *written)
int i;
SSL3_BUFFER *wb = s->rlayer.wbuf;
size_t currbuf = 0;
- size_t tmpwrit;
+ size_t tmpwrit = 0;
if ((s->rlayer.wpend_tot > len)
|| ((s->rlayer.wpend_buf != buf) &&
*/
SSL3_BUFFER_set_left(&wb[currbuf], 0);
}
- return -1;
+ return (i);
}
SSL3_BUFFER_add_offset(&wb[currbuf], tmpwrit);
SSL3_BUFFER_sub_left(&wb[currbuf], tmpwrit);
* none of our business
*/
int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
- size_t len, int peek, size_t *read)
+ size_t len, int peek, size_t *readbytes)
{
int al, i, j, ret;
- size_t n, curr_rec, num_recs, read_bytes;
+ size_t n, curr_rec, num_recs, totalbytes;
SSL3_RECORD *rr;
SSL3_BUFFER *rbuf;
void (*cb) (const SSL *ssl, int type2, int val) = NULL;
if (recvd_type != NULL)
*recvd_type = SSL3_RT_HANDSHAKE;
- *read = n;
+ *readbytes = n;
return 1;
}
if (len == 0)
return 0;
- read_bytes = 0;
+ totalbytes = 0;
do {
- if (len - read_bytes > SSL3_RECORD_get_length(rr))
+ if (len - totalbytes > SSL3_RECORD_get_length(rr))
n = SSL3_RECORD_get_length(rr);
else
- n = len - read_bytes;
+ n = len - totalbytes;
memcpy(buf, &(rr->data[rr->off]), n);
buf += n;
curr_rec++;
rr++;
}
- read_bytes += n;
+ totalbytes += n;
} while (type == SSL3_RT_APPLICATION_DATA && curr_rec < num_recs
- && read_bytes < len);
- if (read_bytes == 0) {
+ && totalbytes < len);
+ if (totalbytes == 0) {
/* We must have read empty records. Get more data */
goto start;
}
&& (s->mode & SSL_MODE_RELEASE_BUFFERS)
&& SSL3_BUFFER_get_left(rbuf) == 0)
ssl3_release_read_buffer(s);
- *read = read_bytes;
+ *readbytes = totalbytes;
return 1;
}