mapping.local_port = port->local_port;
mapping.local_host = port->local_addr;
if(port->external_port == -1)
- mapping.remote_port = rand()%(0xffff - 1024) + 1024;
- else
- mapping.remote_port = port->external_port;
+ port->external_port = rand()%(0xffff - 1024) + 1024;
+ mapping.remote_port = port->external_port;
mapping.remote_host = "";
snprintf(description, 128, "%s %s at %s:%d",
PACKAGE_NAME,
}
}
if(*port_mapping == NULL) {
- *port_mapping = linphone_upnp_port_binding_new_or_collect(lupnp->pending_bindings, protocol, port, port);
+ *port_mapping = linphone_upnp_port_binding_new_or_collect(lupnp->pending_bindings, protocol, port, -1);
}
// Get addresses
bool_t linphone_upnp_port_binding_equal(const UpnpPortBinding *port1, const UpnpPortBinding *port2) {
return port1->protocol == port2->protocol &&
- port1->local_port == port2->local_port &&
- port1->external_port == port2->external_port;
+ port1->local_port == port2->local_port &&
+ (port1->external_port == -1 || port2->external_port == -1 || port1->external_port == port2->external_port);
}
UpnpPortBinding *linphone_upnp_port_binding_equivalent_in_list(MSList *list, const UpnpPortBinding *port) {