Why does SSL_pending return 0 after SSL_read reads 1,400 bytes?
    while(1)
	{
		read_blocked_on_write=0;

		const int buff_len = 1024;
		char buff[buff_len];

		iResult = SSL_read(ssl, buff, buff_len);

		int ssl_err = SSL_get_error(ssl, iResult);
		if(ssl_err == SSL_ERROR_NONE)
		{
			if(offset + iResult > recvbuflen - 1)
			{
				FD_ZERO(&fdread);
				FD_ZERO(&fdwrite);
				MessageBox(hwnd, TEXT("ERROR"), TEXT("Not enough memory!"), MB_OK | MB_ICONERROR);
				return 1;
			}
			memcpy(recvbuf + offset, buff, iResult);
			offset += iResult;
			if(SSL_pending(ssl))
			{
				continue;
			}
			else
			{
				bFinish = true;
				break;
			}
		}
		else if(ssl_err == SSL_ERROR_ZERO_RETURN)
		{
			bFinish = true;
			break;
		}
		else if(ssl_err == SSL_ERROR_WANT_READ)
		{
			break;
		}
		else if(ssl_err == SSL_ERROR_WANT_WRITE)
		{
			/* We get a WANT_WRITE if we're
			trying to rehandshake and we block on
			a write during that rehandshake.

			We need to wait on the socket to be 
			writeable but reinitiate the read
			when it is */
			read_blocked_on_write=1;
			break;
		}
		else
		{
			FD_ZERO(&fdread);
			FD_ZERO(&fdwrite);
			MessageBox(hwnd, TEXT("ERROR"), TEXT("SSL problem!"), MB_OK | MB_ICONERROR);
			return 1;
		}
	}
Why does SSL_pending return 0 after SSL_read reads 1,400 bytes?
===

    while(1)
	{
		read_blocked_on_write=0;

		const int buff_len = 1024;
		char buff[buff_len];

		iResult = SSL_read(ssl, buff, buff_len);

		int ssl_err = SSL_get_error(ssl, iResult);
		if(ssl_err == SSL_ERROR_NONE)
		{
			if(offset + iResult > recvbuflen - 1)
			{
				FD_ZERO(&fdread);
				FD_ZERO(&fdwrite);
				MessageBox(hwnd, TEXT("ERROR"), TEXT("Not enough memory!"), MB_OK | MB_ICONERROR);
				return 1;
			}
			memcpy(recvbuf + offset, buff, iResult);
			offset += iResult;
			if(SSL_pending(ssl))
			{
				continue;
			}
			else
			{
				bFinish = true;
				break;
			}
		}
		else if(ssl_err == SSL_ERROR_ZERO_RETURN)
		{
			bFinish = true;
			break;
		}
		else if(ssl_err == SSL_ERROR_WANT_READ)
		{
			break;
		}
		else if(ssl_err == SSL_ERROR_WANT_WRITE)
		{
			/* We get a WANT_WRITE if we're
			trying to rehandshake and we block on
			a write during that rehandshake.

			We need to wait on the socket to be 
			writeable but reinitiate the read
			when it is */
			read_blocked_on_write=1;
			break;
		}
		else
		{
			FD_ZERO(&fdread);
			FD_ZERO(&fdwrite);
			MessageBox(hwnd, TEXT("ERROR"), TEXT("SSL problem!"), MB_OK | MB_ICONERROR);
			return 1;
		}
	}