port-serial: fix command context completion when clearing command queue
This patch removes an extra invocation of g_simple_async_result_complete on the result associated with each command context in the command queue when mm_port_serial_close clears the queue. It also changes the code to complete the results in idle, which avoids a nested invocation of mm_port_serial_close. That could happen if the completion of the result calls mm_port_serial_close again (e.g. via at_command_context_free, at_sequence_context_free in mm-base-modem-at.c). The nested invocation of mm_port_serial_close could create undesirable effects (e.g. the assertion on open_count > 0 fails in case of a forced close).
This commit is contained in:

committed by
Aleksander Morgado

parent
31a19c2299
commit
4827933f0c
@@ -1378,8 +1378,7 @@ mm_port_serial_close (MMPortSerial *self)
|
||||
MM_SERIAL_ERROR,
|
||||
MM_SERIAL_ERROR_SEND_FAILED,
|
||||
"Serial port is now closed");
|
||||
g_simple_async_result_complete (ctx->result);
|
||||
command_context_complete_and_free (ctx, FALSE);
|
||||
command_context_complete_and_free (ctx, TRUE);
|
||||
}
|
||||
g_queue_clear (self->priv->queue);
|
||||
|
||||
|
Reference in New Issue
Block a user