There is a particular web site I was not able to connect to from my android devices but connected just fine from my windows PCs/laptops.
After some playing around with wireshark and Shark for Root, I saaw the server never answered the SYN from the android clients. Comparing the SYN packets between the windows 7 and android stacks, the only differences were in the options, and I was able to determine that either the server, or more likely a router/firewall in the path is choking on the TCP Timestamps option (option #8)
I if I temporarily disable the timestamps option echo 0 > /proc/sys/net/ipv4/tcp_timestamps, the android device connects just fine.
Once I identified the problem I found at least one thread showing that some servers still don't handle this 20 year old RFC properly (see http://serverfault.com/questions/235...o-a-syn-packet, I didn't have to muck with windows scaling in my case).
writing to /proc/sys is only a temporary solution though. it gets cleared when the device reboots.
Under linux, I would modify /etc/sysctl.conf to make the change permanent, but it doesn't look like android uses the sysctl.conf system (at least it's not present on any of my devices, custom ROMs or stock)
what's the proper way to disable the Timestamps option permanently?
After some playing around with wireshark and Shark for Root, I saaw the server never answered the SYN from the android clients. Comparing the SYN packets between the windows 7 and android stacks, the only differences were in the options, and I was able to determine that either the server, or more likely a router/firewall in the path is choking on the TCP Timestamps option (option #8)
I if I temporarily disable the timestamps option echo 0 > /proc/sys/net/ipv4/tcp_timestamps, the android device connects just fine.
Once I identified the problem I found at least one thread showing that some servers still don't handle this 20 year old RFC properly (see http://serverfault.com/questions/235...o-a-syn-packet, I didn't have to muck with windows scaling in my case).
writing to /proc/sys is only a temporary solution though. it gets cleared when the device reboots.
Under linux, I would modify /etc/sysctl.conf to make the change permanent, but it doesn't look like android uses the sysctl.conf system (at least it's not present on any of my devices, custom ROMs or stock)
what's the proper way to disable the Timestamps option permanently?