I've tried to send Sh requests to HSS via xhttp -> diameter_request and found that after successful call I've always got empty $diameter_response.
After reading code of ims_diameter_server module I made following patch to finally get responses:
--- a/src/modules/ims_diameter_server/avp_helper.c
+++ b/src/modules/ims_diameter_server/avp_helper.c
int pv_get_response(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) {
- if ((msg->id != current_msg_id_repl) || (responsejson.len < 0)) {
+ if (responsejson.len < 0) {
return pv_get_strval(msg, param, res, &responsejson);
but then I thought that there should be workaround for unpatched version, so here's little hack to set empty $diameter_response before calling diameter_request function:
#
# Processing HTTP request, it should be POST,
# with URI: http://host:port/lcs/diameter-peer-name/diameter-app-id/function-code
#
event_route[xhttp:request] {
xlog("Recieved HTTP request with request $hu\n");
# make diameter_request function happy -- initialize $diameter_response ;)
# without setting $diameter_response first - there's no way to get back response_data
$diameter_response = '';
xlog('trying to call: "diameter_request($(hu{s.select,2,/})", $(hu{s.select,3,/}), $(hu{s.select,4,/}), rb);\n');
diameter_request($(hu{s.select,2,/}), $(hu{s.select,3,/}), $(hu{s.select,4,/}), $rb);
xlog("Received Diameter response:\n");
# xlog("$diameter_response \n");
xhttp_reply("200", "OK", "application/json", "$diameter_response");
}
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.