IPv6 is pervasive now. Even if you don’t realize it you may have an IPv6 address. (Comcast is fully IPv6 now for instance. AT&T is as well.). Some consumer firewalls block all (non ICMP) inbound IPv6 traffic. For instance OpenWRT does this. The port forwarding/DMZ setting in your firewall only applies to IPv4 traffic. If a client connects to you over IPv6, they will still be blocked. Not all clients have IPv6 addresses, so this may explain the random nature of this bug. (You obviously still have to allow the traffic in your Windows firewall. That allow button that pops up.)
So what can you do if you have IPv6 and you have this bug?
Well, you can just disable IPv6 in your Windows PC network interface properties. This worked for me. But, this isn’t a long term solution.
You can open up your firewall to allow the ports required, or all traffic (like the IPv4 DMZ) to your Windows PC IPv6 Internet address. The problem here is that Windows 7/8 appears to generate (separate from DHCPv6) temporary and random IPv6 addresses for security reasons (ya, a bit much). This may explain why a lot of consumer routers don’t firewall IPv6 at all and just allow all traffic through.
Here is the only ports list that I have been able to find. (From Gearbox?)
Here is how to disable Windows 7/8 from generating random and temporary IPv6 addresses. I welcome a better solution than this if anyone has any ideas.