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
# Configure some variables like package, version and architecture.
set(PACKAGE ${PROJECT_NAME})
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})
if (NOT DEFINED DPKG_DATADIR)
......
......@@ -1810,7 +1810,7 @@ bool pkgAcqMetaBase::VerifyVendor(string const &) /*{{{*/
{ "Origin", AllowInfoChange, &metaIndex::GetOrigin },
{ "Label", AllowInfoChange, &metaIndex::GetLabel },
{ "Version", true, &metaIndex::GetVersion }, // numbers change all the time, that is okay
{ "Suite", AllowInfoChange, &metaIndex::GetSuite },
{ "Suite", true, &metaIndex::GetSuite },
{ "Codename", AllowInfoChange, &metaIndex::GetCodename },
{ nullptr, false, nullptr }
};
......
......@@ -139,27 +139,30 @@ void pkgAcqMethod::SendMessage(std::string const &header, std::unordered_map<std
/* */
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 (_error->empty() == false)
while (not _error->empty())
{
std::string msg;
if (_error->PopMessage(msg))
{
if (Err.empty() == false)
if (not Err.empty())
Err.append("\n");
Err.append(msg);
}
}
}
Fail(Err, Transient);
}
/*}}}*/
// AcqMethod::Fail - A fetch has failed /*{{{*/
void pkgAcqMethod::Fail(string Err,bool Transient)
{
if (Err.empty())
Err = "Undetermined Error";
// Strip out junk from the error messages
std::transform(Err.begin(), Err.end(), Err.begin(), [](char const c) {
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
* Import new Debian release.
......
......@@ -274,7 +274,7 @@
">
<!-- 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 -->
<!ENTITY debian-oldstable-codename "stretch">
......
......@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
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"
"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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......
......@@ -372,7 +372,7 @@ BaseHttpMethod::DealWithHeaders(FetchResult &Res, RequestState &Req)
// as well as http to https
else if ((Uri.Access == "http" || Uri.Access == "https+http") && tmpURI.Access == "https")
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")
return TRY_AGAIN_OR_REDIRECT;
else
......@@ -773,33 +773,24 @@ int BaseHttpMethod::Loop()
}
else
{
if (Server->IsOpen() == false)
if (not Server->IsOpen())
{
FailCounter++;
_error->Discard();
Server->Close();
if (FailCounter >= 2)
{
Fail(_("Connection failed"),true);
FailCounter = 0;
}
// Reset the pipeline
QueueBack = Queue;
Server->PipelineAnswersReceived = 0;
}
else
{
Server->Close();
switch (Result)
{
case ResultState::TRANSIENT_ERROR:
Fail(true);
break;
case ResultState::FATAL_ERROR:
case ResultState::SUCCESSFUL:
Fail(false);
break;
}
Server->Close();
FailCounter = 0;
switch (Result)
{
case ResultState::TRANSIENT_ERROR:
Fail(true);
break;
case ResultState::FATAL_ERROR:
case ResultState::SUCCESSFUL:
Fail(false);
break;
}
}
break;
......
......@@ -107,7 +107,7 @@ struct ServerState
virtual bool Close() = 0;
virtual bool InitHashes(HashStringList const &ExpectedHashes) = 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 Hashes * GetHashes() = 0;
......
......@@ -702,43 +702,30 @@ ResultState HttpServerState::Die(RequestState &Req)
Close();
// Dump the buffer to the file
if (Req.State == RequestState::Data)
switch (Req.State)
{
// on GNU/kFreeBSD, apt dies on /dev/null because non-blocking
// can't be set
if (Req.File.Name() != "/dev/null")
SetNonBlock(Req.File.Fd(),false);
if (In.WriteSpace()) {
_error->Error(_("Data left in buffer"));
return ResultState::TRANSIENT_ERROR;
}
case RequestState::Data:
// We have read all data we could, or the connection is not persistent
if (In.IsLimit() == true || Persistent == false)
return ResultState::SUCCESSFUL;
break;
case RequestState::Header:
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
if (In.IsLimit() == false && Req.State != RequestState::Header &&
Persistent == true)
// We have reached an actual error, tell the user about it.
if (LErrno == 0)
{
if (LErrno == 0)
{
_error->Error(_("Error reading from server. Remote end closed connection"));
return ResultState::TRANSIENT_ERROR;
}
errno = LErrno;
_error->Errno("read", _("Error reading from server"));
_error->Error(_("Error reading from server. Remote end closed connection"));
return ResultState::TRANSIENT_ERROR;
}
else
{
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;
}
errno = LErrno;
_error->Errno("read", _("Error reading from server"));
return ResultState::TRANSIENT_ERROR;
}
......@@ -747,14 +734,10 @@ ResultState HttpServerState::Die(RequestState &Req)
// ---------------------------------------------------------------------
/* This takes the current input buffer from the Server FD and writes it
into the file */
bool HttpServerState::Flush(FileFd * const File)
bool HttpServerState::Flush(FileFd *const File, bool MustComplete)
{
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)
return true;
......@@ -766,7 +749,7 @@ bool HttpServerState::Flush(FileFd * const File)
return true;
}
if (In.IsLimit() == true || Persistent == false)
if (In.IsLimit() == true || Persistent == false || not MustComplete)
return true;
}
return false;
......@@ -800,20 +783,23 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req)
if (In.ReadSpace() == true && ServerFd->Fd() != -1)
FD_SET(ServerFd->Fd(), &rfds);
// Add the file
auto FileFD = MethodFd::FromFd(-1);
if (Req.File.IsOpen())
FileFD = MethodFd::FromFd(Req.File.Fd());
if (In.WriteSpace() == true && ToFile == true && FileFD->Fd() != -1)
FD_SET(FileFD->Fd(), &wfds);
// Add the file. Note that we need to add the file to the select and
// then write before we read from the server so we do not have content
// left to write if the server closes the connection when we read from it.
//
// An alternative would be to just flush the file in those circumstances
// and then return. Because otherwise we might end up blocking indefinitely
// 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
if (Owner->ConfigFindB("DependOnSTDIN", true) == true)
FD_SET(STDIN_FILENO,&rfds);
// Figure out the max fd
int MaxFd = FileFD->Fd();
int MaxFd = Req.File.Fd();
if (MaxFd < ServerFd->Fd())
MaxFd = ServerFd->Fd();
......@@ -835,7 +821,15 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req)
_error->Error(_("Connection timed out"));
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
if (ServerPending || (ServerFd->Fd() != -1 && FD_ISSET(ServerFd->Fd(), &rfds)))
{
......@@ -845,14 +839,10 @@ ResultState HttpServerState::Go(bool ToFile, RequestState &Req)
}
// Send data to the file
if (FileFD->Fd() != -1 && ((In.WriteSpace() == true && ToFile == true) ||
FD_ISSET(FileFD->Fd(), &wfds)))
if (In.WriteSpace() == true && ToFile == true && Req.File.IsOpen())
{
if (In.Write(FileFD) == false)
{
_error->Errno("write", _("Error writing to output file"));
if (not Flush(&Req.File, false))
return ResultState::TRANSIENT_ERROR;
}
}
if (ServerFd->Fd() != -1 && FD_ISSET(ServerFd->Fd(), &wfds))
......@@ -1029,7 +1019,6 @@ BaseHttpMethod::DealWithHeadersResult HttpMethod::DealWithHeaders(FetchResult &R
if (Req.StartPos > 0)
Res.ResumePoint = Req.StartPos;
SetNonBlock(Req.File.Fd(),true);
return FILE_IS_OPEN;
}
/*}}}*/
......
......@@ -114,7 +114,7 @@ struct HttpServerState: public ServerState
virtual bool InitHashes(HashStringList const &ExpectedHashes) APT_OVERRIDE;
virtual Hashes * GetHashes() 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;
HttpServerState(URI Srv, HttpMethod *Owner);
......
......@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
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"
"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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -3544,10 +3544,6 @@ msgid ""
"available:\n"
msgstr ""
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr ""
......@@ -3568,10 +3564,6 @@ msgstr ""
msgid "Connection timed out"
msgstr ""
#: methods/http.cc
msgid "Error writing to output file"
msgstr ""
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr ""
......
......@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\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"
"Last-Translator: Ossama M. Khayat <okhayat@yahoo.com>\n"
"Language-Team: Arabic <support@arabeyes.org>\n"
......@@ -3615,10 +3615,6 @@ msgid ""
"available:\n"
msgstr ""
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr "خطأ في القراءة من الخادم. أقفل الطرف الآخر الاتصال"
......@@ -3639,10 +3635,6 @@ msgstr "فشل التحديد"
msgid "Connection timed out"
msgstr "انتهى وقت الاتصال"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "خطأ في الكتابة إلى ملف المُخرجات"
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr "فشل تعيين وقت التعديل"
......@@ -3655,6 +3647,9 @@ msgstr ""
msgid "Empty files can't be valid archives"
msgstr ""
#~ msgid "Error writing to output file"
#~ msgstr "خطأ في الكتابة إلى ملف المُخرجات"
#~ msgid "Error writing to the file"
#~ msgstr "خطأ في الكتابة إلى الملف"
......
......@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.7.18\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"
"Last-Translator: Iñigo Varela <ivarela@softastur.org>\n"
"Language-Team: Asturian (ast)\n"
......@@ -3792,10 +3792,6 @@ msgstr ""
"Les robles siguientes nun pudieron verificase porque la to llave pública nun "
"ta a mano:\n"
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr "Fallu al lleer nel sirvidor. El llau remotu zarró la conexón."
......@@ -3816,10 +3812,6 @@ msgstr "Falló la escoyeta"
msgid "Connection timed out"
msgstr "Gandió'l tiempu de conexón"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "Fallu al escribir nel ficheru de salida"
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr "Nun se pudo afitar la hora de modificación"
......@@ -3832,6 +3824,9 @@ msgstr "Conexón encaboxada prematuramente"
msgid "Empty files can't be valid archives"
msgstr ""
#~ msgid "Error writing to output file"
#~ msgstr "Fallu al escribir nel ficheru de salida"
#~ msgid "Error writing to the file"
#~ msgstr "Fallu al escribir nel ficheru"
......
......@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.7.21\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: 2012-06-25 17:23+0300\n"
"Last-Translator: Damyan Ivanov <dmn@debian.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
......@@ -3848,10 +3848,6 @@ msgstr ""
"Следните подписи не можаха да бъдат проверени, защото публичния ключ не е "
"наличен:\n"
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr "Грешка при четене от сървъра. Отдалеченият сървър прекъсна връзката"
......@@ -3872,10 +3868,6 @@ msgstr "Неуспех на избора"
msgid "Connection timed out"
msgstr "Допустимото време за свързване изтече"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "Грешка при записа на изходен файл"
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr "Неуспех при задаването на време на промяна"
......@@ -3888,6 +3880,9 @@ msgstr "Връзката прекъсна преждевременно"
msgid "Empty files can't be valid archives"
msgstr "Празни файлове не могат да бъдат валидни архиви"
#~ msgid "Error writing to output file"
#~ msgstr "Грешка при записа на изходен файл"
#~ msgid "Error writing to the file"
#~ msgstr "Грешка при записа на файла"
......
......@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 0.5.26\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: 2004-05-06 15:25+0100\n"
"Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
"Language-Team: Bosnian <lokal@lugbih.org>\n"
......@@ -3599,10 +3599,6 @@ msgid ""
"available:\n"
msgstr ""
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr ""
......@@ -3623,10 +3619,6 @@ msgstr ""
msgid "Connection timed out"
msgstr ""
#: methods/http.cc
msgid "Error writing to output file"
msgstr ""
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr ""
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.4.2\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: 2017-05-06 11:08+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
......@@ -3835,10 +3835,6 @@ msgstr ""
"Následující podpisy nemohly být ověřeny, protože není dostupný veřejný "
"klíč:\n"
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr "Chyba čtení ze serveru. Druhá strana zavřela spojení"
......@@ -3859,10 +3855,6 @@ msgstr "Výběr selhal"
msgid "Connection timed out"
msgstr "Čas spojení vypršel"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "Chyba zápisu do výstupního souboru"
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr "Nelze nastavit čas modifikace"
......@@ -3875,6 +3867,9 @@ msgstr "Spojení bylo předčasně ukončeno"
msgid "Empty files can't be valid archives"
msgstr "Prázdné soubory nejsou platnými archivy"
#~ msgid "Error writing to output file"
#~ msgstr "Chyba zápisu do výstupního souboru"
#~ msgid "Error writing to the file"
#~ msgstr "Chyba zápisu do souboru"
......
......@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.0.5\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: 2005-06-06 13:46+0100\n"
"Last-Translator: Dafydd Harries <daf@muse.19inch.net>\n"
"Language-Team: Welsh <cy@pengwyn.linux.org.uk>\n"
......@@ -3813,10 +3813,6 @@ msgid ""
"available:\n"
msgstr ""
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
#, fuzzy
msgid "Error reading from server. Remote end closed connection"
......@@ -3838,10 +3834,6 @@ msgstr "Methwyd dewis"
msgid "Connection timed out"
msgstr "Goramserodd y cysylltiad"
#: methods/http.cc
msgid "Error writing to output file"
msgstr "Gwall wrth ysgrifennu i ffeil allbwn"
#: methods/rred.cc
msgid "Failed to set modification time"
msgstr "Methwyd gosod amser newid"
......@@ -3854,6 +3846,9 @@ msgstr "Caewyd y cysylltiad yn gynnar"
msgid "Empty files can't be valid archives"
msgstr ""
#~ msgid "Error writing to output file"
#~ msgstr "Gwall wrth ysgrifennu i ffeil allbwn"
#~ msgid "Error writing to the file"
#~ msgstr "Gwall wrth ysgrifennu at y ffeil"
......
......@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: apt 1.4~rc2\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: 2017-03-02 23:51+0200\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
......@@ -3874,10 +3874,6 @@ msgstr ""
"Følgende signaturer kunne ikke verificeret, da den offentlige nøgle ikke er "
"tilgængelig:\n"
#: methods/http.cc
msgid "Data left in buffer"
msgstr ""
#: methods/http.cc
msgid "Error reading from server. Remote end closed connection"
msgstr "Fejl ved