2012-06-28 199 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更改爲異步更容易。