diff --git a/src/sbbs3/sbbsexec.c b/src/sbbs3/sbbsexec.c
index bd82a7884a825797b1093d83ecebf384c5da80ce..42eec5b6ce1b78ffb1e9a26bb7770821f3f303b7 100644
--- a/src/sbbs3/sbbsexec.c
+++ b/src/sbbs3/sbbsexec.c
@@ -62,6 +62,7 @@ __declspec(dllexport) void __cdecl VDDDispatch(void)
 	static  RingBuf	rdbuf;
 	static	FILE*	fp;
 
+	retval=0;
 	node_num=getBH();
 
 	switch(getBL()) {
@@ -280,7 +281,6 @@ __declspec(dllexport) void __cdecl VDDDispatch(void)
 			retval=0;
 			break;
 
-#if 1
 		case VDD_INBUF_FULL:
 			if(!GetMailslotInfo(
 				rdslot,		// mailslot handle 
@@ -338,7 +338,11 @@ __declspec(dllexport) void __cdecl VDDDispatch(void)
 				retval=1;
 			online_poll++;
 			break;
-#endif
+
+		case VDD_YIELD:
+			Sleep(1);
+			break;
+
 		default:
 			if(fp!=NULL)
 				fprintf(fp,"!UNKNOWN VDD_OP: %d\r\n",getBL());
diff --git a/src/sbbs3/vdd_func.h b/src/sbbs3/vdd_func.h
index 4b177d0092ea4ac727044967bcce0b1fe7c2c583..d100edf94569d9d5fc9e2000c61369917638ea1b 100644
--- a/src/sbbs3/vdd_func.h
+++ b/src/sbbs3/vdd_func.h
@@ -50,6 +50,7 @@ enum {
 	,VDD_OUTBUF_FULL
 	,VDD_OUTBUF_SIZE
 	,VDD_ONLINE
+	,VDD_YIELD
 };
 
 typedef struct {