The source project of this merge request has been removed.
Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
This MR contains two fixes for mbim-proxy
re-opening of the device after receiving a MBIM_PROTOCOL_ERROR_NOT_OPENED
.
It fixes re-detection of some MBIM modems after a suspend/resume cycle.
The first fix is to set open_status
to OPEN_STATUS_CLOSED
in mbim_device_close_force ()
.
Otherwise mbim_device_open()
-> device_open_context_step (DEVICE_OPEN_CONTEXT_STEP_FIRST)
will refuse re-opening as it will think the device is already open.
The second fix (workaround) is to not unblock SIGNAL_ERROR
immediately on caps_query
MBIM_PROTOCOL_ERROR_NOT_OPENED
.
When caps_query
operation returns MBIM_PROTOCOL_ERROR_NOT_OPENED
the device gets re-opened by this operation completion callback.
This re-open attempt also re-uses the same MbimDevice
.
However, since commit fbcacbb8 we receive the relevant SIGNAL_ERROR
only after the operation completion callback has already run and started the re-open attempt.
This will prevent this re-open attempt from succeeding, since the code will think that this SIGNAL_ERROR
refers to the re-open attempt rather than the original caps_query
operation.
The proper fix here would be to not reuse the same MbimDevice
in internal_device_open_caps_query_ready ()
for the re-opening attempt but rather drop the current MbimDevice
and create a new one.
Since this requires some careful code rework this commit at least works the issue around by deferring unblocking of the SIGNAL_ERROR
handler in this case until opening of the device is complete.
This way we at least have this issue mitigated for now - as it is affecting multiple users.
Closes: #43 (closed)