int ret;  clear_sys_error(); if (s->s3->renegotiate) ssl3_renegotiate_check(s); s->s3->in_read_app_data=1; ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len); if ((ret == -1) && (s->s3->in_read_app_data == 0)) {  s->in_handshake++; ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len); s->in_handshake--; } else s->s3->in_read_app_data=0;  return(ret);
return ssl3_read_internal(s, buf, len, 0);
int ssl3_read(SSL *s, void *buf, int len)	{	int ret;		clear_sys_error();	if (s->s3->renegotiate) ssl3_renegotiate_check(s);	s->s3->in_read_app_data=1;	ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len);	if ((ret == -1) && (s->s3->in_read_app_data == 0))		{		/* ssl3_read_bytes decided to call s->handshake_func, which		 * called ssl3_read_bytes to read handshake data.		 * However, ssl3_read_bytes actually found application data		 * and thinks that application data makes sense here (signalled		 * by resetting 'in_read_app_data', strangely); so disable		 * handshake processing and try to read application data again. */		s->in_handshake++;		ret=ssl3_read_bytes(s,SSL3_RT_APPLICATION_DATA,buf,len);		s->in_handshake--;		}	else		s->s3->in_read_app_data=0;	return(ret);	}