diff options
author | Jens Rehsack <sno@NetBSD.org> | 2012-05-30 10:59:19 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2012-05-30 08:48:33 -0500 |
commit | 1e83084154dfdc6edec54c3f14474b0bb40adce3 (patch) | |
tree | d34fd804785a85deb9ee4a4a468ed018d759273b | |
parent | 51b7d669d67f44d4f14469be8ef1e59803871b5c (diff) | |
download | mmsd-1e83084154dfdc6edec54c3f14474b0bb40adce3.tar.gz |
wsputil: Support TEXT type Application IDs
-rw-r--r-- | src/wsputil.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/wsputil.c b/src/wsputil.c index 1b2b2b7..930a6bb 100644 --- a/src/wsputil.c +++ b/src/wsputil.c @@ -490,13 +490,26 @@ gboolean wsp_decode_application_id(struct wsp_header_iter *iter, unsigned int val_len; unsigned int i; + switch (wsp_header_iter_get_val_type(iter)) { + case WSP_VALUE_TYPE_TEXT: + if (out_value) + *out_value = pdu_val; + + break; + /* * Well-known field values MUST be encoded using the * compact binary formats */ - if (wsp_header_iter_get_val_type(iter) == WSP_VALUE_TYPE_SHORT) { + case WSP_VALUE_TYPE_SHORT: val = *pdu_val & 0x7f; - } else { + + if (out_value) + *out_value = get_text_entry(val, app_id); + + break; + + case WSP_VALUE_TYPE_LONG: val_len = wsp_header_iter_get_val_len(iter); if (val_len > 2) @@ -504,10 +517,12 @@ gboolean wsp_decode_application_id(struct wsp_header_iter *iter, for (i = 0, val = 0; i < val_len && i < sizeof(val); i++) val = (val << 8) | pdu_val[i]; - } - if (out_value) - *out_value = get_text_entry(val, app_id); + if (out_value) + *out_value = get_text_entry(val, app_id); + + break; + } return TRUE; } |