Hi Kamailio team,
I'm attempting to use Kamailio as a Diameter Routing Agent, but I can't seem to
get the diameter_request() function to actually _send_ the diameter request, instead I get
a warning about no JSON Response:
WARNING: ims_diameter_server [avp_helper.c:341]:
addAVPsfromJSON(): No JSON Response
Even when relaying received data without modifying it.
I posted this issue on the mailing list but have had no responses. Since then I've run
a bunch more tests on a few different versions of Kamailio with a few different Diameter
peers with the same result.
### Description
The IMS Diameter Server Module's[ diameter_request()
function](https://www.kamailio.org/docs/modules/devel/modules/ims_diameter_…
fails to send, reporting "No JSON Response" even when fed unmodified received
data into it.
### Troubleshooting
Initially I was trying to use CDP & IMS Diameter Server Module to create & send
Diameter messages, I thought my formatting in the message (the Diameter Message (as JSON))
was incorrect. as I was getting:
WARNING: ims_diameter_server [avp_helper.c:341]:
addAVPsfromJSON(): No JSON Response
When trying to send the request.
To rule out my JSON formatting being the issue I configured two Diameter Peers in
Kamailio:
From one Diameter peer, I sent a Diameter request to
Kamailio.
Kamailio is configured to receive the Diameter request, and without modifying the message
body ($diameter_request), put that message into the message of the the diameter_request()
so as to rule out formatting errors in the message, just a relay of the message, but this
also fails to send.
I also included a series of checks to confirm the peer to receive the relayed message was
online and capable of handling the specified Diameter application, all of which passed.
I've defined the peers in the diametercfg.xml config file, and they're all showing
as online when I do a "kamcmd cdp.list_peers":
FQDN: ims-hss.localdomain
Details: {
State: I_Open
Disabled: False
Last used: 0
Applications: {
appid:vendorid: 16777216:10415
appid:vendorid: 16777216:4491
appid:vendorid: 16777216:13019
appid:vendorid: 16777216:0
appid:vendorid: 16777217:10415
appid:vendorid: 16777221:10415
}
}
Here's a simplified version of my event_route[diameter:request], showing I simply
receive the diameter request and then try to send it straight back out using the
diameter_request() function:
```
event_route[diameter:request]{
xlog("Got diameter message");
diameter_request("ims-hss.localdomain", $diameter_application,
$diameter_command, $diameter_request);
xlog("Forwarded Diameter Request");
}
```
When tailing syslog I see the "Got diameter message" entry but not the
"Forwarded Diameter Request", which suggests it's not getting past the
diameter_request(), instead I just see the:
WARNING: ims_diameter_server [avp_helper.c:341]:
addAVPsfromJSON(): No JSON Response
Packet captures show Kamailio receives the request but never relays it.
The source of avp_helper.c shows the warning is called if the length of the JSON is <=
0, but as I'm feeding back out what I've received it shouldn't be 0, an no
recent major changes to the source, so I'm stumped as to why it's catching this.
I've attached a full copy of the config files below.
#### Reproduction
I've tried this with a few different Diameter servers, but I can reproduce it with two
FreeDIAMETER peers configured in Diameter CDP Config XML, I've also tried with one
Kamailio CDP based peer and using xhttp to call the diameter_request() function with the
same results.
#### Log Messages
Copy of relevant SysLog:
https://pastebin.com/ZY8z2kd4
### Additional Information
Full Kamailio Config:
https://pastebin.com/afgqUfWr
Diameter CDP Config XML:
https://pastebin.com/bVrBG8mG
Relevant Syslog:
https://pastebin.com/ZY8z2kd4
Kamcmd cdp.list_peers:
https://pastebin.com/cKi4JAHC
Kamailio 5.1.2 on Ubuntu 18.04 installed from Repos.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/2035