From: <vi...@us...> - 2010-08-18 18:14:30
|
Revision: 12163 http://amsn.svn.sourceforge.net/amsn/?rev=12163&view=rev Author: vivia Date: 2010-08-18 18:14:22 +0000 (Wed, 18 Aug 2010) Log Message: ----------- FTProgress support complete. Also hopefully caught a bug :) Modified Paths: -------------- branches/p2p/msnp2p/filetransfer.tcl branches/p2p/msnp2p/session.tcl branches/p2p/msnp2p/transport/direct.tcl branches/p2p/msnp2p/transport/switchboard.tcl branches/p2p/msnp2p/transport/transport_manager.tcl Modified: branches/p2p/msnp2p/filetransfer.tcl =================================================================== --- branches/p2p/msnp2p/filetransfer.tcl 2010-08-18 16:45:56 UTC (rev 12162) +++ branches/p2p/msnp2p/filetransfer.tcl 2010-08-18 18:14:22 UTC (rev 12163) @@ -31,7 +31,7 @@ } - set handlers { p2pBridgeSelected On_bridge_selected p2pOutgoingSessionTransferCompleted On_transfer_completed p2pChunkReceived2 On_chunk_received p2pAccepted On_session_accepted p2pChunkSent2 On_chunk_sent p2pTransreqReceived On_transreq_received } + set handlers { p2pBridgeSelected On_bridge_selected p2pOutgoingSessionTransferCompleted On_transfer_completed p2pChunkReceived2 On_chunk_received p2pAccepted On_session_accepted p2pChunkSent2 On_chunk_sent p2pTransreqReceived On_transreq_received p2pConnecting On_connecting p2pListening On_listening p2pIdentifying On_identifying p2pTimeout On_timeout } foreach { event callback } $handlers { ::Event::registerEvent $event all [list $self $callback] @@ -242,6 +242,35 @@ } + method On_timeout { event session } { + + if { $session != $p2pSession } { return } + ::amsn::FTProgress l $self $options(-localpath) + + } + + method On_connecting { event session ip port } { + + if { $session != $p2pSession } { return } + ::amsn::FTProgress c $self $options(-localpath) $ip $port + + } + + method On_listening { event session ip port } { + + status_log "Listening for session $session and we are $p2pSession" + if { $session != $p2pSession } { return } + ::amsn::FTProgress w $self $options(-localpath) $port + + } + + method On_identifying { event session } { + + if { $session != $p2pSession } { return } + ::amsn::FTProgress i $self $options(-localpath) + + } + method On_session_accepted { event session } { if { $session != $p2pSession } { return } Modified: branches/p2p/msnp2p/session.tcl =================================================================== --- branches/p2p/msnp2p/session.tcl 2010-08-18 16:45:56 UTC (rev 12162) +++ branches/p2p/msnp2p/session.tcl 2010-08-18 18:14:22 UTC (rev 12163) @@ -107,7 +107,7 @@ set body [SLPTransferResponseBody %AUTO% -bridge $bridge -listening $listening -nonce $nonce -internal_ips $local_ip -internal_port $local_port -external_ips $extern_ip -external_port $extern_port -conn_type $conn_type -session_id $options(-id) -s_channel_state 0 -capabilities_flags 1] if { $listening != "false" } { status_log "Going to listen" - set trsp [DirectP2PTransport %AUTO% -peer $options(-peer) -transport_manager [$self transport_manager] -nonce $nonce] + set trsp [DirectP2PTransport %AUTO% -peer $options(-peer) -transport_manager [$self transport_manager] -nonce $nonce -client $self] ::Event::registerEvent p2pConnected all [list $self Bridge_switched] ::Event::registerEvent p2pFailed all [list $self Bridge_failed] $trsp listen @@ -314,7 +314,7 @@ set choices [[$transreq body] bridges] set proto [[$self transport_manager] get_supported_transport $choices] status_log "We will use $proto" - set new_bridge [[$self transport_manager] create_transport [$self cget -peer] $proto] + set new_bridge [[$self transport_manager] create_transport [$self cget -peer] $proto -client $self] if { $new_bridge == "" || [$new_bridge cget -connected] == 1 } { $self Bridge_selected } else { @@ -371,7 +371,7 @@ if { [::abook::getDemographicField listening] == "true" } { status_log "Going to listen for [$transresp nonce]" set body [SLPTransferResponseBody %AUTO% -bridge "TCPv1" -listening [::abook::getDemographicField listening] -nonce [$transresp nonce] -internal_ips [::abook::getDemographicField localip] -internal_port [config::getKey initialftport] -external_ips [::abook::getDemographicField clientip] -external_port [config::getKey initialftport] -conn_type [::abook::getDemographicField conntype] -session_id $options(-id) -s_channel_state 0 -capabilities_flags 1] - set trsp [DirectP2PTransport %AUTO% -peer $options(-peer) -transport_manager [$self transport_manager] -nonce [$transresp nonce]] + set trsp [DirectP2PTransport %AUTO% -peer $options(-peer) -transport_manager [$self transport_manager] -nonce [$transresp nonce] -client $self] ::Event::registerEvent p2pConnected all [list $self Bridge_switched] ::Event::registerEvent p2pFailed all [list $self Bridge_failed] $trsp listen @@ -392,7 +392,7 @@ status_log "We got the new bridge $new_bridge" if { [$new_bridge cget -rating] <= 0 } { status_log "Bad rating, making a new one" - set new_bridge [[$self transport_manager] create_transport $options(-peer) [$transresp bridge] -ip $ip -port $port -nonce [$transresp nonce] ] + set new_bridge [[$self transport_manager] create_transport $options(-peer) [$transresp bridge] -ip $ip -port $port -nonce [$transresp nonce] -client $self] } if { $new_bridge == "" || [$new_bridge cget -connected] == 1 } { $self Bridge_selected Modified: branches/p2p/msnp2p/transport/direct.tcl =================================================================== --- branches/p2p/msnp2p/transport/direct.tcl 2010-08-18 16:45:56 UTC (rev 12162) +++ branches/p2p/msnp2p/transport/direct.tcl 2010-08-18 18:14:22 UTC (rev 12163) @@ -79,6 +79,7 @@ set ip [$self cget -ip] set port [$self cget -port] status_log "Trying to connect to $ip $port" + ::Event::fireEvent p2pConnecting p2p $options(-client) $ip $port $self configure -listening 0 $self configure -server 0 set foo_sent 1 @@ -91,6 +92,7 @@ } after cancel "$self On_connect_timeout" status_log "Connected: using $sock" + ::Event::fireEvent p2pIdentifying p2p $options(-client) fconfigure $sock -blocking 0 -translation {binary binary} -buffering none catch {fileevent $sock writable "$self handshake $data $callback"} catch {fileevent $sock readable "$self On_data_received $sock"} @@ -156,7 +158,7 @@ after [$self cget -timeout] "catch {close $sock};$self On_connect_timeout" #fileevent $sock readable [list $self On_data_received] $self configure -listening 1 - ::Event::fireEvent p2pListening p2p $self $options(-ip) $options(-port) + ::Event::fireEvent p2pListening p2p $options(-client) $options(-ip) $options(-port) } @@ -198,7 +200,11 @@ return } } - set err [string trim [fconfigure $sock -error]] + if { [catch { set err [string trim [fconfigure $sock -error]] } res] } { + #How on Earth can this be reproduced????" + $self On_failed "Error sending data, socket somehow lost: $res" + return + } if { $err != "" } { $self On_failed "Error sending data: $err" return @@ -223,6 +229,7 @@ method On_connect_timeout { } { $self On_failed "Connection timed out" + ::Event::fireEvent p2pTimeout p2p $options(-client) return 0 } @@ -246,9 +253,9 @@ status_log "$peer ($hostaddr:$hostport) connected to $ip:$port" fconfigure $sock -blocking 0 -buffering none -translation {binary binary} fileevent $sock readable [list $self On_data_received $sock] - $self configure -sock $sock -listening 0 + $self configure -sock $sock -listening 0 -ip $hostaddr set data_queue {} - #::Event::fireEvent p2pConnected p2p {} + ::Event::fireEvent p2pIdentifying p2p $options(-client) } Modified: branches/p2p/msnp2p/transport/switchboard.tcl =================================================================== --- branches/p2p/msnp2p/transport/switchboard.tcl 2010-08-18 16:45:56 UTC (rev 12162) +++ branches/p2p/msnp2p/transport/switchboard.tcl 2010-08-18 18:14:22 UTC (rev 12163) @@ -13,6 +13,7 @@ option -connected 1 option -contacts "" option -listening 0 + option -client "" constructor { args } { Modified: branches/p2p/msnp2p/transport/transport_manager.tcl =================================================================== --- branches/p2p/msnp2p/transport/transport_manager.tcl 2010-08-18 16:45:56 UTC (rev 12162) +++ branches/p2p/msnp2p/transport/transport_manager.tcl 2010-08-18 18:14:22 UTC (rev 12163) @@ -101,7 +101,7 @@ method create_transport { peer proto args } { if { $proto == "" || ![info exists supported_transports($proto)] } { - puts "$proto not supported" + status_log "Error: $proto not supported" ::Event::fireEvent p2pFailed p2p {} return "" } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |