int ssl2_part_read(SSL *s, unsigned long f, int i)
	{
	unsigned char *p;
	int j;

	if (i < 0)
		{
		/* ssl2_return_error(s); */
		/* for non-blocking io,
		 * this is not necessarily fatal */
		return(i);
		}
	else
		{
		s->init_num+=i;

		/* Check for error.  While there are recoverable errors,
		 * this function is not called when those must be expected;
		 * any error detected here is fatal. */
		if (s->init_num >= 3)
			{
			p=(unsigned char *)s->init_buf->data;
			if (p[0] == SSL2_MT_ERROR)
				{
				j=(p[1]<<8)|p[2];
				SSLerr((int)f,ssl_mt_error(j));
				s->init_num -= 3;
				if (s->init_num > 0)
					memmove(p, p+3, s->init_num);
				}
			}

		/* If it's not an error message, we have some error anyway --
		 * the message was shorter than expected.  This too is treated
		 * as fatal (at least if SSL_get_error is asked for its opinion). */
		return(0);
		}
	}
int ssl2_part_read(SSL *s, unsigned long f, int i)
	{
	unsigned char *p;
	int j;

	if (i < 0)
		{
		 
		 
		return(i);
		}
	else
		{
		s->init_num+=i;

		 
		if (s->init_num >= 3)
			{
			p=(unsigned char *)s->init_buf->data;
			if (p[0] == SSL2_MT_ERROR)
				{
				j=(p[1]<<8)|p[2];
				SSLerr((int)f,ssl_mt_error(j));
				s->init_num -= 3;
				if (s->init_num > 0)
					memmove(p, p+3, s->init_num);
				}
			}

		 
		return(0);
		}
	}