I found the issue, Right when IGMP is switched on the RECV'ing of the IGMP pacjet updated the REMOTE_PORT and IP information.
I used the following code below to backup and restore and IP/PORT information to prevent losing where to send the Multicast Data, in this case, 239.255.255.250
Code: Select all
if (espconn_get_connection_info(udpconn,&premot,0) == ESPCONN_OK)
{
if(udpconn->link_cnt) {
os_printf("EspConn %u HTTPUDP connections:\r\n", udpconn->link_cnt);
int i = 0;
while(i < udpconn->link_cnt) {
os_printf("%d) " IPSTR ":%u %s\r\n", i, IP2STR(premot[i].remote_ip), premot[i].remote_port, msg_espconn_state[premot[i].state] );
i++;
};
}
//os_printf("Received device find message\n\r");
//os_sprintf(DeviceBuffer, "%s" MACSTR " " IPSTR, pusrdata, MAC2STR(hwaddr), IP2STR(&ipconfig.ip));
//os_printf("%s\n", DeviceBuffer);
remot_info premotbackup;
premotbackup.remote_port = udpconn->proto.udp->remote_port;
premotbackup.remote_ip[0] = udpconn->proto.udp->remote_ip[0];
premotbackup.remote_ip[1] = udpconn->proto.udp->remote_ip[1];
premotbackup.remote_ip[2] = udpconn->proto.udp->remote_ip[2];
premotbackup.remote_ip[3] = udpconn->proto.udp->remote_ip[3];
unsigned short strlength = os_strlen(DeviceBuffer);
udpconn->proto.udp->remote_port = premot->remote_port;
udpconn->proto.udp->remote_ip[0] = premot->remote_ip[0];
udpconn->proto.udp->remote_ip[1] = premot->remote_ip[1];
udpconn->proto.udp->remote_ip[2] = premot->remote_ip[2];
udpconn->proto.udp->remote_ip[3] = premot->remote_ip[3];
espconn_sendto(udpconn, SSDPResponse, os_strlen(SSDPResponse)); //Send Back Answer
udpconn->proto.udp->remote_port = premotbackup.remote_port;
udpconn->proto.udp->remote_ip[0] = premotbackup.remote_ip[0];
udpconn->proto.udp->remote_ip[1] = premotbackup.remote_ip[1];
udpconn->proto.udp->remote_ip[2] = premotbackup.remote_ip[2];
udpconn->proto.udp->remote_ip[3] = premotbackup.remote_ip[3];
//os_printf("SSDPResponse sent: %s\n\r", SSDPResponse);
//os_printf("SSDPResponse sent to %s\n\r", IP2STR(&premot->remote_ip)); //Cashes
}