Commits

Martin Gergov committed 0bc0cbe Merge

Merge with new tcp-ish interface.

Comments (0)

Files changed (7)

-2013-02-12 18:40:14+0200 [-] Log opened.
-2013-02-12 18:40:14+0200 [-] 1
-2013-02-12 18:40:14+0200 [-] ADDING:798006189 with flags:1
-2013-02-12 18:40:14+0200 [-] Starting protocol <__main__.UDTClient instance at 0x1a8c200>
-2013-02-12 18:40:14+0200 [-] ADDING:798006188 with flags:1
-2013-02-12 18:40:14+0200 [-] Starting protocol <__main__.UDTClient instance at 0x1e4eef0>
-2013-02-12 18:40:14+0200 [-] ADDING:8 with flags:1
-2013-02-12 18:40:15+0200 [UDTClient,client] Received '?>!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received '?>!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:15+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:16+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:17+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:18+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!1'
-2013-02-12 18:40:19+0200 [UDTClient,client] Received 'bomb!!!0'
-2013-02-12 18:40:19+0200 [UDTClient,client] REMOVING:798006189 with flags:1
-2013-02-12 18:40:19+0200 [UDTClient,client] Unhandled Error
-	Traceback (most recent call last):
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1173, in run
-	    self.mainLoop()
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 1185, in mainLoop
-	    self.doIteration(t)
-	  File "/usr/local/lib/python2.7/dist-packages/udt4twisted/udtepollreactor.py", line 293, in doPoll
-	    self._handleUDTReadSocketSet(uread, self._POLL_IN)
-	  File "/usr/local/lib/python2.7/dist-packages/udt4twisted/udtepollreactor.py", line 256, in _handleUDTReadSocketSet
-	    event)
-	--- <exception caught here> ---
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 88, in callWithLogger
-	    return callWithContext({"system": lp}, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 73, in callWithContext
-	    return context.call({ILogContext: newCtx}, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
-	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
-	  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
-	    return func(*args,**kw)
-	  File "/usr/local/lib/python2.7/dist-packages/udt4twisted/udtepollreactor.py", line 338, in _doReadOrWrite
-	    del self._udtsockets[fd]
-	exceptions.KeyError: <UDTSOCKET object at 0x1feca08>
-	
-2013-02-12 18:40:19+0200 [-] (UDP Port None Closed)
-2013-02-12 18:40:19+0200 [-] Stopping protocol <__main__.UDTClient instance at 0x1a8c200>
+2013-02-14 16:44:45+0200 [-] Log opened.
+2013-02-14 16:44:45+0200 [-] ADDING:6 with flags:1
+2013-02-14 16:44:45+0200 [-] Hello!
+2013-02-14 16:44:45+0200 [-] EchoFactory starting on 5000
+2013-02-14 16:44:45+0200 [-] Starting factory <__main__.EchoFactory instance at 0x16bd098>
+2013-02-14 16:44:45+0200 [-] ADDING:569511510 with flags:1
+2013-02-14 16:44:45+0200 [-] <<class 'udt4twisted.udt.Port'> of __main__.EchoFactory on 5000>
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] ACCEPT FD:<udt4.pyudt.UdtSocket object at 0x16d8c10> ADDR:('127.0.0.1', 62931)
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] ADDING:569511509 with flags:1
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] CONN MADE!
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] MODIFY:569511509 with flags:5
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] ACCEPT FD:<udt4.pyudt.UdtSocket object at 0x16d8e10> ADDR:('127.0.0.1', 3727)
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] ADDING:569511508 with flags:1
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] CONN MADE!
+2013-02-14 16:44:48+0200 [__main__.EchoFactory] MODIFY:569511508 with flags:5

examples/newclient.py

+import sys
+sys.path.append("../")
+
+from udt4twisted import udtepollreactor
+udtepollreactor.install()
+
+from twisted.python import log
+from twisted.internet import reactor, defer
+from twisted.internet.protocol import DatagramProtocol, Protocol, ClientFactory
+from twisted.python import log
+from udt4twisted import udt
+log.startLogging(sys.stdout)
+
+class Echo(Protocol):
+    def connectionMade(self):
+        print "CONN MADE!"
+        self.transport.write("bomb!!!")
+
+    def dataReceived(self, data):
+        log.msg("received {0} from {1}".format(data, self.transport.getPeer()))
+        self.transport.write("bomb!!!", 200, False)
+
+    def connectionLost(self, reason):
+        print "CONN LOST!"
+
+class EchoFactory(ClientFactory):
+
+    def startedConnecting(self, connector):
+        print 'Started to connect.'
+
+    def buildProtocol(self, addr):
+        print 'Connected.'
+        return Echo()
+
+    def clientConnectionLost(self, connector, reason):
+        print 'Lost connection.  Reason:', reason
+
+    def clientConnectionFailed(self, connector, reason):
+        print 'Connection failed. Reason:', reason
+
+class Tester(object):
+    port = None
+    def connect_to_udt_port(self, res):
+        self.echo = EchoFactory()
+        self.port = reactor.connectUDT("127.0.0.1", 5000, self.echo)
+        print self.port
+
+    def print_hello(self, res):
+        print "Hello!"
+        return "hello"
+
+d = defer.Deferred()
+test = Tester()
+
+d.addCallback(test.print_hello)
+d.addCallback(test.connect_to_udt_port)
+
+reactor.callLater(0.3, d.callback, 1)
+reactor.run()

examples/newserver.py

