diff --git a/src/sbbs3/asc2ans.c b/src/sbbs3/asc2ans.c
index e72d099ab7c905a1bec6cf54f86fbea8e2a29e9a..7577ab07683e798566d6f0bc63f2c8b6deae1850 100644
--- a/src/sbbs3/asc2ans.c
+++ b/src/sbbs3/asc2ans.c
@@ -1,9 +1,5 @@
-/* asc2ans.c */
-
 /* Converts Synchronet Ctrl-A codes into ANSI escape sequences */
 
-/* $Id: asc2ans.c,v 1.12 2020/05/09 23:06:53 rswindell Exp $ */
-
 /****************************************************************************
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
@@ -17,21 +13,9 @@
  * See the GNU General Public License for more details: gpl.txt or			*
  * http://www.fsf.org/copyleft/gpl.html										*
  *																			*
- * Anonymous FTP access to the most recent released source is available at	*
- * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net	*
- *																			*
- * Anonymous CVS access to the development source and modification history	*
- * is available at cvs.synchro.net:/cvsroot/sbbs, example:					*
- * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login			*
- *     (just hit return, no password is necessary)							*
- * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src		*
- *																			*
  * For Synchronet coding style and modification guidelines, see				*
  * http://www.synchro.net/source.html										*
  *																			*
- * You are encouraged to submit any modifications (preferably in Unix diff	*
- * format) via e-mail to mods@synchro.net									*
- *																			*
  * Note: If this box doesn't appear square, then you need to fix your tabs.	*
  ****************************************************************************/
 
diff --git a/src/sbbs3/chat.cpp b/src/sbbs3/chat.cpp
index f5555d50b73597f62856437931684db1ae1d68a8..5db109bd10a8f17b306e0957c400508c38455dfe 100644
--- a/src/sbbs3/chat.cpp
+++ b/src/sbbs3/chat.cpp
@@ -1091,10 +1091,17 @@ void sbbs_t::privchat(bool forced, int node_num)
 				lseek(in,0L,SEEK_SET);
 			ch=0;
 			utime(inpath,NULL);
-			if(read(in,&ch,1) != 1)
+			int rd = read(in,&ch,1);
+			if(rd != 1) {
+				lprintf(LOG_ERR, "read character from %s returned %d instead of 1", inpath, rd);
 				ch = 0;
+			}
 			(void)lseek(in,-1L,SEEK_CUR);
 			if(!ch) break;					  /* char from other node */
+			if(ch < ' ')
+				lprintf(LOG_DEBUG, "read control character %u (%s) from %s", ch, c_escape_char(ch), inpath);
+			else
+				lprintf(LOG_DEBUG, "read character '%c' from %s", ch, inpath);
 			activity=1;
 			if(sys_status&SS_SPLITP && !remote_activity) {
 				ansi_getxy(&x,&y);
@@ -1162,7 +1169,13 @@ void sbbs_t::privchat(bool forced, int node_num)
 				} 
 			}
 			ch=0;
-			write(in,&ch,1);
+			int wr = write(in,&ch,1);
+			if(wr != 1)
+				lprintf(LOG_ERR, "write of character 0x%02X to %s returned %d", ch, inpath, wr);
+			else if(ch < ' ')
+				lprintf(LOG_DEBUG, "wrote control character %u (%s) to %s", ch, c_escape_char(ch), inpath);
+			else
+				lprintf(LOG_DEBUG, "wrote character '%c' to %s", ch, inpath);
 
 			if(!(sys_status&SS_SPLITP))
 				localchar=remotechar;