2012-06-28 255 views
2

我有一个DBus服务器,它公开了需要很长时间才能完成的方法(大约3分钟)。 客户端对此方法执行同步调用。DBus同步呼叫超时

问题是,在25秒后客户端抛出一个错误,因为'没有收到回复'。

不幸的是,我不能改变客户端,所以我不能让它调用异步,因为它应该是。

我想在我的服务器配置使用此行:

<limit name = "reply_timeout">240000</limit> 

但情况并没有改变。

有什么想法?

回答

3

limit参数配置总线守护进程,它只是涉及的进程之一。其他的是客户端和服务器,每端使用的特定D-Bus库可能会有一个同步消息的默认超时。 25秒确实是libdbus中的_DBUS_DEFAULT_TIMEOUT_VALUE,这是C参考实现。

更改客户端中的超时值(例如在dbus_connection_send_with_reply_and_block中)比将API更改为异步更容易。