--- grip-2.96/cddb.c.buffer	2001-07-16 12:05:54.000000000 -0400
+++ grip-2.96/cddb.c	2005-03-16 15:02:09.000000000 -0500
@@ -298,6 +298,12 @@
 
   CDDBReadLine(socket,inbuffer,256);
 
+  if (*inbuffer == '\0') {
+	  query->query_match=MATCH_NOMATCH;
+	  CDDBDisconnect(socket);
+	  return FALSE;
+  }
+
   /* Skip the keep-alive */
   if((strlen(inbuffer)<5)||!strncmp(inbuffer,"Keep",4)) {
     Debug("Skipping keepalive\n");
@@ -327,7 +333,7 @@
     query->query_match=MATCH_INEXACT;
     query->query_matches=0;
 
-    while(!CDDBReadLine(socket,inbuffer,256)) {
+    while(query->query_matches < MAX_INEXACT_MATCHES && !CDDBReadLine(socket,inbuffer,256)) {
       query->query_list[query->query_matches].list_genre=
 	CDDBGenreValue(ChopWhite(strtok(inbuffer," ")));
       
