From e43139ac5e1f337d9a82ee16d9a4f15195120ec3 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson <matthew@matrix.org>
Date: Fri, 28 Nov 2014 16:16:41 +0000
Subject: [PATCH] fix IO::Async abuse - thanks leo

---
 contrib/vertobot/bot.pl | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/contrib/vertobot/bot.pl b/contrib/vertobot/bot.pl
index 0852905081..828fc48786 100755
--- a/contrib/vertobot/bot.pl
+++ b/contrib/vertobot/bot.pl
@@ -62,6 +62,8 @@ my $bot_verto = Net::Async::WebSocket::Client->new(
 );
 $loop->add( $bot_verto );
 
+my $sessid = lc new Data::UUID->create_str();
+
 my $bot_matrix = Net::Async::Matrix->new(
     %MATRIX_CONFIG,
     on_log => sub { warn "log: @_\n" },
@@ -79,20 +81,18 @@ my $bot_matrix = Net::Async::Matrix->new(
         $bot_matrix_rooms{$room->room_id} = $room;
         
         # log in to verto on behalf of this room
-        my $sessid = lc new Data::UUID->create_str();
         $bridgestate->{$room->room_id}->{sessid} = $sessid;
          
         $room->configure(
             on_message => \&on_room_message,
         );
         
-        Future->wait_all(
-            send_verto_json_request("login", {
+        my $f = send_verto_json_request("login", {
                 'login' => $CONFIG{'verto-dialog-params'}{'login'},
                 'passwd' => $CONFIG{'verto-config'}{'passwd'},
                 'sessid' => $sessid,
-            }),
-        )->get;
+            });
+        $matrix->adopt_future($f);
         
         # we deliberately don't paginate the room, as we only care about
         # new calls
@@ -133,11 +133,12 @@ sub on_unknown_event
             # XXX: collate using the right m= line - for now assume audio call
             $offer =~ s/(a=rtcp.*[\r\n]+)/$1$candidate_block/;
             
-            send_verto_json_request("verto.invite", {
+            my $f = send_verto_json_request("verto.invite", {
                 "sdp" => $offer,
                 "dialogParams" => \%dp,
                 "sessid" => $bridgestate->{$room_id}->{sessid},
-            })->get;
+            });
+            $matrix->adopt_future($f);
         }
         else {
             # ignore them, as no trickle ICE, although we might as well
@@ -149,10 +150,11 @@ sub on_unknown_event
     }
     elsif ($event->{type} eq 'm.call.hangup') {
         if ($bridgestate->{$room_id}->{matrix_callid} eq $event->{content}->{call_id}) {
-            send_verto_json_request("verto.bye", {
+            my $f = send_verto_json_request("verto.bye", {
                 "dialogParams" => \%dp,
                 "sessid" => $bridgestate->{$room_id}->{sessid},
-            })->get;
+            });
+            $matrix->adopt_future($f);
         }
         else {
             warn "Ignoring unrecognised callid: ".$event->{content}->{call_id};
-- 
GitLab