diff --git a/VersionNum b/VersionNum
index 5e48a8fa89304b2b5c0d2a542daef59b19001ac3..f992d6dd675cf7bfa1dff11ef92de68440a65b39 100644
--- a/VersionNum
+++ b/VersionNum
@@ -1,14 +1,15 @@
-/* (0.04)
+/* (0.05)
  *
  * This file is automatically maintained by srccommit, do not edit manually.
  *
  */
-#define Module_MajorVersion_CMHG     	0.04
+#define Module_MajorVersion_CMHG     	0.05
 #define Module_MinorVersion_CMHG	
-#define Module_Date_CMHG      		24 Feb 1999
+#define Module_Date_CMHG      		24 May 1999
 
-#define Module_MajorVersion     	"0.04"
-#define Module_Version                  4
+#define Module_MajorVersion     	"0.05"
+#define Module_Version                  5
 #define Module_MinorVersion		""
-#define Module_Date      		"24 Feb 1999"
+#define Module_Date      		"24 May 1999"
 
+#define Module_FullVersion              "0.05"
diff --git a/c/remote b/c/remote
index 8f9dbcf3410353bbb81974ec0c7ab1747f5a3ea1..2099b36794015e786c99e8e13bd4dbb49ea216d7 100644
--- a/c/remote
+++ b/c/remote
@@ -76,6 +76,7 @@ caseless_strcmp(char *a, char *b)
 int
 debug_poll(debug_session *sess)
 {
+  static char sbuff[REMOTE_DEBUG_MAX_LINE];
   fd_set read_set;
   struct timeval tv;
   char	 *argv[20];
@@ -99,15 +100,18 @@ debug_poll(debug_session *sess)
     {
       if (FD_ISSET(sess->sock,&read_set))
       {
-        if (recv(sess->sock, debug_line, REMOTE_DEBUG_MAX_LINE,MSG_PEEK)>0)
-          if ((cp=strchr(debug_line,'\n'))!=NULL)
-            if (recv(sess->sock, debug_line, (cp-debug_line+1),0)>0)
+        int recv_len = recv(sess->sock, sbuff, REMOTE_DEBUG_MAX_LINE-1,MSG_PEEK);
+        if (recv_len>0)
+        {
+          if ((cp=memchr(sbuff,'\n', recv_len))!=NULL)
+          {
+            if (recv(sess->sock, sbuff, (cp-sbuff+1),0)>0)
             {
-              debug_line[cp-debug_line]='\0'; /* remove the new line char */
+              sbuff[cp-sbuff]='\0'; /* remove the new line char */
               /*
                * break down string
                */
-              cp = debug_line;
+              cp = sbuff;
               while (*cp != '\0')
               {
                 while (*cp == ' ')
@@ -149,11 +153,19 @@ debug_poll(debug_session *sess)
 		  rc = sess->cmd_handler(argc, argv, sess->cmd_handle);
 		  debug_printf(sess,"(6) cmd '%s' returns %d\n", name, rc);
               }
+              else if (caseless_strcmp(argv[0], ":ack")==0)
+              {
+                  /* Discard these silently */
+              }
               else
-                debug_printf(sess,"(6) unknown command '%s'\n",argv[0]);
+              {
+                  debug_printf(sess,"(6) unknown command '%s'\n",argv[0]);
+              }
 
               more = 1; /* try for more input */
             }
+          }
+        }
       }
     }
   } while (more);
@@ -294,13 +306,16 @@ remote_debug_open(char *info, debug_session **db_sess)
   do
   {
     debug_socket = socket(AF_INET, SOCK_STREAM, 0);
-  } while (debug_socket == 0);
+  } while (debug_socket == -1);
 
   hostent = gethostbyname(host);
   if (hostent == NULL)
     goto exit_gracefully;
 
   sockaddr.sin_family = AF_INET;
+#ifndef COMPAT_INET4
+  sockaddr.sin_len = sizeof(sockaddr);
+#endif
   sockaddr.sin_addr.s_addr = *(u_long*)hostent->h_addr;
 
   rc = connect(debug_socket, (struct sockaddr *)&sockaddr, sizeof(sockaddr) );
@@ -314,8 +329,10 @@ remote_debug_open(char *info, debug_session **db_sess)
     goto exit_gracefully;
 
   sess->sock = debug_socket;
+  sess->cmd_handler = NULL;
+  sess->cmd_handle = NULL;
 
-  if ((sess->info=malloc(strlen(info)+/*2 - No, you need + 3 JBeranek */ 3))==NULL)
+  if ((sess->info=malloc(strlen(info)+sizeof(": ")))==NULL)
     goto exit_gracefully;
 
   strcpy(sess->info, info);
@@ -335,6 +352,7 @@ remote_debug_open(char *info, debug_session **db_sess)
 exit_gracefully:
   if (debug_socket >= 0)
     socketclose(debug_socket);
+  debug_socket = -1;
 
   if (sess)
   {