aboutsummaryrefslogtreecommitdiffstats
path: root/main/event.c
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-29 16:25:30 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-29 16:25:30 +0000
commit6799b0ecd18b9edb39162e81719b245944de4321 (patch)
treec40c7907e14cfbcd39e380e163ce4f8489df73b7 /main/event.c
parenta1772fe630bf12c9cde414396db03e8ab1d401cf (diff)
Return ast_event_get_ie_raw to using an iterator and fix logic in ast_event_iterator_next.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@81348 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/event.c')
-rw-r--r--main/event.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/main/event.c b/main/event.c
index a905f6330..562e1f3bd 100644
--- a/main/event.c
+++ b/main/event.c
@@ -372,7 +372,7 @@ void ast_event_iterator_init(struct ast_event_iterator *iterator, const struct a
int ast_event_iterator_next(struct ast_event_iterator *iterator)
{
iterator->ie = ((void *) iterator->ie) + sizeof(*iterator->ie) + ntohs(iterator->ie->ie_payload_len);
- return ((iterator->event_len > (((void *) iterator->ie) - ((void *) iterator->event))) ? -1 : 0);
+ return ((iterator->event_len < (((void *) iterator->ie) - ((void *) iterator->event))) ? -1 : 0);
}
enum ast_event_ie_type ast_event_iterator_get_ie_type(struct ast_event_iterator *iterator)
@@ -416,20 +416,16 @@ const char *ast_event_get_ie_str(const struct ast_event *event, enum ast_event_i
const void *ast_event_get_ie_raw(const struct ast_event *event, enum ast_event_ie_type ie_type)
{
- struct ast_event_ie *ie;
- uint16_t event_len;
-
+ struct ast_event_iterator iterator;
+ int res = 0;
+
ie_type = ntohs(ie_type);
- event_len = ntohs(event->event_len);
-
- ie = ((void *) event) + sizeof(*event);
-
- while ((((void *) ie) - ((void *) event)) < event_len) {
- if (ie->ie_type == ie_type)
- return ie->ie_payload;
- ie = ((void *) ie) + sizeof(*ie) + ntohs(ie->ie_payload_len);
+
+ for (ast_event_iterator_init(&iterator, event); !res; res = ast_event_iterator_next(&iterator)) {
+ if (ast_event_iterator_get_ie_type(&iterator) == ie_type)
+ return ast_event_iterator_get_ie_raw(&iterator);
}
-
+
return NULL;
}