From 7f3efb11d847bf33a9d84ae6b4dea51726347f23 Mon Sep 17 00:00:00 2001 From: Alex Checca Date: Sun, 13 Dec 2015 19:18:00 -0500 Subject: fix bug where attempt to download previously downloaded and deleted pack caused abberant behaviour --- scripts/xdcc_autoget.pl | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'scripts') diff --git a/scripts/xdcc_autoget.pl b/scripts/xdcc_autoget.pl index 00f1339..2d2a454 100644 --- a/scripts/xdcc_autoget.pl +++ b/scripts/xdcc_autoget.pl @@ -297,7 +297,7 @@ sub ag_packrequest #sends the xdcc send request, and retries on failure if (!$reqpackflag) { $reqpackflag = 1; - Irssi::signal_add("dcc get receive", "ag_opendcc"); #init DCC recieve init flag + Irssi::signal_add("dcc created", "ag_opendcc"); #init DCC recieve init flag $statusbarmessage = "Getting pack #$packs[$packcounter] on $bots[$botcounter]"; ag_message("msg $bots[$botcounter] $sendprefix $packs[$packcounter]"); push(@totags, Irssi::timeout_add_once($botdelay * 1000, sub { if (!$downloadflag) { &ag_packrequest; } } , [])); @@ -314,8 +314,11 @@ sub ag_opendcc #runs on DCC recieve init if ($botname eq $bots[$botcounter]) #if it's our bot, let user know, and stop any further AG pack requests until finished { + Irssi::signal_add("dcc destroyed", "ag_closedcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); - Irssi::signal_remove("dcc get receive", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) + Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) + Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) + Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) &ag_remtimeouts; $dccflag = 0; $downloadflag = 1; @@ -324,9 +327,10 @@ sub ag_opendcc #runs on DCC recieve init { if ($n eq $gdcc->{'arg'}) #if file already downloaded, emulate an already finished dcc transfer (in case file deleted) and cancel { - $gdcc->{'transfd'} = $gdcc->{'size'}; - $gdcc->{'skipped'} = $gdcc->{'size'}; - ag_closedcc(@_); +# $gdcc->{'transfd'} = $gdcc->{'size'}; +# $gdcc->{'skipped'} = $gdcc->{'size'}; + ag_message("dcc close get $bots[$botcounter]"); +# ag_closedcc(@_); } last if ($n eq $gdcc->{'arg'}); } @@ -418,12 +422,13 @@ sub ag_closedcc $botname =~ tr/[A-Z]/[a-z]/; $bots[$botcounter] =~ tr/[A-Z]/[a-z]/; - if ($botname eq $bots[$botcounter]) #checks if the is the bot + if ($botname eq $bots[$botcounter] and $reqpackflag) #checks if the is the bot { + Irssi::signal_remove("dcc destroyed", "ag_opendcc"); $reqpackflag = 0; - if ($dccflag == 0) {Irssi::signal_add("dcc get receive", "ag_opendcc");} #if so, reinits DCC get signal for the next pack +# if ($dccflag == 0) {Irssi::signal_add("dcc created", "ag_opendcc");} #if so, reinits DCC get signal for the next pack $dccflag = 1; - + &ag_remtimeouts; if ($dcc->{'skipped'} == $dcc->{'size'}) @@ -657,7 +662,7 @@ sub ag_run #main loop sub ag_stop { - Irssi::signal_remove("dcc get receive", "ag_opendcc"); + Irssi::signal_remove("dcc created", "ag_opendcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); foreach my $to (@totags) @@ -693,7 +698,7 @@ sub ag_stop sub ag_restart { $statusbarmessage = "No connection"; - Irssi::signal_remove("dcc get receive", "ag_opendcc"); + Irssi::signal_remove("dcc created", "ag_opendcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); foreach my $to (@totags) @@ -763,7 +768,6 @@ if ($initflag) {Irssi::signal_add("server connected", "ag_initserver");} Irssi::signal_add("server disconnected", "ag_restart"); Irssi::signal_add("server lag disconnect", "ag_restart"); -Irssi::signal_add("dcc closed", "ag_closedcc"); Irssi::signal_add("setup changed", "ag_setsettings"); Irssi::command_bind("ag_help", "ag_help"); -- cgit v1.2.3 From b0124853072d65baff3708dfd1df9a46c119d0b5 Mon Sep 17 00:00:00 2001 From: Alex Checca Date: Wed, 16 Dec 2015 14:46:54 -0500 Subject: fix bug that caused messages to processed more than they should be --- scripts/xdcc_autoget.pl | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'scripts') diff --git a/scripts/xdcc_autoget.pl b/scripts/xdcc_autoget.pl index 2d2a454..19d1d56 100644 --- a/scripts/xdcc_autoget.pl +++ b/scripts/xdcc_autoget.pl @@ -70,6 +70,7 @@ my $exedelay; #delay (in minutes) between finishing one run and starting anothe my $initflag; #flag controls whether AG starts on IRSSI boot (if in autorun), or on LOAD my $runningflag = 0; #flag keeps ag from running more than one instance of itself at a time my $msgflag = 1; #flag controls whether bot has responded to search request +my $getmsgflag = 0; #flag keeps track of getmsg signals my $termisepisodicflag = 0; #flag controls whether my $episodicflag; #flag controls whether to search episode by episode (eg instead of searching boku no pice, it'll search for boku no pico 1, then boku no pico 2, etc as long as results show up) my $formatflag = 1; #flag controls whether a format is appended to the end of an episodic search string @@ -240,7 +241,11 @@ sub ag_search #searches bots for packs ag_message("msg $bots[$botcounter] $findprefix $terms[$termcounter]" ); push(@totags, Irssi::timeout_add_once($botdelay * 1000, sub { &ag_skip; } , [])); } - Irssi::signal_add("message irc notice", "ag_getmsg"); + if (!$getmsgflag) + { + $getmsgflag = 1; + Irssi::signal_add("message irc notice", "ag_getmsg"); + } } sub ag_remtimeouts #remove timeouts to avoid multiple instances of everything @@ -315,22 +320,20 @@ sub ag_opendcc #runs on DCC recieve init if ($botname eq $bots[$botcounter]) #if it's our bot, let user know, and stop any further AG pack requests until finished { Irssi::signal_add("dcc destroyed", "ag_closedcc"); - Irssi::signal_remove("message irc notice", "ag_getmsg"); - Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) - Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) + Irssi::signal_remove("message irc notice", "ag_getmsg"); + $getmsgflag = 0; + &ag_remtimeouts; $dccflag = 0; $downloadflag = 1; $statusbarmessage = "Downloading $filename from $botname, #$packs[$packcounter]"; foreach my $n (@finished) #don't redownload finished packs { - if ($n eq $gdcc->{'arg'}) #if file already downloaded, emulate an already finished dcc transfer (in case file deleted) and cancel + if ($n eq $gdcc->{'arg'}) #if file already downloaded, cancel { -# $gdcc->{'transfd'} = $gdcc->{'size'}; -# $gdcc->{'skipped'} = $gdcc->{'size'}; - ag_message("dcc close get $bots[$botcounter]"); -# ag_closedcc(@_); + $gdcc->close; + &ag_stop; } last if ($n eq $gdcc->{'arg'}); } @@ -664,6 +667,7 @@ sub ag_stop { Irssi::signal_remove("dcc created", "ag_opendcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); + $getmsgflag = 0; foreach my $to (@totags) { @@ -700,6 +704,7 @@ sub ag_restart $statusbarmessage = "No connection"; Irssi::signal_remove("dcc created", "ag_opendcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); + $getmsgflag = 0; foreach my $to (@totags) { -- cgit v1.2.3 From a3e9643fe11e062e963822f9f4ec3ccd2fc0b75d Mon Sep 17 00:00:00 2001 From: Alex Checca Date: Thu, 17 Dec 2015 19:41:56 -0500 Subject: workaround for Irssi issue #836 --- scripts/xdcc_autoget.pl | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'scripts') diff --git a/scripts/xdcc_autoget.pl b/scripts/xdcc_autoget.pl index 19d1d56..91703d2 100644 --- a/scripts/xdcc_autoget.pl +++ b/scripts/xdcc_autoget.pl @@ -38,7 +38,7 @@ use File::Copy; use Irssi 20090331; use vars qw($VERSION %IRSSI); -$VERSION = 1.5; +$VERSION = 1.6; %IRSSI = ( name => "autoget", description => "XDCC Autoget, for automated searching and downloading of xdcc packs", @@ -302,7 +302,7 @@ sub ag_packrequest #sends the xdcc send request, and retries on failure if (!$reqpackflag) { $reqpackflag = 1; - Irssi::signal_add("dcc created", "ag_opendcc"); #init DCC recieve init flag + Irssi::signal_add("dcc request", "ag_opendcc"); #init DCC recieve init flag $statusbarmessage = "Getting pack #$packs[$packcounter] on $bots[$botcounter]"; ag_message("msg $bots[$botcounter] $sendprefix $packs[$packcounter]"); push(@totags, Irssi::timeout_add_once($botdelay * 1000, sub { if (!$downloadflag) { &ag_packrequest; } } , [])); @@ -311,6 +311,7 @@ sub ag_packrequest #sends the xdcc send request, and retries on failure sub ag_opendcc #runs on DCC recieve init { + &Irssi::signal_continue; my ($gdcc) = @_; #current pack my $botname = $gdcc->{'nick'}; my $filename = $gdcc->{'arg'}; @@ -320,7 +321,7 @@ sub ag_opendcc #runs on DCC recieve init if ($botname eq $bots[$botcounter]) #if it's our bot, let user know, and stop any further AG pack requests until finished { Irssi::signal_add("dcc destroyed", "ag_closedcc"); - Irssi::signal_remove("dcc created", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) + Irssi::signal_remove("dcc request", "ag_opendcc"); #stops any suplicate sends (there should only ever be one) Irssi::signal_remove("message irc notice", "ag_getmsg"); $getmsgflag = 0; @@ -332,8 +333,11 @@ sub ag_opendcc #runs on DCC recieve init { if ($n eq $gdcc->{'arg'}) #if file already downloaded, cancel { + Irssi::signal_remove("dcc destroyed", "ag_closedcc"); $gdcc->close; - &ag_stop; + $gdcc->{'skipped'} = $gdcc->{'size'}; + $gdcc->{'transfd'} = $gdcc->{'size'}; + ag_closedcc($gdcc); } last if ($n eq $gdcc->{'arg'}); } @@ -429,7 +433,7 @@ sub ag_closedcc { Irssi::signal_remove("dcc destroyed", "ag_opendcc"); $reqpackflag = 0; -# if ($dccflag == 0) {Irssi::signal_add("dcc created", "ag_opendcc");} #if so, reinits DCC get signal for the next pack +# if ($dccflag == 0) {Irssi::signal_add("dcc request", "ag_opendcc");} #if so, reinits DCC get signal for the next pack $dccflag = 1; &ag_remtimeouts; @@ -665,7 +669,7 @@ sub ag_run #main loop sub ag_stop { - Irssi::signal_remove("dcc created", "ag_opendcc"); + Irssi::signal_remove("dcc request", "ag_opendcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); $getmsgflag = 0; @@ -702,7 +706,7 @@ sub ag_stop sub ag_restart { $statusbarmessage = "No connection"; - Irssi::signal_remove("dcc created", "ag_opendcc"); + Irssi::signal_remove("dcc request", "ag_opendcc"); Irssi::signal_remove("message irc notice", "ag_getmsg"); $getmsgflag = 0; -- cgit v1.2.3