+import sys
+sys.path.append("../")
+
+from udt4twisted import udtepollreactor
+udtepollreactor.install()
+
+from twisted.python import log
+from twisted.internet import reactor, defer
+from twisted.internet.protocol import DatagramProtocol, Protocol, Factory
+from twisted.python import log
+from udt4twisted import udt
+log.startLogging(sys.stdout)
+
+class Echo(Protocol):
+    counter=0
+    def connectionMade(self):
+        self.transport.write("An apple a day keeps the doctor away\r\n")
+
+    def dataReceived(self, data):
+        print self.counter
+        if self.counter == 100:
+            return
+        log.msg("received {0} from {1}".format(data, self.transport.getPeer()))
+        self.transport.write(data, 10, False)
+        self.counter += 1
+
+    def connectionLost(self, reason):
+        print "CONN LOST!"
+
+class EchoFactory(Factory):
+    def buildProtocol(self, addr):
+        return Echo()
+
+
+
+class Tester(object):
+    port = None
+    def listen_to_udt_port(self, res):
+        self.echo = EchoFactory()
+        self.port = reactor.listenUDT(5000, self.echo)
+        print self.port
+
+    def print_hello(self, res):
+        print "Hello!"
+        return "hello"
+
+
+    def bye(self):
+        print self.port
+        self.port.stopListening()
+        reactor.stop()
+        print "Bye!"
+
+d = defer.Deferred()
+test = Tester()
+
+d.addCallback(test.print_hello)
+d.addCallback(test.listen_to_udt_port)
+
+reactor.callLater(0.3, d.callback, 1)
+reactor.callLater(100, test.bye)
+reactor.run()

tests/test_top_api.py

 import socket as s
 from twisted.trial import unittest
-from twisted.internet.protocol import DatagramProtocol
+from twisted.internet.protocol import DatagramProtocol, Protocol, Factory
+from twisted.internet.protocol import ClientFactory
 from twisted.internet import reactor
 from twisted.internet import udp
 import udt4twisted
 
+class TEcho(Protocol):
+
+    def dataReceived(self, data):
+        self.transport.write(data)
+
+class EchoFactory(Factory):
+
+    def buildProtocol(self, addr):
+        return TEcho()
+
+class CEchoFactory(ClientFactory):
+
+    pr = []
+    def buildProtocol(self, addr):
+        p = TEcho()
+        self.pr.append(p)
+        return p
+
+
 class Echo(DatagramProtocol):
 
     def datagramReceived(self, data, (host, port)):
     def setUp(self):
         pass
     def test_listening(self):
-        udtServer = reactor.listenUDT(9999, Echo())
+        udtServer = reactor.listenUDT(9999, EchoFactory())
         udtServer.stopListening()
 
     def test_udp_handling(self):
 
     def test_udt_conversation(self):
         #FIXME learn how to test transport protocols
-        srv = reactor.listenUDT(6000, Echo())
-        echo = Echo()
+        srv = reactor.listenUDT(6000, EchoFactory())
+        echo = CEchoFactory()
         client = reactor.connectUDT("127.0.0.1", 6000, echo)
-        echo.transport.write("hello")
         srv.stopListening()
-        client.stopListening()
+        client.disconnect()

tests/test_udt_reactor.py

 
 
     def test_reactor_add_udt_socket(self):
-        srv = reactor.listenUDT(0, Echo())
+        srv = reactor.listenUDT(0, EchoFactory())
         self.assertIn(srv.socket.UDTSOCKET.UDTSOCKET, reactor._selectables)
         srv.stopListening()

udt4twisted/udt.py

 import socket
 from zope.interface import implementer
 from twisted.internet import fdesc
+from twisted.python.compat import _PY3
 from twisted.internet import base, defer, address, udp, tcp
-from twisted.python import log, failure
-from twisted.internet import abstract, error, interfaces
+from twisted.internet.task import deferLater
+from twisted.python import log, failure, _reflectpy3 as reflect
+from twisted.python._utilpy3 import unsignedID
+from twisted.python.runtime import platformType
+from twisted.internet import abstract, error, interfaces, main
 import udt4 as udt
 from   udt4 import pyudt
 from udt4 import EASYNCRCV, ECONNLOST
 from socket import AI_PASSIVE
 from errno import EWOULDBLOCK, EINTR, EMSGSIZE, ECONNREFUSED, EAGAIN
+from twisted.python.compat import lazyByteSlice
 import gc
 _sockErrReadIgnore = [EAGAIN, EINTR, EWOULDBLOCK]
 _sockErrReadRefuse = [ECONNREFUSED]
 
-def find_key(dic, val):
+if _PY3:
+    def _concatenate(bObj, offset, bArray):
+        # Python 3 lacks the buffer() builtin and the other primitives don't
+        # help in this case.  Just do the copy.  Perhaps later these buffers can
+        # be joined and FileDescriptor can use writev().  Or perhaps bytearrays
+        # would help.
+        return bObj[offset:] + b"".join(bArray)
+else:
+    def _concatenate(bObj, offset, bArray):
+        # Avoid one extra string copy by using a buffer to limit what we include
+        # in the result.
+        return buffer(bObj, offset) + b"".join(bArray)
+
+# class Connector2(Port2):
+
+#     def doConnect(self, fd=None):
+#         if not fd:
+#             self.socket = self.createInternetSocket()
+#             self.fileno = self.socket.fileno
+#             self.socket.connect_ex(self._connectedAddr)
+#             self._connectDone()
+#             return
+
+#         self._read(fd, self._connectedAddr)
+
+#     def doRead(self, fd=None):
+#         why = Port.doRead(self, self.socket.UDTSOCKET, self._connectedAddr)
+#         #FIXME
+#         if why:
+#             if (why[0] == ECONNLOST):
+#                 self.stopListening()
+#         return why
+
+
+@implementer(interfaces.ITCPTransport, interfaces.ISystemHandle)
+class Connection(abstract.FileDescriptor, tcp._AbortingMixin):
     """
-    From http://www.daniweb.com/software-development/python/ \
-    code/217019/search-a-python-dictionary-both-ways
-    return the key of dictionary dic given the value
+    Superclass of all socket-based FileDescriptors.
+
+    This is an abstract superclass of all objects which represent a UDT socket.
+
+    @ivar logstr: prefix used when logging events related to this connection.
+    @type logstr: C{str}
     """
