diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c
index c8f6a8f7dcd91e28fdd168a836f8f86f87f9d4b6..1e33de1d48656a1a1438ebad5fae966113de1bf5 100644
--- a/src/sbbs3/js_msgbase.c
+++ b/src/sbbs3/js_msgbase.c
@@ -93,7 +93,11 @@ js_open(JSContext *cx, uintN argc, jsval *arglist)
 	}
 
 	rc=JS_SUSPENDREQUEST(cx);
-	if((p->smb_result = smb_open_sub(scfg, &(p->smb), p->smb.subnum)) != SMB_SUCCESS) {
+	if(p->smb.subnum == INVALID_SUB)
+		p->smb_result = smb_open(&(p->smb));
+	else
+		p->smb_result = smb_open_sub(scfg, &(p->smb), p->smb.subnum);
+	if(p->smb_result != SMB_SUCCESS) {
 		JS_RESUMEREQUEST(cx, rc);
 		return JS_TRUE;
 	}