Re: ModemManager USSD resonse patch
- From: Dan Williams <dcbw redhat com>
- To: Golikov Pavel <paullo612 ya ru>
- Cc: networkmanager-list gnome org
- Subject: Re: ModemManager USSD resonse patch
- Date: Thu, 11 Apr 2013 10:21:09 -0500
On Thu, 2013-04-11 at 18:30 +0400, Golikov Pavel wrote:
This patch fixes USSD respose handling.
Some operators sends answer to USSD message with connection termination code.
When the connection termination state recieved, we should check if we can decode
the answer string. If we can, we should return this string as answer instead of error.
Looks good to me. I'll wait for Aleksander's +1 too before we push.
Thanks!
Dan
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index abc5a5c..2036490 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -4486,13 +4486,37 @@ cusd_process_string (MMBroadbandModem *self,
break;
}
- case 2:
- if (self->priv->pending_ussd_action)
- g_simple_async_result_set_error (self->priv->pending_ussd_action,
- MM_CORE_ERROR,
- MM_CORE_ERROR_CANCELLED,
- "USSD terminated by network.");
+ case 2: /* Some operators can send response with connection termination*/ {
+ gchar *converted;
+ GError *error = NULL;
+
+ converted = decode_ussd_response (self, str, &error);
+ if (self->priv->pending_ussd_action) {
+ /* Response to the user's request */
+ if (error)
+ g_simple_async_result_set_error (self->priv->pending_ussd_action,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_CANCELLED,
+ "USSD terminated by network.");
+ else
+ g_simple_async_result_set_op_res_gpointer (self->priv->pending_ussd_action,
+ converted,
+ g_free);
+ } else {
+ if (error) {
+ mm_warn ("Invalid network initiated USSD notification: %s",
+ error->message);
+ g_error_free (error);
+ } else {
+ /* Network-initiated USSD-Notify */
+ mm_iface_modem_3gpp_ussd_update_network_notification (
+ MM_IFACE_MODEM_3GPP_USSD (self),
+ converted);
+ g_free (converted);
+ }
+ }
break;
+ }
case 4:
if (self->priv->pending_ussd_action)
_______________________________________________
networkmanager-list mailing list
networkmanager-list gnome org
https://mail.gnome.org/mailman/listinfo/networkmanager-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]