-    return [k for k, v in dic.iteritems() if v == val][0]
+    _ttl = -1
+    _inorder = True
+    def _closeSocket(self, orderly):
+        try:
+            self.socket.close()
+        except UDTException as ue:
+            pass
 
+    def __init__(self, skt, protocol, reactor=None):
+        abstract.FileDescriptor.__init__(self, reactor=reactor)
+        self.socket = skt
+        self.socket.setblocking(False)
+        self.fileno = skt.fileno
+        self.protocol = protocol
 
-@implementer(
-    interfaces.IListeningPort, interfaces.IUDPTransport,
-    interfaces.ISystemHandle)
-class Port(udp.Port):
+    def getHandle(self):
+        """Return the socket for this connection."""
+        return self.socket
+
+    def doRead(self):
+        """
+        Calls self.protocol.dataReceived with all available data.
+        This reads up to self.bufferSize bytes of data from its socket, then
+        calls self.dataReceived(data) to process it.  If the connection is not
+        lost through an error in the physical recvmsg(),
+        this function will return the result of the dataReceived call.
+        """
+        try:
+            data = udt.recvmsg(self.socket.UDTSOCKET, self.bufferSize)
+        except udt.UDTException as ue:
+            if ue[0] == EASYNCRCV:
+                return
+            else:
+                return main.CONNECTION_LOST
+
+        return self.protocol.dataReceived(data)
+
+
+    def _dataReceived(self, data):
+        if not data:
+            return main.CONNECTION_DONE
+        rval = self.protocol.dataReceived(data)
+        if rval is not None:
+            offender = self.protocol.dataReceived
+            warningFormat = (
+                'Returning a value other than None from %(fqpn)s is '
+                'deprecated since %(version)s.')
+            warningString = deprecate.getDeprecationWarningString(
+                offender, versions.Version('Twisted', 11, 0, 0),
+                format=warningFormat)
+            deprecate.warnAboutFunction(offender, warningString)
+        return rval
+
+
+    def writeSomeData(self, data, ttl=-1, inorder=True):
+        """
+        Write given data to this UDT connection.
+        For now it will send all the data in the buffer.
+        """
+        try:
+            return udt.sendmsg(self.socket.UDTSOCKET,
+                               data, len(data), ttl, inorder)
+        except udt.UDTException as ue:
+            if ue[0] == EASYNCRCV:
+                return 0
+            elif ue[0] == ECONNLOST:
+                return main.CONNECTION_LOST
+
+    def write(self, data, ttl=-1, inorder=True):
+        """Reliably write some data.
+
+        The data is buffered until the underlying file descriptor is ready
+        for writing. If there is more than C{self.bufferSize} data in the
+        buffer and this descriptor has a registered streaming producer, its
+        C{pauseProducing()} method will be called. Also options for ttl and
+        inorder will be stored and passed to producer.
+        """
+        if isinstance(data, unicode): # no, really, I mean it
+            raise TypeError("Data must not be unicode")
+        if not self.connected or self._writeDisconnected:
+            return
+        if data:
+            self._tempDataBuffer.append(data)
+            self._tempDataLen += len(data)
+            self._ttl = ttl
+            self._inorder = inorder
+            self._maybePauseProducer()
+            self.startWriting()
+
+    def doWrite(self):
+        """
+        Called when data can be written.
+
+        @return: C{None} on success, an exception or a negative integer on
+            failure.
+
+        @see: L{twisted.internet.interfaces.IWriteDescriptor.doWrite}.
+        """
+        if len(self.dataBuffer) - self.offset < self.SEND_LIMIT:
+            # If there is currently less than SEND_LIMIT bytes left to send
+            # in the string, extend it with the array data.
+            self.dataBuffer = _concatenate(
+                self.dataBuffer, self.offset, self._tempDataBuffer)
+            self.offset = 0
+            self._tempDataBuffer = []
+            self._tempDataLen = 0
+
+        # Send as much data as you can.
+        if self.offset:
+            l = self.writeSomeData(lazyByteSlice(self.dataBuffer, self.offset),
+                                   self._ttl, self._inorder)
+        else:
+            l = self.writeSomeData(self.dataBuffer, self._ttl, self._inorder)
+
+        # There is no writeSomeData implementation in Twisted which returns
+        # < 0, but the documentation for writeSomeData used to claim negative
+        # integers meant connection lost.  Keep supporting this here,
+        # although it may be worth deprecating and removing at some point.
+        if isinstance(l, Exception) or l < 0:
+            return l
+        self.offset += l
+        # If there is nothing left to send,
+        if self.offset == len(self.dataBuffer) and not self._tempDataLen:
+            self.dataBuffer = b""
+            self.offset = 0
+            # stop writing.
+            self.stopWriting()
+            # If I've got a producer who is supposed to supply me with data,
+            if self.producer is not None and ((not self.streamingProducer)
+                                              or self.producerPaused):
+                # tell them to supply some more.
+                self.producerPaused = 0
+                self.producer.resumeProducing()
+            elif self.disconnecting:
+                # But if I was previously asked to let the connection die, do
+                # so.
+                return self._postLoseConnection()
+            elif self._writeDisconnecting:
+                # I was previously asked to half-close the connection.  We
+                # set _writeDisconnected before calling handler, in case the
+                # handler calls loseConnection(), which will want to check for
+                # this attribute.
+                self._writeDisconnected = True
+                result = self._closeWriteConnection()
+                return result
+        return None
+
+
+    def _closeWriteConnection(self):
+        try:
+            getattr(self.socket, self._socketShutdownMethod)(1)
+        except socket.error:
+            pass
+        p = interfaces.IHalfCloseableProtocol(self.protocol, None)
+        if p:
+            try:
+                p.writeConnectionLost()
+            except:
+                f = failure.Failure()
+                log.err()
+                self.connectionLost(f)
+
+
+    def readConnectionLost(self, reason):
+        raise NotImplementedError()
+        p = interfaces.IHalfCloseableProtocol(self.protocol, None)
+        if p:
+            try:
+                p.readConnectionLost()
+            except:
+                log.err()
+                self.connectionLost(failure.Failure())
+        else:
+            self.connectionLost(reason)
+
+
+
+    def connectionLost(self, reason):
+        """See abstract.FileDescriptor.connectionLost().
+        """
+        # Make sure we're not called twice, which can happen e.g. if
+        # abortConnection() is called from protocol's dataReceived and then
+        # code immediately after throws an exception that reaches the
+        # reactor. We can't rely on "disconnected" attribute for this check
+        # since twisted.internet._oldtls does evil things to it:
+        if not hasattr(self, "socket"):
+            return
+        abstract.FileDescriptor.connectionLost(self, reason)
+        self._closeSocket(not reason.check(error.ConnectionAborted))
+        protocol = self.protocol
+        del self.protocol
+        del self.socket
+        del self.fileno
+        protocol.connectionLost(reason)
+
+
+    logstr = "Uninitialized"
+
+    def logPrefix(self):
+        """Return the prefix to log with when I own the logging thread.
+        """
+        return self.logstr
+
+class Server(Connection):
     """
-    UDT port, listening for packets.
+    Serverside socket-stream connection class.
+
+    This is a serverside network connection transport; a socket which came from
+    an accept() on a server.
     """
