summary refs log tree commit diff
path: root/contrib/vertobot/bot.pl
diff options
context:
space:
mode:
authorMatthew Hodgson <matthew@matrix.org>2014-11-28 16:16:41 +0000
committerMatthew Hodgson <matthew@matrix.org>2014-11-28 16:16:41 +0000
commite43139ac5e1f337d9a82ee16d9a4f15195120ec3 (patch)
tree8abd418b8b799cfed0a9dc174f005eaba8501c03 /contrib/vertobot/bot.pl
parentignore rogue matrix call events; support verto.media RPC as a horrible hack; ... (diff)
downloadsynapse-e43139ac5e1f337d9a82ee16d9a4f15195120ec3.tar.xz
fix IO::Async abuse - thanks leo
Diffstat (limited to 'contrib/vertobot/bot.pl')
-rwxr-xr-xcontrib/vertobot/bot.pl20
1 files 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};