freediameter - 如何在调度函数之外处理请求消息

freediameter - how to handle request messages outside of dispatch function

所以,我已经通过 fd_disp_register 在我的扩展程序中为 DCCA 应用程序做广告,我可以解析和准备响应消息,最后从我的回调函数发送它们没有问题。

如果在回调函数中准备了应答消息,这总是有效的。但是,如果我想在回调函数之外回复请求消息怎么办?

因此,我尝试了示例代码。我更改了回调函数逻辑,因此没有从中发送消息,而是另一个线程尝试获取一些信息并发送响应。

这绝对失败了,因为一旦回调 returns(0),下一个动作就会发生(根据 disp_action 值),这对我不利。

所以,我想问一下您处理这种情况的解决方案是什么,我的意思是在回调函数之外发送响应消息?

谢谢。

我不确定我以前做过这个,但看着 libfdproto.h...

enum disp_action {
  DISP_ACT_CONT,  /* The next handler should be called, unless *msg == NULL. */
  DISP_ACT_SEND,  /* The updated message must be sent. No further callback is called. */
  DISP_ACT_ERROR  /* An error must be created and sent as a reply -- not valid for callbacks, only for fd_msg_dispatch. */
};

...听起来您想设置 *act = DISP_ACT_CONT;*msg = NULL;(因为您已经取得了消息的所有权)。

这样行吗?