X-Git-Url: https://git.sommitrealweird.co.uk/twirssi-net-twitter-lite.git/blobdiff_plain/eacc4ee953f3eb9f16b1471bba19adbaac0dc7e3..932c6ef78a41b4e2d08a86ddd3347a9e468c574d:/twirssi.pl diff --git a/twirssi.pl b/twirssi.pl index 356660f..1adc317 100644 --- a/twirssi.pl +++ b/twirssi.pl @@ -12,7 +12,7 @@ $Data::Dumper::Indent = 1; use vars qw($VERSION %IRSSI); $VERSION = "2.2.5beta"; -my ($REV) = '$Rev: 677 $' =~ /(\d+)/; +my ($REV) = '$Rev: 687 $' =~ /(\d+)/; %IRSSI = ( authors => 'Dan Boger', contact => 'zigdon@gmail.com', @@ -21,7 +21,7 @@ my ($REV) = '$Rev: 677 $' =~ /(\d+)/; . 'Can optionally set your bitlbee /away message to same', license => 'GNU GPL v2', url => 'http://twirssi.com', - changed => '$Date: 2009-07-22 13:58:05 -0700 (Wed, 22 Jul 2009) $', + changed => '$Date: 2009-08-07 01:24:53 -0700 (Fri, 07 Aug 2009) $', ); my $window; @@ -499,6 +499,15 @@ sub cmd_login { ssl => Irssi::settings_get_bool("twirssi_avoid_ssl") ? 0 : 1, ); + unless ($twit) { + ¬ice("Failed to create Net::$service object! Aborting."); + return; + } + + if ( my $timeout = Irssi::settings_get_int("twitter_timeout") and $twit->can('ua')) { + $twit->ua->timeout($timeout); + } + unless ( $twit->verify_credentials() ) { ¬ice("Login as $user\@$service failed"); $twit = undef; @@ -910,7 +919,9 @@ sub do_updates { printf $fh "id:%u account:%s type:last_id timeline\n", $new_poll_id, $username; - print scalar localtime, " - Polling for replies" if &debug; + print scalar localtime, " - Polling for replies since ", + $id_map{__last_id}{$username}{reply} + if &debug; $new_poll_id = 0; eval { if ( $id_map{__last_id}{$username}{reply} ) @@ -1032,6 +1043,7 @@ sub monitor_child { # pretend if ( open FILE, $filename ) { + binmode FILE, ":utf8"; my @lines; my %new_cache; while () { @@ -1162,8 +1174,16 @@ sub monitor_child { } if (/^-- (\d+)$/) { - ($new_last_poll) = ($1); - last; + $new_last_poll = $1; + if ( $new_last_poll >= $last_poll ) { + last; + } else { + print "Impossible! ", + "new_last_poll=$new_last_poll < last_poll=$last_poll!" + if &debug; + undef $new_last_poll; + next; + } } my ( $f, $t ) = split ' ', $_; $nicks{$f} = $friends{$f} = $t; @@ -1500,6 +1520,7 @@ Irssi::settings_add_str( "twirssi", "twirssi_replies_store", ".irssi/scripts/twirssi.json" ); Irssi::settings_add_int( "twirssi", "twitter_friends_poll", 600 ); +Irssi::settings_add_int( "twirssi", "twitter_timeout", 30 ); Irssi::settings_add_bool( "twirssi", "twirssi_upgrade_beta", 0 ); Irssi::settings_add_bool( "twirssi", "tweet_to_away", 0 );