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_server.html...) 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.