【问题标题】:UPnP subscription renewal fails on the device设备上的 UPnP 订阅续订失败
【发布时间】:2023-03-26 02:35:01
【问题描述】:

当我尝试在设备上续订 UPnP 事件订阅时,出现 412 HTTP 错误:前提条件失败,SID 错误。

此错误仅在一台设备上发生,所有其他设备都可以正常工作。 Buggy 设备是 D-Link XTreme N GIGABIT 路由器 DIR-655(固件版本:1.34WW,2010/09/30),硬件版本:A4。

UPNP 订阅日志(被 Wireshark 捕获)

订阅:

SUBSCRIBE /l3fw HTTP/1.0
Host: 192.168.0.1
CALLBACK: <http://192.168.0.100:7169/evt/43E47718-E7F6-D950-A503-71346C1D9944>
NT: upnp:event
TIMEOUT: Second-60

HTTP/1.1 200 OK
SID: uuid:5B68F900-2863-104D-8000-002401F35BC2
TIMEOUT: Second-60
SERVER: ipOS/7.6 UPnP/1.0 ipGENADevice/1.0

续订:

SUBSCRIBE /l3fw HTTP/1.0
Host: 192.168.0.1
SID: uuid:5B68F900-2863-104D-8000-002401F35BC2
TIMEOUT: Second-60

HTTP/1.1 412 Precondition Failed, bad SID
SERVER: ipOS/7.6 UPnP/1.0 ipGENADevice/1.0

我第一次尝试在到期前 5 秒内续订,例如在初始订阅后的第 55 秒。第二次尝试:在第 45 秒,但效果相同。

我还尝试在订阅请求中使用 HTTP/1.1(并添加“Connection:close”标头),但没有效果。

我做错了什么?

UPD1 将模板更新到 1.37WW 不会改变任何事情

UPD2

当我在订阅后立即尝试续订时,它可以工作。等待 750 毫秒并更新 - 有效。等待 900 毫秒并更新 - HTTP 412 失败。似乎 D-Link 设备中存在错误(另一个 D-Link 路由器 DI-624 以相同的方式工作)。英特尔设备验证器 (https://software.intel.com/en-us/articles/intel-tools-for-upnp-technologies) 验证 DIR-655 和 DI-624 事件没有错误,但我认为订阅和续订步骤之间没有暂停。所以,我认为 UPNP 事件不是一种可靠的机制,最好不要使用它。

这种设备行为损害了 upnp 事件机制的想法。

【问题讨论】:

    标签: events subscription upnp preconditions http-status-code-412


    【解决方案1】:

    我刚刚在一些 Belkin WeMo 设备上遇到了非常相似的问题。

    我通过确保正确响应发送到 CALLBACK URL 的通知消息解决了我的问题。我发送了一个 HTTP 200 响应,并且开始正常工作。

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2013-11-03
      相关资源
      最近更新 更多