diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libimcv/plugins/imv_test/imv_test_state.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/libimcv/plugins/imv_test/imv_test_state.c b/src/libimcv/plugins/imv_test/imv_test_state.c index 5e38ab20b..36ccf4a10 100644 --- a/src/libimcv/plugins/imv_test/imv_test_state.c +++ b/src/libimcv/plugins/imv_test/imv_test_state.c @@ -14,6 +14,7 @@ #include "imv_test_state.h" +#include <utils/lexparser.h> #include <debug.h> typedef struct private_imv_test_state_t private_imv_test_state_t; @@ -107,19 +108,27 @@ METHOD(imv_state_t, get_reason_string, bool, private_imv_test_state_t *this, chunk_t preferred_language, chunk_t *reason_string, chunk_t *reason_language) { + chunk_t pref_lang, lang; int i; - for (i = 0 ; i < countof(reasons); i++) + while (eat_whitespace(&preferred_language)) { - chunk_t lang; + if (!extract_token(&pref_lang, ',', &preferred_language)) + { + /* last entry in a comma-separated list or single entry */ + pref_lang = preferred_language; + } - lang = chunk_create(reasons[i].lang, strlen(reasons[i].lang)); - if (chunk_equals(lang, preferred_language)) + for (i = 0 ; i < countof(reasons); i++) { - *reason_language = lang; - *reason_string = chunk_create(reasons[i].string, - strlen(reasons[i].string)); - return TRUE; + lang = chunk_create(reasons[i].lang, strlen(reasons[i].lang)); + if (chunk_equals(lang, pref_lang)) + { + *reason_language = lang; + *reason_string = chunk_create(reasons[i].string, + strlen(reasons[i].string)); + return TRUE; + } } } |