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.
This commit is contained in:
Alfonso Sanchez-Beato 2015-09-07 11:58:15 +02:00 committed by Denis Kenzior
parent 4e9cbcdb89
commit 665c053803
1 changed files with 7 additions and 18 deletions

View File

@ -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);