From 665c053803c4553452ef2cafbbc1ed7d2f94e94f Mon Sep 17 00:00:00 2001 From: Alfonso Sanchez-Beato Date: Mon, 7 Sep 2015 11:58:15 +0200 Subject: push-notification: Accept push from any origin Accept push notifications regardless of the origin port, as some operators do not insert there the WAP connectionless session service port, and use random values instead. --- plugins/push-notification.c | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'plugins') diff --git a/plugins/push-notification.c b/plugins/push-notification.c index f6ca365a..ff388d9e 100644 --- a/plugins/push-notification.c +++ b/plugins/push-notification.c @@ -41,7 +41,7 @@ #define PUSH_NOTIFICATION_INTERFACE "org.ofono.PushNotification" #define AGENT_INTERFACE "org.ofono.PushNotificationAgent" -#define WAP_PUSH_SRC_PORT 9200 +#define WAP_PUSH_SRC_PORT -1 #define WAP_PUSH_DST_PORT 2948 static unsigned int modemwatch_id; @@ -50,21 +50,16 @@ struct push_notification { struct ofono_modem *modem; struct ofono_sms *sms; struct sms_agent *agent; - unsigned int push_watch[2]; + unsigned int push_watch; }; static void agent_exited(void *userdata) { struct push_notification *pn = userdata; - if (pn->push_watch[0] > 0) { - __ofono_sms_datagram_watch_remove(pn->sms, pn->push_watch[0]); - pn->push_watch[0] = 0; - } - - if (pn->push_watch[1] > 0) { - __ofono_sms_datagram_watch_remove(pn->sms, pn->push_watch[1]); - pn->push_watch[1] = 0; + if (pn->push_watch > 0) { + __ofono_sms_datagram_watch_remove(pn->sms, pn->push_watch); + pn->push_watch = 0; } pn->agent = NULL; @@ -113,17 +108,12 @@ static DBusMessage *push_notification_register_agent(DBusConnection *conn, sms_agent_set_removed_notify(pn->agent, agent_exited, pn); - pn->push_watch[0] = __ofono_sms_datagram_watch_add(pn->sms, + pn->push_watch = __ofono_sms_datagram_watch_add(pn->sms, push_received, WAP_PUSH_DST_PORT, WAP_PUSH_SRC_PORT, pn, NULL); - pn->push_watch[1] = __ofono_sms_datagram_watch_add(pn->sms, - push_received, - WAP_PUSH_DST_PORT, - 0, pn, NULL); - return dbus_message_new_method_return(msg); } @@ -166,8 +156,7 @@ static void push_notification_cleanup(gpointer user) DBG("%p", pn); /* The push watch was already cleaned up */ - pn->push_watch[0] = 0; - pn->push_watch[1] = 0; + pn->push_watch = 0; pn->sms = NULL; sms_agent_free(pn->agent); -- cgit v1.2.3