Problema con luasocket

Estoy tratando de leer algunos datos (binarios) de un socket lua, pero el código anterior no termina el ciclo de repetición. ¿Cómo puedo saber que el final de la transmisión ha llegado?

client = require("socket")
client = socket.connect("www.google.com",80)
client:send("GET / HTTP/1.1\n\n")
repeat
  print "read"
  line = client:receive(512)
  print "read done"
  print(#line)
until line==""

print "all done"

Output is
read
read done
512
read

Actualiza

Parece ser el problema que el formulario de recepción (número) espera un número exacto de bytes y los espera. Pero si no sé cuántos bytes quedan, ¿cómo hacer eso? (la solicitud http es solo un ejemplo; me refiero a una solicitud genérica para leer bytes de un socket)

lua 5.1.3

Respuestas a la pregunta(1)

Su respuesta a la pregunta