aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Rehsack <sno@NetBSD.org>2012-05-30 10:59:19 +0200
committerDenis Kenzior <denkenz@gmail.com>2012-05-30 08:48:33 -0500
commit1e83084154dfdc6edec54c3f14474b0bb40adce3 (patch)
treed34fd804785a85deb9ee4a4a468ed018d759273b
parent51b7d669d67f44d4f14469be8ef1e59803871b5c (diff)
downloadmmsd-1e83084154dfdc6edec54c3f14474b0bb40adce3.tar.gz
wsputil: Support TEXT type Application IDs
-rw-r--r--src/wsputil.c25
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;
}