|  | @@ -4971,6 +4971,28 @@ pull_inner(FILE *fp,
 | 
	
		
			
				|  |  |  		err = (nread < 0) ? ERRNO : 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #ifndef NO_SSL
 | 
	
		
			
				|  |  | +	} else if (conn->ssl != NULL && SSL_pending(conn->ssl) > 0) {
 | 
	
		
			
				|  |  | +		/* We already know there is no more data buffered in conn->buf
 | 
	
		
			
				|  |  | +		 * but there is more available in the SSL layer. So don't poll
 | 
	
		
			
				|  |  | +		 * conn->client.sock yet. */
 | 
	
		
			
				|  |  | +		int this_len = SSL_pending(conn->ssl);
 | 
	
		
			
				|  |  | +		if (this_len > len)
 | 
	
		
			
				|  |  | +			this_len = len;
 | 
	
		
			
				|  |  | +		nread = SSL_read(conn->ssl, buf, this_len);
 | 
	
		
			
				|  |  | +		if (nread <= 0) {
 | 
	
		
			
				|  |  | +			err = SSL_get_error(conn->ssl, nread);
 | 
	
		
			
				|  |  | +			if ((err == SSL_ERROR_SYSCALL) && (nread == -1)) {
 | 
	
		
			
				|  |  | +				err = ERRNO;
 | 
	
		
			
				|  |  | +			} else if ((err == SSL_ERROR_WANT_READ)
 | 
	
		
			
				|  |  | +			           || (err == SSL_ERROR_WANT_WRITE)) {
 | 
	
		
			
				|  |  | +				nread = 0;
 | 
	
		
			
				|  |  | +			} else {
 | 
	
		
			
				|  |  | +				DEBUG_TRACE("SSL_read() failed, error %d", err);
 | 
	
		
			
				|  |  | +				return -1;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			err = 0;
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	} else if (conn->ssl != NULL) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		struct pollfd pfd[1];
 |