diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c
index 3f90e73554a2630a461dd602353d7b4a35efd294..96f4d52905ecca7448def7adb5d0c616695afc3f 100644
--- a/src/sbbs3/xmodem.c
+++ b/src/sbbs3/xmodem.c
@@ -499,6 +499,10 @@ BOOL xmodem_send_file(xmodem_t* xm, const char* fname, FILE* fp, time_t* start,
 				xm->errors++;
 				lprintf(xm,LOG_WARNING,"Error #%d at offset %ld"
 					,xm->errors,ftell(fp)-xm->block_size);
+				if(xm->errors==3 && block_num==1 && xm->block_size>128) {
+					lprintf(xm,LOG_NOTICE,"Falling back to 128 byte blocks");
+					xm->block_size=128;
+				}
 			} else {
 				block_num++; 
 				sent_bytes+=rd;