To keep others happy... revert part of my additions so trunk works.
authorJoshua Colp <jcolp@digium.com>
Wed, 29 Aug 2007 16:03:51 +0000 (16:03 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 29 Aug 2007 16:03:51 +0000 (16:03 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81344 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk/event.h
main/event.c

index 767ef1c..3133234 100644 (file)
@@ -450,7 +450,7 @@ enum ast_event_ie_type ast_event_iterator_get_ie_type(struct ast_event_iterator
  *
  * \return This returns the payload of the information element as a uint.
  */
-uint32_t ast_event_iteragor_get_ie_uint(struct ast_event_iterator *iterator);
+uint32_t ast_event_iterator_get_ie_uint(struct ast_event_iterator *iterator);
 
 /*!
  * \brief Get the value of the current IE in the iterator as a string payload
index d7deede..73858c8 100644 (file)
@@ -380,7 +380,7 @@ enum ast_event_ie_type ast_event_iterator_get_ie_type(struct ast_event_iterator
        return iterator->ie->ie_type;
 }
 
-uint32_t ast_event_iteragor_get_ie_uint(struct ast_event_iterator *iterator)
+uint32_t ast_event_iterator_get_ie_uint(struct ast_event_iterator *iterator)
 {
        return ntohl(*iterator->ie->ie_payload);
 }
@@ -416,13 +416,19 @@ 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_iterator iterator;
-
-       for (ast_event_iterator_init(&iterator, event); !ast_event_iterator_next(&iterator); ) {
-               if (ast_event_iterator_get_ie_type(&iterator) == ie_type)
-                       return ast_event_iterator_get_ie_raw(&iterator);
+       struct ast_event_ie *ie;
+       uint16_t event_len;
+       
+       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;
        }
-
+       
        return NULL;
 }