switch (type) {
case SMDI_MD:
- if (ast_test_flag(&options, OPT_SEARCH_TERMINAL)) {
+ if (ast_strlen_zero(search_key)) {
+ struct ast_smdi_md_message *md_msg = NULL;
+
+ /* No search key provided (the code from chan_dahdi does this).
+ * Just pop the top message off of the queue. */
+
+ ASTOBJ_CONTAINER_TRAVERSE(&iface->md_q, !md_msg, do {
+ md_msg = ASTOBJ_REF(iterator);
+ } while (0); );
+
+ msg = md_msg;
+ } else if (ast_test_flag(&options, OPT_SEARCH_TERMINAL)) {
struct ast_smdi_md_message *md_msg = NULL;
/* Searching by the message desk terminal */
}
break;
case SMDI_MWI:
- msg = ASTOBJ_CONTAINER_FIND(&iface->mwi_q, search_key);
+ if (ast_strlen_zero(search_key)) {
+ struct ast_smdi_mwi_message *mwi_msg = NULL;
+
+ /* No search key provided (the code from chan_dahdi does this).
+ * Just pop the top message off of the queue. */
+
+ ASTOBJ_CONTAINER_TRAVERSE(&iface->mwi_q, !mwi_msg, do {
+ mwi_msg = ASTOBJ_REF(iterator);
+ } while (0); );
+
+ msg = mwi_msg;
+ } else {
+ msg = ASTOBJ_CONTAINER_FIND(&iface->mwi_q, search_key);
+ }
break;
}