Guillaume Zajac | 25 Jun 2012 16:19
Picon

[PATCH 1/2] emulator: Test already done in g_at_server_resume()

---
 src/emulator.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/src/emulator.c b/src/emulator.c
index e7c7d41..c3165eb 100644
--- a/src/emulator.c
+++ b/src/emulator.c
 <at>  <at>  -100,9 +100,6  <at>  <at>  static void cleanup_ppp(struct ofono_emulator *em)
 	__ofono_private_network_release(em->pns_id);
 	em->pns_id = 0;

-	if (em->server == NULL)
-		return;
-
 	g_at_server_resume(em->server);
 	g_at_server_send_final(em->server, G_AT_SERVER_RESULT_NO_CARRIER);
 }
--

-- 
1.7.5.4

Guillaume Zajac | 25 Jun 2012 16:19
Picon

[PATCH 2/2] emulator: Fix crash when dundee is disconnecting

Dundee is not waiting to receive the NO CARRIER notification
to close the IO channel with oFono so that oFono is trying to
send a NO CARRIER although GAtServer is removed.
---
 src/emulator.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/emulator.c b/src/emulator.c
index c3165eb..cbee6ad 100644
--- a/src/emulator.c
+++ b/src/emulator.c
 <at>  <at>  -101,7 +101,14  <at>  <at>  static void cleanup_ppp(struct ofono_emulator *em)
 	em->pns_id = 0;

 	g_at_server_resume(em->server);
-	g_at_server_send_final(em->server, G_AT_SERVER_RESULT_NO_CARRIER);
+
+	/*
+	 * If GAtServer IO is lost, GAtServer can have been removed
+	 * through emulator disconnect routine.
+	 */
+	if (em->server != NULL)
+		g_at_server_send_final(em->server,
+					G_AT_SERVER_RESULT_NO_CARRIER);
 }

 static void ppp_disconnect(GAtPPPDisconnectReason reason, gpointer user_data)
--

-- 
1.7.5.4

(Continue reading)

Denis Kenzior | 22 Jun 2012 09:46
Picon

Re: [PATCH 2/2] emulator: Fix crash when dundee is disconnecting

Hi Guillaume,

On 06/25/2012 09:19 AM, Guillaume Zajac wrote:
> Dundee is not waiting to receive the NO CARRIER notification
> to close the IO channel with oFono so that oFono is trying to
> send a NO CARRIER although GAtServer is removed.
> ---
>   src/emulator.c |    9 ++++++++-
>   1 files changed, 8 insertions(+), 1 deletions(-)
>
> diff --git a/src/emulator.c b/src/emulator.c
> index c3165eb..cbee6ad 100644
> --- a/src/emulator.c
> +++ b/src/emulator.c
>  <at>  <at>  -101,7 +101,14  <at>  <at>  static void cleanup_ppp(struct ofono_emulator *em)
>   	em->pns_id = 0;
>
>   	g_at_server_resume(em->server);
> -	g_at_server_send_final(em->server, G_AT_SERVER_RESULT_NO_CARRIER);
> +
> +	/*
> +	 * If GAtServer IO is lost, GAtServer can have been removed
> +	 * through emulator disconnect routine.
> +	 */
> +	if (em->server != NULL)
> +		g_at_server_send_final(em->server,
> +					G_AT_SERVER_RESULT_NO_CARRIER);

If server is NULL then either it should be a global check like before 
(prior to proposed patch 1), or you should add a NULL check to 
(Continue reading)

Guillaume Zajac | 26 Jun 2012 10:00
Picon

Re: [PATCH 2/2] emulator: Fix crash when dundee is disconnecting

Hi Denis,

>> Dundee is not waiting to receive the NO CARRIER notification
>> to close the IO channel with oFono so that oFono is trying to
>> send a NO CARRIER although GAtServer is removed.
>> ---
>>   src/emulator.c |    9 ++++++++-
>>   1 files changed, 8 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/emulator.c b/src/emulator.c
>> index c3165eb..cbee6ad 100644
>> --- a/src/emulator.c
>> +++ b/src/emulator.c
>>  <at>  <at>  -101,7 +101,14  <at>  <at>  static void cleanup_ppp(struct ofono_emulator *em)
>>       em->pns_id = 0;
>>
>>       g_at_server_resume(em->server);
>> -    g_at_server_send_final(em->server, G_AT_SERVER_RESULT_NO_CARRIER);
>> +
>> +    /*
>> +     * If GAtServer IO is lost, GAtServer can have been removed
>> +     * through emulator disconnect routine.
>> +     */
>> +    if (em->server != NULL)
>> +        g_at_server_send_final(em->server,
>> +                    G_AT_SERVER_RESULT_NO_CARRIER);
>
> If server is NULL then either it should be a global check like before 
> (prior to proposed patch 1), or you should add a NULL check to 
> g_at_server_send_final itself.
(Continue reading)


Gmane