summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/irmd/apn_table.c17
-rw-r--r--src/irmd/apn_table.h3
-rw-r--r--src/irmd/main.c3
3 files changed, 22 insertions, 1 deletions
diff --git a/src/irmd/apn_table.c b/src/irmd/apn_table.c
index 31c45a78..a7cf0fd3 100644
--- a/src/irmd/apn_table.c
+++ b/src/irmd/apn_table.c
@@ -162,3 +162,20 @@ struct apn_entry * apn_table_get(struct list_head * apn_table, char * ap)
return NULL;
}
+
+struct apn_entry * apn_table_get_by_apn(struct list_head * apn_table,
+ char * apn)
+{
+ struct list_head * p;
+
+ if (apn_table == NULL || apn == NULL)
+ return NULL;
+
+ list_for_each(p, apn_table) {
+ struct apn_entry * e = list_entry(p, struct apn_entry, next);
+ if (!strcmp(e->apn, apn))
+ return e;
+ }
+
+ return NULL;
+}
diff --git a/src/irmd/apn_table.h b/src/irmd/apn_table.h
index 88a2548a..fd0fb1de 100644
--- a/src/irmd/apn_table.h
+++ b/src/irmd/apn_table.h
@@ -59,4 +59,7 @@ void apn_table_del(struct list_head * apn_table,
struct apn_entry * apn_table_get(struct list_head * apn_table,
char * ap);
+struct apn_entry * apn_table_get_by_apn(struct list_head * apn_table,
+ char * apn);
+
#endif /* OUROBOROS_IRMD_APN_TABLE_H */
diff --git a/src/irmd/main.c b/src/irmd/main.c
index 5366b535..8ac645df 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -1364,7 +1364,8 @@ static struct irm_flow * flow_req_arr(pid_t api,
pthread_mutex_lock(&re->state_lock);
re->state = REG_NAME_AUTO_EXEC;
- a = apn_table_get(&irmd->apn_table, reg_entry_get_apn(re));
+ a = apn_table_get_by_apn(&irmd->apn_table,
+ reg_entry_get_apn(re));
pthread_mutex_unlock(&re->state_lock);
if (a == NULL || (c_api->pid = auto_execute(a->argv)) < 0) {
pthread_mutex_lock(&re->state_lock);