- fix mis calculation of read_left if queue already has some data, which might not be bigger than ssl_header_size

- update q->ptr only if q->data is changed
This commit is contained in:
Alper Akcan 2017-06-10 16:12:52 +03:00
parent 2c602e876a
commit e6cd50ed6c

View file

@ -347,7 +347,9 @@ static int read_ssl_record(obj,q,seg,offset,lastp,offsetp)
switch(q->state){ switch(q->state){
case SSL_READ_NONE: case SSL_READ_NONE:
q->read_left=SSL_HEADER_SIZE; if (SSL_HEADER_SIZE<q->len)
ABORT(-1);
q->read_left=SSL_HEADER_SIZE-q->len;
if(r=read_data(q,seg,offset,&last,&offset)) if(r=read_data(q,seg,offset,&last,&offset))
ABORT(r); ABORT(r);
@ -374,9 +376,9 @@ static int read_ssl_record(obj,q,seg,offset,lastp,offsetp)
if(!(q->data=realloc(q->data,rec_len+5))) if(!(q->data=realloc(q->data,rec_len+5)))
ABORT(R_NO_MEMORY); ABORT(R_NO_MEMORY);
q->_allocated=rec_len+SSL_HEADER_SIZE; q->_allocated=rec_len+SSL_HEADER_SIZE;
q->ptr=q->data+SSL_HEADER_SIZE;
}; };
q->ptr=q->data+SSL_HEADER_SIZE;
q->read_left=rec_len; q->read_left=rec_len;
case SSL_READ_HEADER: case SSL_READ_HEADER: