From babd817998d5e7026a3e392024779216ab59ca94 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 29 Jun 2007 17:03:42 +0200 Subject: [PATCH] Changed buffer flushing to explicit in a vain attempt to hunt down problems with broken connections. --- TODO | 1 + submit/MO/Submit.pm | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index b2c726b..e219005 100644 --- a/TODO +++ b/TODO @@ -20,6 +20,7 @@ New submitter: - contest: override failed check - contest: local history - contest: task status cache +- contest: problems with SIGPIPE Various ideas: scores dependent on time (like PL olympiad) diff --git a/submit/MO/Submit.pm b/submit/MO/Submit.pm index 4497eef..e571be3 100644 --- a/submit/MO/Submit.pm +++ b/submit/MO/Submit.pm @@ -68,6 +68,7 @@ sub disconnect($) { sub connect($) { my $self = shift @_; $self->disconnect; + $self->log("Connecting to submit server"); my $sk = new IO::Socket::INET( PeerAddr => $self->{"Server"}, @@ -106,6 +107,7 @@ sub connect($) { } } $self->{"sk"} = $sk; + $sk->autoflush(0); $self->log("Logging in"); my $req = new Sherlock::Object("U" => $self->{"user"}); @@ -123,12 +125,14 @@ sub connect($) { sub request($$) { my ($self, $obj) = @_; my $sk = $self->{"sk"}; - $obj->write($sk); ### FIXME: Flushing + ## $SIG{'PIPE'} = 'ignore'; + $obj->write($sk); + print $sk "\n"; + $sk->flush(); if ($sk->error) { $self->err("Connection broken"); return undef; } - print $sk "\n"; return $self->reply; } -- 2.39.2