laforge submitted this change.
vty: Fix 'show message' not finding expired messages
Change-Id: I23523876f1df167e8afd730b2164f133c2776085
---
M include/osmocom/cbc/cbc_message.h
M src/cbc_vty.c
M src/message_handling.c
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/include/osmocom/cbc/cbc_message.h b/include/osmocom/cbc/cbc_message.h
index daf992d..9d3b5b8 100644
--- a/include/osmocom/cbc/cbc_message.h
+++ b/include/osmocom/cbc/cbc_message.h
@@ -102,6 +102,7 @@
int cbc_message_new(const struct cbc_message *cbcmsg, struct rest_it_op *op);
void cbc_message_delete(struct cbc_message *cbcmsg, struct rest_it_op *op);
struct cbc_message *cbc_message_by_id(uint16_t message_id);
+struct cbc_message *cbc_message_expired_by_id(uint16_t message_id);
int peer_new_cbc_message(struct cbc_peer *peer, struct cbc_message *cbcmsg);
int cbc_message_del_peer(struct cbc_message *cbcmsg, struct cbc_peer *peer);
diff --git a/src/cbc_vty.c b/src/cbc_vty.c
index 50ec807..99363fb 100644
--- a/src/cbc_vty.c
+++ b/src/cbc_vty.c
@@ -205,8 +205,11 @@
const struct smscb_message *smscb;
struct cbc_message_peer *msg_peer;
char *timestr;
+ uint16_t msgid = atoi(argv[0]);
- cbc_msg = cbc_message_by_id(atoi(argv[0]));
+ cbc_msg = cbc_message_by_id(msgid);
+ if (!cbc_msg)
+ cbc_msg = cbc_message_expired_by_id(msgid);
if (!cbc_msg) {
vty_out(vty, "Unknown Messsage ID %s%s", argv[0], VTY_NEWLINE);
return CMD_WARNING;
diff --git a/src/message_handling.c b/src/message_handling.c
index 73898e1..76739c3 100644
--- a/src/message_handling.c
+++ b/src/message_handling.c
@@ -235,3 +235,13 @@
}
return NULL;
}
+
+struct cbc_message *cbc_message_expired_by_id(uint16_t message_id)
+{
+ struct cbc_message *cbc_msg;
+ llist_for_each_entry(cbc_msg, &g_cbc->expired_messages, list) {
+ if (cbc_msg->msg.message_id == message_id)
+ return cbc_msg;
+ }
+ return NULL;
+}
To view, visit change 28788. To unsubscribe, or for help writing mail filters, visit settings.