Index: /branches/eam_branches/20091201/Ohana/src/kapa2/src/EraseOverlay.c
===================================================================
--- /branches/eam_branches/20091201/Ohana/src/kapa2/src/EraseOverlay.c	(revision 26414)
+++ /branches/eam_branches/20091201/Ohana/src/kapa2/src/EraseOverlay.c	(revision 26415)
@@ -8,10 +8,11 @@
   KapaImageWidget *image;
 
+  // We have to accept the incoming message even if we cannot perform the action
+  KiiScanCommand (sock, 16, "%*s %d", &N);
+
   graphic = GetGraphic();
   section = GetActiveSection();
   image = section->image;
   if (image == NULL) return (TRUE);
-
-  KiiScanCommand (sock, 16, "%*s %d", &N);
 
   if (N > NOVERLAYS) {
Index: /branches/eam_branches/20091201/Ohana/src/kapa2/src/LoadPicture.c
===================================================================
--- /branches/eam_branches/20091201/Ohana/src/kapa2/src/LoadPicture.c	(revision 26414)
+++ /branches/eam_branches/20091201/Ohana/src/kapa2/src/LoadPicture.c	(revision 26415)
@@ -73,4 +73,5 @@
     if (status == 0) {  /* No more pipe */
       fprintf (stderr, "error: pipe closed\n");
+      fcntl (sock, F_SETFL, !O_NONBLOCK);  
       return (FALSE);
     }
Index: /branches/eam_branches/20091201/Ohana/src/kapa2/src/PNGit.c
===================================================================
--- /branches/eam_branches/20091201/Ohana/src/kapa2/src/PNGit.c	(revision 26414)
+++ /branches/eam_branches/20091201/Ohana/src/kapa2/src/PNGit.c	(revision 26415)
@@ -16,9 +16,5 @@
 
   /* expect a line telling the number of bytes and a filename */
-  status = read (sock, filename, 16);
-  filename[16] = 0;
-  sscanf (filename, "%*s %d", &Nbytes);
-  status = read (sock, filename, Nbytes);
-  filename[status] = 0; /* make the string easy to parse */
+  KiiScanMessage (sock, "%s", filename);
 
   f = fopen (filename, "w");
Index: /branches/eam_branches/20091201/Ohana/src/kapa2/src/PPMit.c
===================================================================
--- /branches/eam_branches/20091201/Ohana/src/kapa2/src/PPMit.c	(revision 26414)
+++ /branches/eam_branches/20091201/Ohana/src/kapa2/src/PPMit.c	(revision 26415)
@@ -13,9 +13,5 @@
 
   /* expect a line telling the number of bytes and a filename */
-  status = read (sock, filename, 16);
-  filename[16] = 0;
-  sscanf (filename, "%*s %d", &Nbytes);
-  status = read (sock, filename, Nbytes);
-  filename[status] = 0; /* make the string easy to parse */
+  KiiScanMessage (sock, "%s", filename);
 
   f = fopen (filename, "w");
Index: /branches/eam_branches/20091201/Ohana/src/kapa2/src/Resize.c
===================================================================
--- /branches/eam_branches/20091201/Ohana/src/kapa2/src/Resize.c	(revision 26414)
+++ /branches/eam_branches/20091201/Ohana/src/kapa2/src/Resize.c	(revision 26415)
@@ -11,4 +11,5 @@
   graphic = GetGraphic();
 
+  // must scan the message before possible return
   KiiScanMessage (sock, "%d %d", &NX, &NY);
 
Index: /branches/eam_branches/20091201/Ohana/src/kapa2/src/SaveOverlay.c
===================================================================
--- /branches/eam_branches/20091201/Ohana/src/kapa2/src/SaveOverlay.c	(revision 26414)
+++ /branches/eam_branches/20091201/Ohana/src/kapa2/src/SaveOverlay.c	(revision 26415)
@@ -9,10 +9,10 @@
   KapaImageWidget *image;
 
+  KiiScanMessage (sock, "%*s %d %s", &N, filename);
+  
   section = GetActiveSection();
   image   = section->image;
   if (image == NULL) return (TRUE);
 
-  KiiScanMessage (sock, "%*s %d %s", &N, filename);
-  
   f = fopen (filename, "w");
   if (f == NULL) {
