W5100/Ethernet cannot use socket as UDP after using it as TCP

How very strange. I'm using 1.0.4 also. I've verified this on two different Ethernet Shields and a bunch of different Megas and Unos. I wonder if there were different versions of the W5100 chip released? What output do you get?

Here's mine:

Start!
Socket#0:0x14 80 D:0.0.0.0(0)
Socket#1:0x0 0 D:0.0.0.0(0)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)

Socket#0:0x14 80 D:0.0.0.0(0)
Socket#1:0x22 8888 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Unix time = 1366986649

Socket#0:0x14 80 D:0.0.0.0(0)
Socket#1:0x22 8888 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Unix time = 1366986659

Socket#0:0x14 80 D:0.0.0.0(0)
Socket#1:0x22 8888 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Unix time = 1366986669
new Client
Socket#0:0x17 80 D:192.168.10.213(9129)
Socket#1:0x14 80 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
GET / HTTP/1.1
Host: 192.168.10.20
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-Modified-Since: Fri, 02 Jun 2006 09:46:32 GMT

client disconnected

Socket#0:0x22 8888 D:192.168.10.1(123)
Socket#1:0x14 80 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
Unix time = 1366986679
new Client
Socket#0:0x14 80 D:192.168.10.1(123)
Socket#1:0x17 80 D:192.168.10.213(9132)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
GET / HTTP/1.1
Host: 192.168.10.20
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

client disconnected

Socket#0:0x14 80 D:192.168.10.1(123)
Socket#1:0x22 8888 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
UDP FAIL!

Socket#0:0x14 80 D:192.168.10.1(123)
Socket#1:0x22 8888 D:192.168.10.1(123)
Socket#2:0x0 0 D:0.0.0.0(0)
Socket#3:0x0 0 D:0.0.0.0(0)
UDP FAIL!

Once it goes into fail mode it'll never come back for that socket. However, if you play around with refreshing your browser you can sometimes get it to bounce to a different socket and then it'll work. (at least until that socket also has had a TCP conversation on it) I've also verified through tcpdump packet capture that the packet doesn't actually get sent.