package require TclCurl


proc Perform {multiHandle} {
    if {[catch {$multiHandle active} activeTransfers]} {
        puts "Error checking active transfers: $activeTransfers"
        return -1
    }
    if {[catch {$multiHandle perform} running]} {
        puts "Error: $running"
        return 1
    }
    return $running
}

proc StartTransfer {multiHandle} {
    while {1==1} {
        set runningTransfers [Perform $multiHandle]
        if {$runningTransfers>0} {
            after 500
        } else {
            break
        }
    }
}

puts "We create and configure the easy handles"

set curlEasyHandle1 [curl::init]
set curlEasyHandle2 [curl::init]

$curlEasyHandle1 configure -url http://127.0.0.1/~andres/ -file index.html
$curlEasyHandle2 configure -url http://127.0.0.1/ -file index2.html

puts "Creating the multi handle"

set curlMultiHandle [curl::multiinit]

puts "Adding easy handles to the multi one"

$curlMultiHandle addhandle $curlEasyHandle1
$curlMultiHandle addhandle $curlEasyHandle2

puts "We start the transfer"

StartTransfer $curlMultiHandle

puts "Transfer done, cleanning up"

$curlMultiHandle removehandle $curlEasyHandle1
$curlMultiHandle removehandle $curlEasyHandle2

$curlMultiHandle cleanup
$curlEasyHandle1 cleanup
$curlEasyHandle2 cleanup