-    maxThroughput = 256 * 2048
+    _base = Connection
+
+    _addressType = address.IPv4Address
+
+    def __init__(self, sock, protocol, client, server, sessionno, reactor):
+        """
+        Server(sock, protocol, client, server, sessionno)
+        Initialize it with a socket, a protocol, a descriptor for my peer (a
+        tuple of host, port describing the other end of the connection), an
+        instance of Port, and a session number.
+        """
+        Connection.__init__(self, sock, protocol, reactor)
+        self.server = server
+        self.client = client
+        self.sessionno = sessionno
+        self.hostname = client[0]
+
+        logPrefix = self._getLogPrefix(self.protocol)
+        self.logstr = "%s,%s,%s" % (logPrefix,
+                                    sessionno,
+                                    self.hostname)
+        if self.server is not None:
+            self.repstr = "<%s #%s on %s>" % (self.protocol.__class__.__name__,
+                                              self.sessionno,
+                                              self.server._realPortNumber)
+        self.startReading()
+        self.connected = 1
+
+    def __repr__(self):
+        """
+        A string representation of this connection.
+        """
+        return self.repstr
+
+
+    @classmethod
+    def _fromConnectedSocket(cls, fileDescriptor, addressFamily, factory,
+                             reactor):
+        """
+        Create a new L{Server} based on an existing connected I{SOCK_STREAM}
+        socket.
+
+        Arguments are the same as to L{Server.__init__}, except where noted.
+
+        @param fileDescriptor: An integer file descriptor associated with a
+            connected socket.  The socket must be in non-blocking mode.  Any
+            additional attributes desired, such as I{FD_CLOEXEC}, must also be
+            set already.
+
+        @param addressFamily: The address family (sometimes called I{domain})
+            of the existing socket.  For example, L{socket.AF_INET}.
+
+        @return: A new instance of C{cls} wrapping the socket given by
+            C{fileDescriptor}.
+        """
+        raise NotImplementedError()
+        addressType = address.IPv4Address
+        if addressFamily == socket.AF_INET6:
+            addressType = address.IPv6Address
+        skt = socket.fromfd(fileDescriptor, addressFamily, socket.SOCK_STREAM)
+        addr = skt.getpeername()
+        protocolAddr = addressType('TCP', addr[0], addr[1])
+        localPort = skt.getsockname()[1]
+
+        protocol = factory.buildProtocol(protocolAddr)
+        if protocol is None:
+            skt.close()
+            return
+
+        self = cls(skt, protocol, addr, None, addr[1], reactor)
+        self.repstr = "<%s #%s on %s>" % (
+            self.protocol.__class__.__name__, self.sessionno, localPort)
+        protocol.makeConnection(self)
+        return self
+
+
+    def getHost(self):
+        """
+        Returns an L{IPv4Address} or L{IPv6Address}.
+
+        This indicates the server's address.
+        """
+        host, port = self.socket.getsockname()[:2]
+        return self._addressType('UDP', host, port)
+
+
+    def getPeer(self):
+        """
+        Returns an L{IPv4Address} or L{IPv6Address}.
+
+        This indicates the client's address.
+        """
+        return self._addressType('UDP', *self.client[:2])
+
+@implementer(interfaces.IListeningPort)
+class Port(base.BasePort):
+    """
+    A UDT server port, listening for connections.
+
+    When a connection is accepted, this will call a factory's buildProtocol
+    with the incoming address as an argument, according to the specification
+    described in L{twisted.internet.interfaces.IProtocolFactory}.
+
+    If you wish to change the sort of transport that will be used, the
+    C{transport} attribute will be called with the signature expected for
+    C{Server.__init__}, so it can be replaced.
+
+    @ivar deferred: a deferred created when L{stopListening} is called, and
+        that will fire when connection is lost. This is not to be used it
+        directly: prefer the deferred returned by L{stopListening} instead.
+    @type deferred: L{defer.Deferred}
+
+    @ivar disconnecting: flag indicating that the L{stopListening} method has
+        been called and that no connections should be accepted anymore.
+    @type disconnecting: C{bool}
+
+    @ivar connected: flag set once the listen has successfully been called on
+        the socket.
+    @type connected: C{bool}
+
+    @ivar _preexistingSocket: If not C{None}, a L{socket.socket} instance which
+        was created and initialized outside of the reactor and will be used to
+        listen for connections (instead of a new socket being created by this
+        L{Port}).
+    """
+
+    socketType = socket.SOCK_DGRAM
+    transport = Server
+
+    sessionno = 0
+    interface = ''
+    backlog = 50
+
+    _type = 'UDT'
+
+    # Actual port number being listened on, only set to a non-None
+    # value when we are actually listening.
+    _realPortNumber = None
+
+    # An externally initialized socket that we will use, rather than creating
+    # our own.
+    #TODO: this will not be supported soon
+    _preexistingSocket = None
+
+    addressFamily = socket.AF_INET
+    _addressType = address.IPv4Address
 
     def __init__(self,
                  port,
-                 proto,
+                 factory,
                  interface='localhost',
                  maxPacketSize=8192,
                  reactor=None,
         """
         Initialize with a numeric port to listen on.
         """
-        base.BasePort.__init__(self, reactor)
+        base.BasePort.__init__(self, reactor=reactor)
         self.port = port
-        self.protocol = proto
-        self.maxPacketSize = maxPacketSize
+        self.factory = factory
+        self.backlog = backlog
         if interface == '':
             self.interface = "127.0.0.1"
         else:
             self.interface = socket.gethostbyname_ex(interface)[2][0]
-        self.setLogStr()
         self._connectedAddr = None
-        self.backlog = backlog
         self.addresses = {}
 
+    @classmethod
+    def _fromListeningDescriptor(cls, reactor, fd, addressFamily, factory):
+        """
+        Create a new L{Port} based on an existing listening I{SOCK_DGRAM}
+        socket.
 
-    def getHandle(self):
+        Arguments are the same as to L{Port.__init__}, except where noted.
+
+        @param fd: An integer file descriptor associated with a listening
+            socket.  The socket must be in non-blocking mode.  Any additional
+            attributes desired, such as I{FD_CLOEXEC}, must also be set already.
+
+        @param addressFamily: The address family (sometimes called I{domain}) of
+            the existing socket.  For example, L{socket.AF_INET}.
+
+        @return: A new instance of C{cls} wrapping the socket given by C{fd}.
         """
-        Return a socket object.
-        """
-        return pyudt.UdtSocket
+        port = socket.fromfd(fd, addressFamily, cls.socketType)
+        interface = port.getsockname()[0]
+        self = cls(None, factory, None, interface, reactor)
+        self._preexistingSocket = port
+        return self
+
+
+    def __repr__(self):
+        if self._realPortNumber is not None:
+            return "<%s of %s on %s>" % (self.__class__,
+                self.factory.__class__, self._realPortNumber)
+        else:
+            return "<%s of %s (not listening)>" % (self.__class__, self.factory.__class__)
 
     def createInternetSocket(self):
         s = pyudt.UdtSocket(self.addressFamily,
                             self.socketType,
                             AI_PASSIVE)
         s.setblocking(False)
-        #s.setsockopt(udt.
-        #FIXME
-        #fdesc._setCloseOnExec(s.UDTSOCKET.udtsocket)
         return s
 
-    def _connectDone(self):
-        self.connected = 1
-        logPrefix = self._getLogPrefix(self.protocol)
-        self.logstr = "%s,client" % logPrefix
-        self.startReading()
-        self.protocol.makeConnection(self)
-
-
-    def connect(self, host, port):
-        """
-        Connect to a remote host.
-        """
-        if self._connectedAddr:
-            raise RuntimeError("already connected, reconnecting is not currently supported")
-        if not abstract.isIPAddress(host):
-            raise ValueError("please pass only IP addresses, not domain names")
-        self._connectedAddr = (host, port)
-        self.doConnect()
-
     def _bindSocket(self):
         """
         Bind socket to an address.
         # Make sure that if we listened on port 0, we update that to
         # reflect what the OS actually assigned us.
         self._realPortNumber = skt.getsockname()[1]
-
-        log.msg("%s starting on %s" % (
-                self._getLogPrefix(self.protocol), self._realPortNumber))
-
         self.connected = 1
         self.socket = skt
         self.fileno = skt.fileno
 
+
     def startListening(self):
-        """
-        Create and bind my socket, and begin listening on it.
+        """Create and bind my socket, and begin listening on it.
 
         This is called on unserialization, and must be called after creating a
         server to begin listening on the specified port.
         """
-        udp.Port.startListening(self)
-        self.socket.listen(self.backlog)
 
 
-    def doRead(self, fd=None, addr=None):
-        """
-        Called when my socket is ready for reading.
+        if self._preexistingSocket is None:
+            # Create a new socket and make it listen
+            self._bindSocket()
+            #udp.Port.startListening(self)
+            self.socket.listen(self.backlog)
+        else:
+            raise NotImplementedError()
+        # Make sure that if we listened on port 0, we update that to
+        # reflect what the OS actually assigned us.
+
+        log.msg("%s starting on %s" % (
+                self._getLogPrefix(self.factory), self._realPortNumber))
+
+        # The order of the next 5 lines is kind of bizarre.  If no one
+        # can explain it, perhaps we should re-arrange them.
+        self.factory.doStart()
+        self.numberAccepts = 100
+        self.startReading()
+
+
+    def _buildAddr(self, address):
+        host, port = address[:2]
+        return self._addressType('UDP', host, port)
+
+
+    def doRead(self):
+        """Called when my socket is ready for reading.
+        This accepts a connection and calls self.protocol() to handle the
+        wire-level protocol.
         """
         try:
-            #print "recv from:", fd, " size:", self.maxPacketSize
-            data = udt.recvmsg(fd, self.maxPacketSize)
-            if addr == None:
-                addr = self.addresses[fd.UDTSOCKET][1]
+            if platformType == "posix":
+                numAccepts = self.numberAccepts
+            else:
+                # win32 event loop breaks if we do more than one accept()
+                # in an iteration of the event loop.
+                numAccepts = 1
+            for i in range(numAccepts):
+                # we need this so we can deal with a factory's buildProtocol
+                # calling our loseConnection
+                if self.disconnecting:
+                    return
+                try:
+                    skt, addr = self.socket.accept()
+                    log.msg("ACCEPT FD:{0} ADDR:{1}".format(skt,
+                                                            addr))
+                except udt.UDTException as (enum, message):
+                    if enum == EASYNCRCV:
+                        self.numberAccepts = i
+                        break
+                    else:
+                        log.msg("Could not accept new connections!")
+                        break
+                    raise
+                #FIXME
+                #fdesc._setCloseOnExec(skt.fileno())
+                protocol = self.factory.buildProtocol(self._buildAddr(addr))
+                if protocol is None:
+                    skt.close()
+                    continue
+                s = self.sessionno
+                self.sessionno = s+1
+                transport = self.transport(skt,
+                                           protocol,
+                                           addr, self, s, self.reactor)
+                protocol.makeConnection(transport)
+            else:
+                self.numberAccepts = self.numberAccepts+20
+        except:
+            # Note that in TLS mode, this will possibly catch SSL.Errors
+            # raised by self.socket.accept()
+            #
+            # There is no "except SSL.Error:" above because SSL may be
+            # None if there is no SSL support.  In any case, all the
+            # "except SSL.Error:" suite would probably do is log.deferr()
+            # and return, so handling it here works just as well.
+            log.deferr()
+
+    def loseConnection(self, connDone=failure.Failure(main.CONNECTION_DONE)):
+        """
+        Stop accepting connections on this port.
+
+        This will shut down the socket and call self.connectionLost().  It
+        returns a deferred which will fire successfully when the port is
+        actually closed, or with a failure if an error occurs shutting down.
+        """
+        self.disconnecting = True
+        self.stopReading()
+        if self.connected:
+            self.deferred = deferLater(
+                self.reactor, 0, self.connectionLost, connDone)
+            return self.deferred
+
+    stopListening = loseConnection
+
+    def _logConnectionLostMsg(self):
+        """
+        Log message for closing port
+        """
+        log.msg('(%s Port %s Closed)' % (self._type, self._realPortNumber))
+
+
+    def connectionLost(self, reason):
+        """
+        Cleans up the socket.
+        """
+        self._logConnectionLostMsg()
+        self._realPortNumber = None
+
+        base.BasePort.connectionLost(self, reason)
+        self.connected = False
+        self.socket.close()
+        del self.socket
+        del self.fileno
+
+        try:
+            self.factory.doStop()
+        finally:
+            self.disconnecting = False
+
+
+    def logPrefix(self):
+        """Returns the name of my class, to prefix log entries with.
+        """
+        return reflect.qual(self.factory.__class__)
+
+
+    def getHost(self):
+        """
+        Return an L{IPv4Address} or L{IPv6Address} indicating the listening
+        address of this port.
+        """
+        host, port = self.socket.getsockname()[:2]
+        return self._addressType('UDP', host, port)
+
+class Client(Connection, tcp._BaseBaseClient):
+    """
+    A transport for a UDT protocol.
+    Do not create these directly; use L{IReactorTCP.connectTCP}.
+    """
+    _addressType = address.IPv4Address
+    _base = Connection
+    _commonConnection = Connection
+    addressFamily = socket.AF_INET
+    socketType = socket.SOCK_DGRAM
+
+    def _stopReadingAndWriting(self):
+        """
+        Implement the POSIX-ish (i.e.
+        L{twisted.internet.interfaces.IReactorFDSet}) method of detaching this
+        socket from the reactor for L{_BaseBaseClient}.
+        """
+        if hasattr(self, "reactor"):
+            # this doesn't happen if we failed in __init__
+            self.stopReading()
+            self.stopWriting()
+
+    def _collectSocketDetails(self):
+        """
+        Clean up references to the socket and its file descriptor.
+
+        @see: L{_BaseBaseClient}
+        """
+        del self.socket, self.fileno
+
+
+
+    def _finishInit(self, whenDone, skt, error, reactor):
+        """
+        Called by subclasses to continue to the stage of initialization where
+        the socket connect attempt is made.
+
+        @param whenDone: A 0-argument callable to invoke once the connection is
+            set up.  This is C{None} if the connection could not be prepared
+            due to a previous error.
+
+        @param skt: The socket object to use to perform the connection.
+        @type skt: C{socket._socketobject}
+
+        @param error: The error to fail the connection with.
+
+        @param reactor: The reactor to use for this client.
+        @type reactor: L{twisted.internet.interfaces.IReactorTime}
+        """
+        if whenDone:
+            self._commonConnection.__init__(self, skt, None, reactor)
+            reactor.callLater(0, whenDone)
+        else:
+            reactor.callLater(0, self.failIfNotConnected, error)
+
+
+    def createInternetSocket(self):
+        s = pyudt.UdtSocket(self.addressFamily, self.socketType)
+        s.setblocking(False)
+        #FIXME
+        #fdesc._setCloseOnExec(s.fileno())
+        return s
+
+    def getHost(self):
+        """
+        Returns an L{IPv4Address}.
+
+        This indicates the address from which I am connecting.
+        """
+        return self._addressType('UDP', *self.socket.getsockname()[:2])
+
+
+    def getPeer(self):
+        """
+        Returns an L{IPv4Address}.
+
+        This indicates the address that I am connected to.
+        """
+        # an ipv6 realAddress has more than two elements, but the IPv6Address
+        # constructor still only takes two.
+        return self._addressType('UDP', *self.realAddress[:2])
+
+
+    def __repr__(self):
+        s = '<%s to %s at %x>' % (self.__class__, self.addr, unsignedID(self))
+        return s
+
+
+    def __init__(self, host, port, bindAddress, connector, reactor=None):
+        # BaseClient.__init__ is invoked later
+        self.connector = connector
+        self.addr = (host, port)
+
+        whenDone = self.resolveAddress
+        err = None
+        skt = None
+
+        if abstract.isIPAddress(host):
+            self._requiresResolution = False
+        else:
+            self._requiresResolution = True
+        try:
+            skt = self.createInternetSocket()
         except udt.UDTException as ue:
-            #print ue
-            return ue
-        except socket.error as se:
-            pass
-        else:
-            #read += len(data)
+            err = error.ConnectBindError(ue[0], ue[1])
+            whenDone = None
+        if whenDone and bindAddress is not None:
             try:
-                self.protocol.datagramReceived(data, addr)
-            except:
-                log.err()
-    def write(self, datagram, addr=None, ttl=-1, inorder=True):
+                bindinfo = bindAddress
+                skt.bind(bindinfo)
+            except udt.UDTException as ue:
+                err = error.ConnectBindError(ue[0], ue[1])
+                whenDone = None
+        self._finishInit(whenDone, skt, err, reactor)
+
+    def doConnect(self):
         """
-        Write datagram to address.
-        @type datagram: C{str}
-        @param datagram: The datagram to be sent.
-
-        @type addr: C{tuple} containing C{str} as first element and C{int} as
-            second element, or C{None}
-        @param addr: A tuple of (I{stringified dotted-quad IP address},
-            I{integer port number}); can be C{None} in connected mode.
+        Initiate the outgoing connection attempt.
+        @note: Applications do not need to call this method; it will be invoked
+            internally as part of L{IReactorTCP.connectTCP}.
         """
-        if not self._connectedAddr:
-            assert addr != None
-            if not addr[0].replace(".", "").isdigit() and addr[0] != "<broadcast>":
-                warnings.warn("Please only pass IPs to write(), not hostnames",
-                              DeprecationWarning, stacklevel=2)
-        try:
-            if self._connectedAddr:
-                udt.sendmsg(self.socket.UDTSOCKET, datagram, len(datagram),
-                            ttl, inorder)
-                return
-            socket = [v[0] for k, v in self.addresses.iteritems() if  v[1] == addr][0]
-            return udt.sendmsg(socket, datagram, len(datagram), ttl, inorder)
-        except KeyError:
-            print "No key found!"
-        except udt.UDTException as ue:
-            print ue
-            if ue[0] == ECONNLOST:
-                del self.reactor._udtsockets[socket.UDTSOCKET]
-                self.stopListening()
-
-
-    def _connectToProtocol(self):
-        self.protocol.makeConnection(self)
-        self.startReading()
-
-
-
-class Connector(Port):
-
-    def doConnect(self, fd=None):
-        if not fd:
-            self.socket = self.createInternetSocket()
-            self.fileno = self.socket.fileno
-            self.socket.connect_ex(self._connectedAddr)
-            self._connectDone()
+        self.doWrite = self.doConnect
+        self.doRead = self.doConnect
+        if not hasattr(self, "connector"):
+            # this happens when connection failed but doConnect
+            # was scheduled via a callLater in self._finishInit
             return
 
-        self._read(fd, self._connectedAddr)
+        # err = self.socket.getsockopt(udt.UDT_STATE)
+        # if err == udt.UDTSTATUS_CONNECTED:
+        #     self.failIfNotConnected(error.getConnectError((
+        #                 err, err)))
+        #     return
 
-    def doRead(self, fd=None):
-        why = Port.doRead(self, self.socket.UDTSOCKET, self._connectedAddr)
-        #FIXME
-        if why:
-            if (why[0] == ECONNLOST):
-                self.stopListening()
-        return why
+        # doConnect gets called twice.  The first time we actually need to
+        # start the connection attempt.  The second time we don't really
+        # want to (SO_ERROR above will have taken care of any errors, and if
+        # it reported none, the mere fact that doConnect was called again is
+        # sufficient to indicate that the connection has succeeded), but it
+        # is not /particularly/ detrimental to do so.  This should get
+        # cleaned up some day, though.
+        try:
+            #FIXME connection happens in background,
+            #epoll monitoring needed
+            connectResult = self.socket.connect_ex(self.realAddress)
+        except udt.UDTException as ue:
+            connectResult = ue[0]
+        if connectResult:
+            if connectResult == udt.EISCONN:
+                pass
+            elif connectResult in (EASYNCRCV,):
+                self.startReading()
+                self.startWriting()
+                return
+            else:
+                self.failIfNotConnected(error.getConnectError((
+                            connectResult, connectResult)))
+                return
+
+        # If I have reached this point without raising or returning, that means
+        # that the socket is connected.
+        del self.doWrite
+        del self.doRead
+        # we first stop and then start, to reset
+        #any references to the old doRead
+        self.stopReading()
+        self.stopWriting()
+        self._connectDone()
+
+    def _connectDone(self):
+        """
+        This is a hook for when a connection attempt has succeeded.
+
+        Here, we build the protocol from the
+        L{twisted.internet.protocol.ClientFactory} that was passed in, compute
+        a log string, begin reading so as to send traffic to the newly built
+        protocol, and finally hook up the protocol itself.
+        """
+        self.protocol = self.connector.buildProtocol(self.getPeer())
+        self.connected = 1
+        logPrefix = self._getLogPrefix(self.protocol)
+        self.logstr = "%s,client" % logPrefix
+        self.startReading()
+        self.protocol.makeConnection(self)
+
+class Connector(base.BaseConnector):
+    """
+    A L{Connector} provides of L{twisted.internet.interfaces.IConnector} for
+    all POSIX-style reactors.
+
+    @ivar _addressType: the type returned by L{Connector.getDestination}.
+        Either L{IPv4Address} or L{IPv6Address}, depending on the type of
+        address.
+    @type _addressType: C{type}
+    """
+    _addressType = address.IPv4Address
+
+    def __init__(self, host, port, factory, timeout, bindAddress, reactor=None):
+        self.host, self.port = host, port
+        self.bindAddress = bindAddress
+        base.BaseConnector.__init__(self, factory, timeout, reactor)
+
+
+    def _makeTransport(self):
+        """
+        Create a L{Client} bound to this L{Connector}.
+
+        @return: a new L{Client}
+        @rtype: L{Client}
+        """
+        return Client(self.host, self.port,
+                      self.bindAddress, self, self.reactor)
+
+
+    def getDestination(self):
+        """
+        @see: L{twisted.internet.interfaces.IConnector.getDestination}.
+        """
+        return self._addressType('UDP', self.host, self.port)

udt4twisted/udtepollreactor.py

 from twisted.internet import posixbase, base
 from twisted.internet.epollreactor import EPollReactor, _ContinuousPolling
 from twisted.internet import threads
+from twisted.internet.main import CONNECTION_DONE, CONNECTION_LOST
 import udt4
 from udt4 import pyudt, accept, sendmsg, recvmsg, UDT_RCVDATE, UDTException
 from udt4.pyudt import UdtSocket
 
 @implementer(IReactorFDSet)
 class _UDTContinuousPolling(_ContinuousPolling):
-    _POLL_DISCONNECTED = (udt4.ECONNLOST | udt4.UDT_EPOLL_ERR)
+    _POLL_DISCONNECTED = udt4.ECONNLOST
     _POLL_IN = udt4.UDT_EPOLL_IN
     _POLL_OUT = udt4.UDT_EPOLL_OUT
 
 
 @implementer(IReactorFDSet, IReactorUDT)
 class UDTEPollReactor(EPollReactor):
-    _POLL_DISCONNECTED = (udt4.ECONNLOST | udt4.UDT_EPOLL_ERR)
+    _POLL_DISCONNECTED = udt4.ECONNLOST
     _POLL_IN = udt4.UDT_EPOLL_IN
     _POLL_OUT = udt4.UDT_EPOLL_OUT
 
         posixbase.PosixReactorBase.__init__(self)
         self.addSystemEventTrigger("after", "shutdown", udt4.cleanup)
 
+    def _isUDT(self, xer):
+        """
+        Private method that, based on selectable instance, decides
+        if something is an udt socket
+        """
+        if isinstance(xer, udt.Port) or isinstance(xer, udt.Connection):
+            return True
+        else:
+            return False
 
     def _add(self, xer, primary, other, selectables, event, antievent):
         """
             if fd in other:
                 flags |= antievent
                 #FIXME for now remove and add again
-                if isinstance(xer, udt.Port):
+                if self._isUDT(xer):
                     self._poller.remove_usock(fd)
                     self._poller.add_usock(fd, flags)
                 else:
                     self._poller.remove_ssock(fd)
                     self._poller.add_ssock(fd, flags)
                 #self._poller.modify(fd, flags)
-                log.msg("MODIFY:{0} with flags:{1}".format(fd, flags))
             else:
-                if isinstance(xer, udt.Port):
-
+                if self._isUDT(xer):
                     self._poller.add_usock(fd, flags)
                 else:
                     self._poller.add_ssock(fd, flags)
                 #FIXME for now remove and add again
                 flags = antievent
                 # See comment above modify call in _add.
-                if isinstance(xer, udt.Port):
-                    self._poller.remove_usock(fd)
-                    self._poller.add_usock(fd, flags)
+                if self._isUDT(xer):
+                    #FIXME this breaks when server socket stops listening
+                    # self._poller.remove_usock(fd)
+                    # self._poller.add_usock(fd, flags)
+                    pass
                 else:
                     self._poller.remove_ssock(fd)
                     self._poller.add_ssock(fd, flags)
                 #self._poller.modify(fd, flags)
-                log.msg("MODIFY:{0} with flags:{1}".format(fd, flags))
             else:
                 flags = event
-                if isinstance(xer, udt.Port):
+                if self._isUDT(xer):
                     del selectables[fd]
                 else:
                     del selectables[fd]
                 # See comment above _control call in _add.
-                if isinstance(xer, udt.Port):
+                if self._isUDT(xer):
                     self._poller.remove_usock(fd, flags)
                 else:
                     #FIXME Apparently flags are not parsed in this method
             else:
                 log.callWithLogger(selectable, _drdw, selectable, fd,
                                    event)
-    def _handleUDTReadSocketSet(self, set, event):
+    def _handleUDTSocketSet(self, set, event):
         _drdw = self._doReadOrWrite
         for fd in set:
             try:
                 selectable = self._selectables[fd.UDTSOCKET]
-                socket, addr = accept(fd)
-                log.msg("ACCEPT FD:{0}SELECT:{1}".format(fd, selectable))
-                selectable.addresses[socket.UDTSOCKET] = (socket, addr)
-                self._udtsockets[socket.UDTSOCKET] = selectable
-                socket = UdtSocket(_sock=socket)
-                socket.setblocking(False)
-                self._poller.add_usock(socket.UDTSOCKET,
-                                       self._POLL_IN | self._POLL_DISCONNECTED)
             except KeyError:
-                if self._udtsockets.has_key(fd.UDTSOCKET):
-                    selectable = self._udtsockets[fd.UDTSOCKET]
-                    log.callWithLogger(selectable,
-                                       _drdw,
-                                       selectable,
-                                       fd,
-                                       event)
-            except UDTException as ue:
-                if ue[0] == 5006:
-                    log.callWithLogger(selectable,
-                                       _drdw,
-                                       selectable,
-                                       fd,
-                                       event)
+                pass
             else:
-                pass
-
-
-    def _handleUDTWriteSocketSet(self, set, event):
-        """
-        Has no job for now.
-        """
-        pass
+                log.callWithLogger(selectable, _drdw, selectable, fd,
+                                   event)
 
     tests = True
     sock = None
 
         #handle UDT sockets
         uread, uwrite = l[:2]