Commit 0a35c811 authored by Lorenzo "Palinuro" Faletra's avatar Lorenzo "Palinuro" Faletra Committed by Lorenzo "Palinuro" Faletra

Import Debian version 2.1.10+parrot1

apt (2.1.10+parrot1) rolling-testing; urgency=medium

  * Import new Debian release.

apt (2.1.10) unstable; urgency=medium

  * Default Acquire::AllowReleaseInfoChange::Suite to "true" (Closes: #931566)
  * acquire: Do not hide _error messages in Fail()
  * Further improvements to HTTP method (Closes: #968220, verified against
    that server and the Canonical infra where it blocked buildds)
    - Do not use non-blocking local I/O - they don't do anything anyway,
      and we can't really use non-blocking I/O here because we need to be able
      to flush it.
    - Restore successful exits from Die() and rewrite Die() in a more
      comprehensible way, after careful code path analysis
    - http: Fully flush local file both before/after server read, avoiding
      both partial flush before sending requests to the server, as well as
      preventing leftover data before receiving from the server, which cause
      data left in the buffer.

apt (2.1.9) unstable; urgency=medium

  [ Julian Andres Klode ]
  * http: Fix infinite loop on read errors
  * basehttp: Correctly handle non-transient failure from RunData()
  * Do not retry on failure to fetch (Closes: #968163)

  [ Aleix Vidal i Gaya ]
  * updated catalan translations
parent 7b113b2e
Pipeline #997 failed with stages
...@@ -204,7 +204,7 @@ check_cxx_target(HAVE_FMV_SSE42_AND_CRC32DI "sse4.2" "__builtin_ia32_crc32di(0,i ...@@ -204,7 +204,7 @@ check_cxx_target(HAVE_FMV_SSE42_AND_CRC32DI "sse4.2" "__builtin_ia32_crc32di(0,i
# Configure some variables like package, version and architecture. # Configure some variables like package, version and architecture.
set(PACKAGE ${PROJECT_NAME}) set(PACKAGE ${PROJECT_NAME})
set(PACKAGE_MAIL "APT Development Team <deity@lists.debian.org>") set(PACKAGE_MAIL "APT Development Team <deity@lists.debian.org>")
set(PACKAGE_VERSION "2.1.8") set(PACKAGE_VERSION "2.1.10")
string(REGEX MATCH "^[0-9.]+" PROJECT_VERSION ${PACKAGE_VERSION}) string(REGEX MATCH "^[0-9.]+" PROJECT_VERSION ${PACKAGE_VERSION})
if (NOT DEFINED DPKG_DATADIR) if (NOT DEFINED DPKG_DATADIR)
......
...@@ -1810,7 +1810,7 @@ bool pkgAcqMetaBase::VerifyVendor(string const &) /*{{{*/ ...@@ -1810,7 +1810,7 @@ bool pkgAcqMetaBase::VerifyVendor(string const &) /*{{{*/
{ "Origin", AllowInfoChange, &metaIndex::GetOrigin }, { "Origin", AllowInfoChange, &metaIndex::GetOrigin },
{ "Label", AllowInfoChange, &metaIndex::GetLabel }, { "Label", AllowInfoChange, &metaIndex::GetLabel },
{ "Version", true, &metaIndex::GetVersion }, // numbers change all the time, that is okay { "Version", true, &metaIndex::GetVersion }, // numbers change all the time, that is okay
{ "Suite", AllowInfoChange, &metaIndex::GetSuite }, { "Suite", true, &metaIndex::GetSuite },
{ "Codename", AllowInfoChange, &metaIndex::GetCodename }, { "Codename", AllowInfoChange, &metaIndex::GetCodename },
{ nullptr, false, nullptr } { nullptr, false, nullptr }
}; };
......
...@@ -139,27 +139,30 @@ void pkgAcqMethod::SendMessage(std::string const &header, std::unordered_map<std ...@@ -139,27 +139,30 @@ void pkgAcqMethod::SendMessage(std::string const &header, std::unordered_map<std
/* */ /* */
void pkgAcqMethod::Fail(bool Transient) void pkgAcqMethod::Fail(bool Transient)
{ {
string Err = "Undetermined Error";
if (_error->empty() == false) Fail("", Transient);
}
/*}}}*/
// AcqMethod::Fail - A fetch has failed /*{{{*/
void pkgAcqMethod::Fail(string Err, bool Transient)
{
if (not _error->empty())
{ {
Err.clear(); while (not _error->empty())
while (_error->empty() == false)
{ {
std::string msg; std::string msg;
if (_error->PopMessage(msg)) if (_error->PopMessage(msg))
{ {
if (Err.empty() == false) if (not Err.empty())
Err.append("\n"); Err.append("\n");
Err.append(msg); Err.append(msg);
} }
} }
} }
Fail(Err, Transient); if (Err.empty())
} Err = "Undetermined Error";
/*}}}*/
// AcqMethod::Fail - A fetch has failed /*{{{*/
void pkgAcqMethod::Fail(string Err,bool Transient)
{
// Strip out junk from the error messages // Strip out junk from the error messages
std::transform(Err.begin(), Err.end(), Err.begin(), [](char const c) { std::transform(Err.begin(), Err.end(), Err.begin(), [](char const c) {
if (c == '\r' || c == '\n') if (c == '\r' || c == '\n')
......
apt (2.1.10+parrot1) rolling-testing; urgency=medium
* Import new Debian release.
-- Lorenzo "Palinuro" Faletra <palinuro@parrotsec.org> Fri, 14 Aug 2020 19:29:22 +0200
apt (2.1.10) unstable; urgency=medium
* Default Acquire::AllowReleaseInfoChange::Suite to "true" (Closes: #931566)
* acquire: Do not hide _error messages in Fail()
* Further improvements to HTTP method (Closes: #968220, verified against
that server and the Canonical infra where it blocked buildds)
- Do not use non-blocking local I/O - they don't do anything anyway,
and we can't really use non-blocking I/O here because we need to be able
to flush it.
- Restore successful exits from Die() and rewrite Die() in a more
comprehensible way, after careful code path analysis
- http: Fully flush local file both before/after server read, avoiding
both partial flush before sending requests to the server, as well as
preventing leftover data before receiving from the server, which cause
data left in the buffer.
-- Julian Andres Klode <jak@debian.org> Tue, 11 Aug 2020 14:28:07 +0200
apt (2.1.9) unstable; urgency=medium
[ Julian Andres Klode ]
* http: Fix infinite loop on read errors
* basehttp: Correctly handle non-transient failure from RunData()
* Do not retry on failure to fetch (Closes: #968163)
[ Aleix Vidal i Gaya ]
* updated catalan translations
-- Julian Andres Klode <jak@debian.org> Mon, 10 Aug 2020 14:16:23 +0200
apt (2.1.8+parrot1) rolling-testing; urgency=medium apt (2.1.8+parrot1) rolling-testing; urgency=medium
* Import new Debian release. * Import new Debian release.
......
...@@ -274,7 +274,7 @@ ...@@ -274,7 +274,7 @@
"> ">
<!-- this will be updated by 'prepare-release' --> <!-- this will be updated by 'prepare-release' -->
<!ENTITY apt-product-version "2.1.8"> <!ENTITY apt-product-version "2.1.10">
<!-- (Code)names for various things used all over the place --> <!-- (Code)names for various things used all over the place -->
<!ENTITY debian-oldstable-codename "stretch"> <!ENTITY debian-oldstable-codename "stretch">
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: apt-doc 2.1.8\n" "Project-Id-Version: apt-doc 2.1.10\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
"POT-Creation-Date: 2020-08-04 12:40+0200\n" "POT-Creation-Date: 2020-08-11 14:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
...@@ -372,7 +372,7 @@ BaseHttpMethod::DealWithHeaders(FetchResult &Res, RequestState &Req) ...@@ -372,7 +372,7 @@ BaseHttpMethod::DealWithHeaders(FetchResult &Res, RequestState &Req)
// as well as http to https // as well as http to https
else if ((Uri.Access == "http" || Uri.Access == "https+http") && tmpURI.Access == "https") else if ((Uri.Access == "http" || Uri.Access == "https+http") && tmpURI.Access == "https")
return TRY_AGAIN_OR_REDIRECT; return TRY_AGAIN_OR_REDIRECT;
// allow https to http redirects (for https mirrordirectors with http mirrors) // allow https to http redirects (for https mirrordirectors with http mirrors)
else if ((Uri.Access == "https" || Uri.Access == "https+http") && tmpURI.Access == "http") else if ((Uri.Access == "https" || Uri.Access == "https+http") && tmpURI.Access == "http")
return TRY_AGAIN_OR_REDIRECT; return TRY_AGAIN_OR_REDIRECT;
else else
...@@ -773,33 +773,24 @@ int BaseHttpMethod::Loop() ...@@ -773,33 +773,24 @@ int BaseHttpMethod::Loop()
} }
else else
{ {
if (Server->IsOpen() == false) if (not Server->IsOpen())
{ {
FailCounter++; // Reset the pipeline
_error->Discard();
Server->Close();
if (FailCounter >= 2)
{
Fail(_("Connection failed"),true);
FailCounter = 0;
}
QueueBack = Queue; QueueBack = Queue;
Server->PipelineAnswersReceived = 0;
} }
else
{ Server->Close();
Server->Close(); FailCounter = 0;
switch (Result) switch (Result)
{ {
case ResultState::TRANSIENT_ERROR: case ResultState::TRANSIENT_ERROR:
Fail(true); Fail(true);
break; break;
case ResultState::FATAL_ERROR: case ResultState::FATAL_ERROR:
case ResultState::SUCCESSFUL: case ResultState::SUCCESSFUL:
Fail(false); Fail(false);
break; break;
}
} }
} }
break; break;
......
...@@ -107,7 +107,7 @@ struct ServerState ...@@ -107,7 +107,7 @@ struct ServerState
virtual bool Close() = 0; virtual bool Close() = 0;
virtual bool InitHashes(HashStringList const &ExpectedHashes) = 0; virtual bool InitHashes(HashStringList const &ExpectedHashes) = 0;
virtual ResultState Die(RequestState &Req) = 0; virtual ResultState Die(RequestState &Req) = 0;
virtual bool Flush(FileFd * const File) = 0; virtual bool Flush(FileFd *const File, bool MustComplete = false) = 0;
virtual ResultState Go(bool ToFile, RequestState &Req) = 0; virtual ResultState Go(bool ToFile, RequestState &Req) = 0;
virtual Hashes * GetHashes() = 0; virtual Hashes * GetHashes() = 0;
......
...@@ -702,43 +702,30 @@ ResultState HttpServerState::Die(RequestState &Req) ...@@ -702,43 +702,30 @@ ResultState HttpServerState::Die(RequestState &Req)
Close(); Close();
// Dump the buffer to the file switch (Req.State)
if (Req.State == RequestState::Data)
{ {
// on GNU/kFreeBSD, apt dies on /dev/null because non-blocking case RequestState::Data:
// can't be set // We have read all data we could, or the connection is not persistent
if (Req.File.Name() != "/dev/null") if (In.IsLimit() == true || Persistent == false)
SetNonBlock(Req.File.Fd(),false); return ResultState::SUCCESSFUL;
if (In.WriteSpace()) { break;
_error->Error(_("Data left in buffer")); case RequestState::Header:
return ResultState::TRANSIENT_ERROR; In.Limit(-1);
} // We have read some headers, but we might also have read the content
// and an EOF and hence reached this point. This is fine.
if (In.WriteSpace())
return ResultState::SUCCESSFUL;
break;
} }
// See if this is because the server finished the data stream // We have reached an actual error, tell the user about it.
if (In.IsLimit() == false && Req.State != RequestState::Header && if (LErrno == 0)
Persistent == true)
{ {
if (LErrno == 0) _error->Error(_("Error reading from server. Remote end closed connection"));
{
_error->Error(_("Error reading from server. Remote end closed connection"));
return ResultState::TRANSIENT_ERROR;
}
errno = LErrno;
_error->Errno("read", _("Error reading from server"));
return ResultState::TRANSIENT_ERROR; return ResultState::TRANSIENT_ERROR;
} }
else errno = LErrno;
{ _error->Errno("read", _("Error reading from server"));
In.Limit(-1);
// Nothing left in the buffer
if (In.WriteSpace() == false)
return ResultState::TRANSIENT_ERROR;
// We may have got multiple responses back in one packet..
return ResultState::SUCCESSFUL;
}
return ResultState::TRANSIENT_ERROR; return ResultState::TRANSIENT_ERROR;
} }
...@@ -747,14 +734,10 @@ ResultState HttpServerState::Die(RequestState &Req) ...@@ -747,14 +734,10 @@ ResultState HttpServerState::Die(RequestState &Req)
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
/* This takes the current input buffer from the Server FD and writes it /* This takes the current input buffer from the Server FD and writes it
into the file */ into the file */
bool HttpServerState::Flush(FileFd * const File) bool HttpServerState::Flush(FileFd *const File, bool MustComplete)
{ {
if (File != nullptr) if (File != nullptr)
{ {
// on GNU/kFreeBSD, apt dies on /dev/null because non-blocking
// can't be set
if (File->Name() != "/dev/null")
SetNonBlock(File->Fd(),false);
if (In.WriteSpace() == false) if (In.WriteSpace() == false)
return true; return true;
...@@ -766,7 +749,7 @@ bool HttpServerState::Flush(FileFd * const File) ...@@ -766,7 +749,7 @@ bool HttpServerState::Flush(FileFd * const File)
return true; return true;
} }
if (In.IsLimit() == true || Persistent == false) if (In.IsLimit() == true || Persistent == false || not MustComplete)
return true; return true;
} }
return false; return false;
...@@ -800,20 +783,23 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req) ...@@ -800,20 +783,23 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req)
if (In.ReadSpace() == true && ServerFd->Fd() != -1) if (In.ReadSpace() == true && ServerFd->Fd() != -1)
FD_SET(ServerFd->Fd(), &rfds); FD_SET(ServerFd->Fd(), &rfds);
// Add the file // Add the file. Note that we need to add the file to the select and
auto FileFD = MethodFd::FromFd(-1); // then write before we read from the server so we do not have content
if (Req.File.IsOpen()) // left to write if the server closes the connection when we read from it.
FileFD = MethodFd::FromFd(Req.File.Fd()); //
// An alternative would be to just flush the file in those circumstances
if (In.WriteSpace() == true && ToFile == true && FileFD->Fd() != -1) // and then return. Because otherwise we might end up blocking indefinitely
FD_SET(FileFD->Fd(), &wfds); // in the select() call if we were to continue but all that was left to do
// was write to the local file.
if (In.WriteSpace() == true && ToFile == true && Req.File.IsOpen())
FD_SET(Req.File.Fd(), &wfds);
// Add stdin // Add stdin
if (Owner->ConfigFindB("DependOnSTDIN", true) == true) if (Owner->ConfigFindB("DependOnSTDIN", true) == true)
FD_SET(STDIN_FILENO,&rfds); FD_SET(STDIN_FILENO,&rfds);
// Figure out the max fd // Figure out the max fd
int MaxFd = FileFD->Fd(); int MaxFd = Req.File.Fd();
if (MaxFd < ServerFd->Fd()) if (MaxFd < ServerFd->Fd())
MaxFd = ServerFd->Fd(); MaxFd = ServerFd->Fd();
...@@ -835,7 +821,15 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req) ...@@ -835,7 +821,15 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req)
_error->Error(_("Connection timed out")); _error->Error(_("Connection timed out"));
return ResultState::TRANSIENT_ERROR; return ResultState::TRANSIENT_ERROR;
} }
// Flush any data before talking to the server, in case the server
// closed the connection, we want to be done writing.
if (Req.File.IsOpen() && FD_ISSET(Req.File.Fd(), &wfds))
{
if (not Flush(&Req.File, false))
return ResultState::TRANSIENT_ERROR;
}
// Handle server IO // Handle server IO
if (ServerPending || (ServerFd->Fd() != -1 && FD_ISSET(ServerFd->Fd(), &rfds))) if (ServerPending || (ServerFd->Fd() != -1 && FD_ISSET(ServerFd->Fd(), &rfds)))
{ {
...@@ -845,14 +839,10 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req) ...@@ -845,14 +839,10 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req)
} }
// Send data to the file // Send data to the file
if (FileFD->Fd() != -1 && ((In.WriteSpace() == true && ToFile == true) || if (In.WriteSpace() == true && ToFile == true && Req.File.IsOpen())
FD_ISSET(FileFD->Fd(), &wfds)))
{ {
if (In.Write(FileFD) == false) if (not Flush(&Req.File, false))
{
_error->Errno("write", _("Error writing to output file"));
return ResultState::TRANSIENT_ERROR; return ResultState::TRANSIENT_ERROR;
}
} }
if (ServerFd->Fd() != -1 && FD_ISSET(ServerFd->Fd(), &wfds)) if (ServerFd->Fd() != -1 && FD_ISSET(ServerFd->Fd(), &wfds))
...@@ -1029,7 +1019,6 @@ BaseHttpMethod::DealWithHeadersResult HttpMethod::DealWithHeaders(FetchResult &R ...@@ -1029,7 +1019,6 @@ BaseHttpMethod::DealWithHeadersResult HttpMethod::DealWithHeaders(FetchResult &R
if (Req.StartPos > 0) if (Req.StartPos > 0)
Res.ResumePoint = Req.StartPos; Res.ResumePoint = Req.StartPos;
SetNonBlock(Req.File.Fd(),true);
return FILE_IS_OPEN; return FILE_IS_OPEN;
} }
/*}}}*/ /*}}}*/
......
...@@ -114,7 +114,7 @@ struct HttpServerState: public ServerState ...@@ -114,7 +114,7 @@ struct HttpServerState: public ServerState
virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE; virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE;
virtual Hashes * GetHashes() APT_OVERRIDE; virtual Hashes * GetHashes() APT_OVERRIDE;
virtual ResultState Die(RequestState &Req) APT_OVERRIDE; virtual ResultState Die(RequestState &Req) APT_OVERRIDE;
virtual bool Flush(FileFd * const File) APT_OVERRIDE; virtual bool Flush(FileFd *const File, bool MustComplete = true) APT_OVERRIDE;
virtual ResultState Go(bool ToFile, RequestState &Req) APT_OVERRIDE; virtual ResultState Go(bool ToFile, RequestState &Req) APT_OVERRIDE;
HttpServerState(URI Srv, HttpMethod *Owner); HttpServerState(URI Srv, HttpMethod *Owner);
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: apt 2.1.8\n" "Project-Id-Version: apt 2.1.10\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
"POT-Creation-Date: 2020-08-04 12:40+0200\n" "POT-Creation-Date: 2020-08-11 14:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -3544,10 +3544,6 @@ msgid "" ...@@ -3544,10 +3544,6 @@ msgid ""
"available:\n" "available:\n"
msgstr "" msgstr ""
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc #: methods/http.cc
msgid "Error reading from server. Remote end closed connection" msgid "Error reading from server. Remote end closed connection"
msgstr "" msgstr ""
...@@ -3568,10 +3564,6 @@ msgstr "" ...@@ -3568,10 +3564,6 @@ msgstr ""
msgid "Connection timed out" msgid "Connection timed out"
msgstr "" msgstr ""
#: methods/http.cc
msgid "Error writing to output file"
msgstr ""
#: methods/rred.cc #: methods/rred.cc
msgid "Failed to set modification time" msgid "Failed to set modification time"
msgstr "" msgstr ""
......
...@@ -6,7 +6,7 @@ msgid "" ...@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: apt 1.0.5\n" "Project-Id-Version: apt 1.0.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
"POT-Creation-Date: 2020-08-04 12:40+0200\n" "POT-Creation-Date: 2020-08-11 14:34+0200\n"
"PO-Revision-Date: 2006-10-20 21:28+0300\n" "PO-Revision-Date: 2006-10-20 21:28+0300\n"
"Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n" "Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
"Language-Team: Arabic <support@arabeyes.org>\n" "Language-Team: Arabic <support@arabeyes.org>\n"
...@@ -3615,10 +3615,6 @@ msgid "" ...@@ -3615,10 +3615,6 @@ msgid ""
"available:\n" "available:\n"
msgstr "" msgstr ""
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc #: methods/http.cc
msgid "Error reading from server. Remote end closed connection" msgid "Error reading from server. Remote end closed connection"
msgstr "خطأ في القراءة من الخادم. أقفل الطرف الآخر الاتصال" msgstr "خطأ في القراءة من الخادم. أقفل الطرف الآخر الاتصال"
...@@ -3639,10 +3635,6 @@ msgstr "فشل التحديد" ...@@ -3639,10 +3635,6 @@ msgstr "فشل التحديد"
msgid "Connection timed out" msgid "Connection timed out"
msgstr "انتهى وقت الاتصال" msgstr "انتهى وقت الاتصال"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "خطأ في الكتابة إلى ملف المُخرجات"
#: methods/rred.cc #: methods/rred.cc
msgid "Failed to set modification time" msgid "Failed to set modification time"
msgstr "فشل تعيين وقت التعديل" msgstr "فشل تعيين وقت التعديل"
...@@ -3655,6 +3647,9 @@ msgstr "" ...@@ -3655,6 +3647,9 @@ msgstr ""
msgid "Empty files can't be valid archives" msgid "Empty files can't be valid archives"
msgstr "" msgstr ""
#~ msgid "Error writing to output file"
#~ msgstr "خطأ في الكتابة إلى ملف المُخرجات"
#~ msgid "Error writing to the file" #~ msgid "Error writing to the file"
#~ msgstr "خطأ في الكتابة إلى الملف" #~ msgstr "خطأ في الكتابة إلى الملف"
......
...@@ -4,7 +4,7 @@ msgid "" ...@@ -4,7 +4,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: apt 0.7.18\n" "Project-Id-Version: apt 0.7.18\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
"POT-Creation-Date: 2020-08-04 12:40+0200\n" "POT-Creation-Date: 2020-08-11 14:34+0200\n"
"PO-Revision-Date: 2010-10-02 23:35+0100\n" "PO-Revision-Date: 2010-10-02 23:35+0100\n"
"Last-Translator: Iñigo Varela <ivarela@softastur.org>\n" "Last-Translator: Iñigo Varela <ivarela@softastur.org>\n"
"Language-Team: Asturian (ast)\n" "Language-Team: Asturian (ast)\n"
...@@ -3792,10 +3792,6 @@ msgstr "" ...@@ -3792,10 +3792,6 @@ msgstr ""
"Les robles siguientes nun pudieron verificase porque la to llave pública nun " "Les robles siguientes nun pudieron verificase porque la to llave pública nun "
"ta a mano:\n" "ta a mano:\n"
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc #: methods/http.cc
msgid "Error reading from server. Remote end closed connection" msgid "Error reading from server. Remote end closed connection"
msgstr "Fallu al lleer nel sirvidor. El llau remotu zarró la conexón." msgstr "Fallu al lleer nel sirvidor. El llau remotu zarró la conexón."
...@@ -3816,10 +3812,6 @@ msgstr "Falló la escoyeta" ...@@ -3816,10 +3812,6 @@ msgstr "Falló la escoyeta"
msgid "Connection timed out" msgid "Connection timed out"
msgstr "Gandió'l tiempu de conexón" msgstr "Gandió'l tiempu de conexón"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "Fallu al escribir nel ficheru de salida"