diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c
old mode 100644
new mode 100755
index c6bb1d4b6d6b77747ec9ac5f5e954564137fdd1f..bbf6ba1e13f45f995f76ff1b97a174142a1b1a36
--- a/src/sbbs3/xmodem.c
+++ b/src/sbbs3/xmodem.c
@@ -167,13 +167,13 @@ int xmodem_cancel(xmodem_t* xm)
 	int result;
 
 	if(!is_cancelled(xm) && is_connected(xm)) {
+		xm->cancelled=TRUE;
 		for(i=0;i<8 && is_connected(xm);i++)
 			if((result=putcom(CAN))!=0)
 				return result;
 		for(i=0;i<10 && is_connected(xm);i++)
 			if((result=putcom('\b'))!=0)
 				return result;
-		xm->cancelled=TRUE;
 	}
 
 	xmodem_flush(xm);