return true;
}
-static bool __parsing_message_received_event(GVariant *parameters, unsigned int *peer_id,
- unsigned char *peer_mac,
+static bool __parsing_message_received_event(GVariant *parameters, uint16_t *pub_sub_id,
+ unsigned int *peer_id, unsigned char *peer_mac,
unsigned char *message, size_t *message_len)
{
GVariant *mac_var = NULL;
GVariant *msg_var = NULL;
- g_variant_get(parameters, "(uvqv)", peer_id, &mac_var,
+ g_variant_get(parameters, "(quvqv)", pub_sub_id, peer_id, &mac_var,
message_len, &msg_var);
if (*message_len > WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN) {
WIFI_AWARE_LOGE("Too long message %zd", *message_len);
__WIFI_AWARE_FUNC_ENTER__;
WIFI_AWARE_LOGD("NAN Service is discovered");
+ uint16_t pub_sub_id = 0;
unsigned int peer_id = 0;
unsigned char peer_mac[WIFI_AWARE_MAC_ADDRESS_LEN];
unsigned char message[WIFI_AWARE_MAX_SERVICE_SPECIFIC_INFO_LEN];
wifi_aware_session_h session = (wifi_aware_session_h)user_data;
wifi_aware_peer_h peer = NULL;
- if (__parsing_message_received_event(parameters, &peer_id, peer_mac,
+ if (__parsing_message_received_event(parameters, &pub_sub_id, &peer_id, peer_mac,
message, &message_len) == false) {
WIFI_AWARE_LOGE("Fail to get parameters");
return;
}
+ if (pub_sub_id != _wifi_aware_session_get_pub_sub_id(session)) {
+ WIFI_AWARE_LOGE("Ignore the message. not matched session[%p]", session);
+ return;
+ }
+
WIFI_AWARE_LOGD("Peer ID: %u", peer_id);
if (__get_peer_handle(peer_id, &peer) != WIFI_AWARE_ERROR_NONE) {
WIFI_AWARE_LOGE("Invalid peer %u", peer_id);