| 833 | } |
| 834 | |
| 835 | static int w_stat_iter_next(struct sip_msg *msg, pv_spec_t *key, pv_spec_t *val, |
| 836 | struct stat_iter *iter) |
| 837 | { |
| 838 | pv_value_t pval; |
| 839 | stat_var *stat = iter->cur; |
| 840 | |
| 841 | if (!stat) { |
| 842 | LM_DBG("no more stats to iterate\n"); |
| 843 | return -1; |
| 844 | } |
| 845 | |
| 846 | pval.flags = PV_VAL_STR; |
| 847 | pval.rs = stat->name; |
| 848 | if (pv_set_value(msg, key, 0, &pval) != 0) { |
| 849 | LM_ERR("failed to set pv value for stat key '%.*s'\n", |
| 850 | stat->name.len, stat->name.s); |
| 851 | return -1; |
| 852 | } |
| 853 | |
| 854 | pval.flags = PV_VAL_INT|PV_TYPE_INT; |
| 855 | pval.ri = get_stat_val(stat); |
| 856 | if (pv_set_value(msg, val, 0, &pval) != 0) { |
| 857 | LM_ERR("failed to set pv value for stat val '%d'\n", |
| 858 | pval.ri); |
| 859 | return -1; |
| 860 | } |
| 861 | |
| 862 | iter->cur = stat->lnext; |
| 863 | |
| 864 | return 1; |
| 865 | } |
| 866 | |
| 867 | int pv_set_stat(struct sip_msg* msg, pv_param_t *param, int op, |
| 868 | pv_value_t *val) |
nothing calls this directly
no test coverage detected