diff --git a/apps/app_directory.c b/apps/app_directory.c
index dd80c3467502d5955251855d6327f5bff53b7cce..6866aa387c2fe1cc2c329068bfd500a734f76e55 100644
--- a/apps/app_directory.c
+++ b/apps/app_directory.c
@@ -509,6 +509,11 @@ static struct ast_config *realtime_directory(char *context)
 		const char *mailbox = ast_variable_retrieve(rtdata, category, "mailbox");
 		const char *ctx = ast_variable_retrieve(rtdata, category, "context");
 
+		if (ast_strlen_zero(mailbox)) {
+			ast_debug(3, "Skipping result with missing or empty mailbox\n");
+			continue;
+		}
+
 		fullname = ast_variable_retrieve(rtdata, category, "fullname");
 		hidefromdir = ast_variable_retrieve(rtdata, category, "hidefromdir");
 		if (ast_true(hidefromdir)) {
@@ -529,7 +534,7 @@ static struct ast_config *realtime_directory(char *context)
 
 		/* Does the context exist within the config file? If not, make one */
 		if (!(cat = ast_category_get(cfg, ctx, NULL))) {
-			if (!(cat = ast_category_new(ctx, "", 99999))) {
+			if (!(cat = ast_category_new_dynamic(ctx))) {
 				ast_log(LOG_WARNING, "Out of memory\n");
 				ast_config_destroy(cfg);
 				if (rtdata) {