Hi, Will I should write it in the following mode. Some notes:
1) you can set the awake function using make port! port: make port! [scheme: 'async host: hst port-id: 80 awake: :handl] you cannot use the words 'host or 'handler because the block is bound to the port before execution (like in an object!: a port is an object!) 2) you can insert a string BEFORE connection is done: you must not wait the 'connect event open port insert port rejoin [{GET / HTTP/1.0} crlf {Host: } port/host crlf crlf] 3) you should not clear the system/ports/wait-list, it can contain some others ports (like event port in View). Here i read the length? before the start and wait until it is returned the same, but it is not the best solution: --------- rebol [] do http://www.rebol.it/giesse/async-protocol.r get-fast: func [hosts /local port len][ len: length? system/ports/wait-list foreach hst hosts [ port: make port! [scheme: 'async host: hst port-id: 80 awake: :handl] open port insert port rejoin [{GET / HTTP/1.0} crlf {Host: } port/host crlf crlf] ] until [wait .1 len = length? system/ports/wait-list] ] handl: func [port [port!] state [word! error!]] [ if error? :state [print mold disarm state return true] switch state [ connect [false] read [false] write [false] close [ data: copy port close port print [port/host length? data] true ] ] ] ;example urls: [ "www.rebol.com" "www.rebol.net" "www.rebol.org" "www.apple.com" "www.oracle.com" "www.microsoft.com" ] loop 5 [get-fast urls] halt --- Ciao Romano -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.