Browse Source

merge debian/sid into debian/experimental

debian/1.8.y
David Kalnischkies 8 years ago
parent
commit
d61960d924
  1. 2
      apt-pkg/algorithms.cc
  2. 10
      apt-pkg/cacheiterators.h
  3. 38
      apt-pkg/deb/debsrcrecords.cc
  4. 1
      apt-pkg/deb/debsrcrecords.h
  5. 16
      apt-pkg/deb/dpkgpm.cc
  6. 6
      apt-pkg/pkgcache.cc
  7. 31
      apt-pkg/srcrecords.cc
  8. 9
      apt-pkg/srcrecords.h
  9. 8
      cmdline/apt-get.cc
  10. 2
      configure.ac
  11. 2
      debian/apt.auto-removal.sh
  12. 86
      debian/changelog
  13. 18
      debian/libapt-pkg4.15.symbols
  14. 10
      doc/apt-verbatim.ent
  15. 4
      doc/po/apt-doc.pot
  16. 649
      doc/po/fr.po
  17. 6
      ftparchive/cachedb.cc
  18. 41
      ftparchive/sources.cc
  19. 26
      ftparchive/sources.h
  20. 12
      ftparchive/writer.cc
  21. 28
      methods/https.cc
  22. 11
      methods/https.h
  23. 2
      methods/server.cc
  24. 1951
      po/apt-all.pot
  25. 1996
      po/ar.po
  26. 2213
      po/ast.po
  27. 2296
      po/bg.po
  28. 1957
      po/bs.po
  29. 2242
      po/ca.po
  30. 2188
      po/cs.po
  31. 2180
      po/cy.po
  32. 2200
      po/da.po
  33. 2261
      po/de.po
  34. 2163
      po/dz.po
  35. 2159
      po/el.po
  36. 3009
      po/es.po
  37. 2163
      po/eu.po
  38. 2159
      po/fi.po
  39. 2566
      po/fr.po
  40. 2246
      po/gl.po
  41. 7
      po/he.po
  42. 2237
      po/hu.po
  43. 2247
      po/it.po
  44. 2204
      po/ja.po
  45. 2161
      po/km.po
  46. 2199
      po/ko.po
  47. 1998
      po/ku.po
  48. 2110
      po/lt.po
  49. 2168
      po/mr.po
  50. 2243
      po/nb.po
  51. 2172
      po/ne.po
  52. 3121
      po/nl.po
  53. 2155
      po/nn.po
  54. 2292
      po/pl.po
  55. 2294
      po/pt.po
  56. 2172
      po/pt_BR.po
  57. 2183
      po/ro.po
  58. 2257
      po/ru.po
  59. 2235
      po/sk.po
  60. 2211
      po/sl.po
  61. 2225
      po/sv.po
  62. 2177
      po/th.po
  63. 2163
      po/tl.po
  64. 2212
      po/tr.po
  65. 2293
      po/uk.po
  66. 2288
      po/vi.po
  67. 2612
      po/zh_CN.po
  68. 2168
      po/zh_TW.po
  69. 5
      test/integration/framework
  70. 29
      test/integration/test-allow-scores-for-all-dependency-types
  71. 40
      test/integration/test-apt-download-progress
  72. 4
      test/integration/test-apt-ftparchive-src-cachedb
  73. 19
      test/integration/test-apt-get-install-deb
  74. 43
      test/integration/test-apt-helper
  75. 3
      test/integration/test-bug-769609-triggers-still-pending-after-run
  76. 7
      test/integration/test-kernel-helper-autoremove
  77. 32
      test/integration/test-no-fds-leaked-to-maintainer-scripts
  78. 3
      test/interactive-helper/aptwebserver.cc

2
apt-pkg/algorithms.cc

@ -468,7 +468,7 @@ void pkgProblemResolver::MakeScores()
if (D->Version != 0)
{
pkgCache::VerIterator const IV = Cache[T].InstVerIter(Cache);
if (IV.end() == true || D.IsSatisfied(IV) != D.IsNegative())
if (IV.end() == true || D.IsSatisfied(IV) == false)
continue;
}
Scores[T->ID] += DepMap[D->Type];

10
apt-pkg/cacheiterators.h

@ -161,10 +161,12 @@ class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
// Accessors
inline const char *Name() const { return Group().Name(); }
// Versions have sections - and packages can have different versions with different sections
// so this interface is broken by design. It used to return the section of the "first parsed
// package stanza", but as this can potentially be anything it now returns the section of the
// newest version instead (if any). aka: Run as fast as you can to Version.Section().
APT_DEPRECATED const char *Section() const;
// so this interface is broken by design. Run as fast as you can to Version.Section().
APT_DEPRECATED inline const char *Section() const {
APT_IGNORE_DEPRECATED_PUSH
return S->Section == 0?0:Owner->StrP + S->Section;
APT_IGNORE_DEPRECATED_POP
}
inline bool Purge() const {return S->CurrentState == pkgCache::State::Purge ||
(S->CurrentVer == 0 && S->CurrentState == pkgCache::State::NotInstalled);}
inline const char *Arch() const {return S->Arch == 0?0:Owner->StrP + S->Arch;}

38
apt-pkg/deb/debsrcrecords.cc

@ -121,9 +121,32 @@ bool debSrcRecordParser::BuildDepends(std::vector<pkgSrcRecords::Parser::BuildDe
// ---------------------------------------------------------------------
/* This parses the list of files and returns it, each file is required to have
a complete source package */
bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &F)
{
List.erase(List.begin(),List.end());
std::vector<pkgSrcRecords::File2> F2;
if (Files2(F2) == false)
return false;
for (std::vector<pkgSrcRecords::File2>::const_iterator f2 = F2.begin(); f2 != F2.end(); ++f2)
{
pkgSrcRecords::File2 f;
#if __GNUC__ >= 4
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
f.MD5Hash = f2->MD5Hash;
f.Size = f2->Size;
#if __GNUC__ >= 4
#pragma GCC diagnostic pop
#endif
f.Path = f2->Path;
f.Type = f2->Type;
F.push_back(f);
}
return true;
}
bool debSrcRecordParser::Files2(std::vector<pkgSrcRecords::File2> &List)
{
List.clear();
// Stash the / terminated directory prefix
string Base = Sect.FindS("Directory");
@ -162,7 +185,7 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
path = Base + path;
// look if we have a record for this file already
std::vector<pkgSrcRecords::File>::iterator file = List.begin();
std::vector<pkgSrcRecords::File2>::iterator file = List.begin();
for (; file != List.end(); ++file)
if (file->Path == path)
break;
@ -179,13 +202,16 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
}
// we haven't seen this file yet
pkgSrcRecords::File F;
pkgSrcRecords::File2 F;
F.Path = path;
F.Size = strtoull(size.c_str(), NULL, 10);
F.FileSize = strtoull(size.c_str(), NULL, 10);
F.Hashes.push_back(hashString);
APT_IGNORE_DEPRECATED_PUSH
F.Size = F.FileSize;
if (checksumField == "Files")
APT_IGNORE_DEPRECATED(F.MD5Hash = hash;)
F.MD5Hash = hash;
APT_IGNORE_DEPRECATED_POP
// Try to guess what sort of file it is we are getting.
string::size_type Pos = F.Path.length()-1;

1
apt-pkg/deb/debsrcrecords.h

@ -54,6 +54,7 @@ class APT_HIDDEN debSrcRecordParser : public pkgSrcRecords::Parser
return std::string(Start,Stop);
};
virtual bool Files(std::vector<pkgSrcRecords::File> &F);
bool Files2(std::vector<pkgSrcRecords::File2> &F);
debSrcRecordParser(std::string const &File,pkgIndexFile const *Index)
: Parser(Index), Fd(File,FileFd::ReadOnly, FileFd::Extension), Tags(&Fd,102400),

16
apt-pkg/deb/dpkgpm.cc

@ -73,7 +73,8 @@ public:
pkgDPkgPMPrivate() : stdin_is_dev_null(false), dpkgbuf_pos(0),
term_out(NULL), history_out(NULL),
progress(NULL), tt_is_valid(false), master(-1),
slave(NULL), protect_slave_from_dying(-1)
slave(NULL), protect_slave_from_dying(-1),
direct_stdin(false)
{
dpkgbuf[0] = '\0';
}
@ -100,6 +101,7 @@ public:
sigset_t sigmask;
sigset_t original_sigmask;
bool direct_stdin;
};
namespace
@ -1069,6 +1071,9 @@ void pkgDPkgPM::StartPtyMagic()
return;
}
if (isatty(STDIN_FILENO) == 0)
d->direct_stdin = true;
_error->PushToStack();
d->master = posix_openpt(O_RDWR | O_NOCTTY);
@ -1166,7 +1171,10 @@ void pkgDPkgPM::SetupSlavePtyMagic()
_error->FatalE("ioctl", "Setting TIOCSCTTY for slave fd %d failed!", slaveFd);
else
{
for (unsigned short i = 0; i < 3; ++i)
unsigned short i = 0;
if (d->direct_stdin == true)
++i;
for (; i < 3; ++i)
if (dup2(slaveFd, i) == -1)
_error->FatalE("dup2", "Dupping %d to %d in child failed!", slaveFd, i);
@ -1582,8 +1590,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
// wait for input or output here
FD_ZERO(&rfds);
if (d->master >= 0 && !d->stdin_is_dev_null)
FD_SET(0, &rfds);
if (d->master >= 0 && d->direct_stdin == false && d->stdin_is_dev_null == false)
FD_SET(STDIN_FILENO, &rfds);
FD_SET(_dpkgin, &rfds);
if(d->master >= 0)
FD_SET(d->master, &rfds);

6
apt-pkg/pkgcache.cc

@ -1036,9 +1036,3 @@ bool pkgCache::PrvIterator::IsMultiArchImplicit() const
return false;
}
/*}}}*/
APT_DEPRECATED APT_PURE const char * pkgCache::PkgIterator::Section() const {/*{{{*/
if (S->VersionList == 0)
return 0;
return VersionList().Section();
}
/*}}}*/

31
apt-pkg/srcrecords.cc

@ -14,6 +14,7 @@
#include<config.h>
#include <apt-pkg/srcrecords.h>
#include <apt-pkg/debsrcrecords.h>
#include <apt-pkg/error.h>
#include <apt-pkg/sourcelist.h>
#include <apt-pkg/metaindex.h>
@ -147,5 +148,33 @@ const char *pkgSrcRecords::Parser::BuildDepType(unsigned char const &Type)
return fields[Type];
}
/*}}}*/
bool pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2> &F2)/*{{{*/
{
debSrcRecordParser * const deb = dynamic_cast<debSrcRecordParser*>(this);
if (deb != NULL)
return deb->Files2(F2);
std::vector<pkgSrcRecords::File> F;
if (Files(F) == false)
return false;
for (std::vector<pkgSrcRecords::File>::const_iterator f = F.begin(); f != F.end(); ++f)
{
pkgSrcRecords::File2 f2;
#if __GNUC__ >= 4
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
f2.MD5Hash = f->MD5Hash;
f2.Size = f->Size;
f2.Hashes.push_back(HashString("MD5Sum", f->MD5Hash));
f2.FileSize = f->Size;
#if __GNUC__ >= 4
#pragma GCC diagnostic pop
#endif
f2.Path = f->Path;
f2.Type = f->Type;
F2.push_back(f2);
}
return true;
}
/*}}}*/

9
apt-pkg/srcrecords.h

@ -34,11 +34,15 @@ APT_IGNORE_DEPRECATED_PUSH
// Describes a single file
struct File
{
APT_DEPRECATED std::string MD5Hash;
APT_DEPRECATED unsigned long Size;
std::string Path;
std::string Type;
unsigned long long Size;
};
struct File2 : public File
{
unsigned long long FileSize;
HashStringList Hashes;
APT_DEPRECATED std::string MD5Hash;
};
APT_IGNORE_DEPRECATED_POP
@ -81,6 +85,7 @@ APT_IGNORE_DEPRECATED_POP
static const char *BuildDepType(unsigned char const &Type) APT_PURE;
virtual bool Files(std::vector<pkgSrcRecords::File> &F) = 0;
bool Files2(std::vector<pkgSrcRecords::File2> &F);
Parser(const pkgIndexFile *Index) : iIndex(Index) {};
virtual ~Parser() {};

8
cmdline/apt-get.cc

@ -791,13 +791,13 @@ static bool DoSource(CommandLine &CmdL)
}
// Back track
vector<pkgSrcRecords::File> Lst;
if (Last->Files(Lst) == false) {
vector<pkgSrcRecords::File2> Lst;
if (Last->Files2(Lst) == false) {
return false;
}
// Load them into the fetcher
for (vector<pkgSrcRecords::File>::const_iterator I = Lst.begin();
for (vector<pkgSrcRecords::File2>::const_iterator I = Lst.begin();
I != Lst.end(); ++I)
{
// Try to guess what sort of file it is we are getting.
@ -844,7 +844,7 @@ static bool DoSource(CommandLine &CmdL)
}
new pkgAcqFile(&Fetcher,Last->Index().ArchiveURI(I->Path),
I->Hashes, I->Size, Last->Index().SourceInfo(*Last,*I), Src);
I->Hashes, I->FileSize, Last->Index().SourceInfo(*Last,*I), Src);
}
}

2
configure.ac

@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
PACKAGE="apt"
PACKAGE_VERSION="1.1~exp7"
PACKAGE_VERSION="1.0.9.7"
PACKAGE_MAIL="APT Development Team <deity@lists.debian.org>"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION")

2
debian/apt.auto-removal.sh

@ -41,7 +41,7 @@ version_test_gt ()
return "$?"
}
list="$(${DPKG} -l | awk '/^ii[ ]+(linux|kfreebsd|gnumach)-image-[0-9]/ && $2 !~ /-dbg$/ { print $2 }' | sed -e 's#\(linux\|kfreebsd\|gnumach\)-image-##')"
list="$(${DPKG} -l | awk '/^ii[ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg$/ { print $2 }' | sed -e 's#\(linux\|kfreebsd\|gnumach\)-image-##')"
latest_version=""
previous_version=""

86
debian/changelog

@ -234,6 +234,92 @@ apt (1.1~exp1) experimental; urgency=low
-- Michael Vogt <mvo@debian.org> Thu, 19 Jun 2014 12:01:48 +0200
apt (1.0.9.7) unstable; urgency=medium
[ Tomasz Buchert ]
* Fix crash in the apt-transport-https when Owner is NULL (Closes: #778375)
-- Michael Vogt <mvo@debian.org> Mon, 23 Feb 2015 12:54:03 +0100
apt (1.0.9.6) unstable; urgency=medium
[ Michael Vogt ]
* Fix missing URIStart() for https downloads
* Add regression test for the previous commit
[ David Kalnischkies ]
* 128 KiB DSC files ought to be enough for everyone (Closes: 774893)
* award points for positive dependencies again (Closes: 774924)
-- Michael Vogt <mvo@ubuntu.com> Fri, 16 Jan 2015 08:37:25 +0100
apt (1.0.9.5) unstable; urgency=medium
[ David Kalnischkies ]
* dispose http(s) 416 error page as non-content (Closes: 768797)
* do not make PTY slave the controlling terminal (Closes: 772641)
* always run 'dpkg --configure -a' at the end of our dpkg callings
(Closes: 769609)
* pass-through stdin fd instead of content if not a terminal (Closes: 773061)
[ James McCoy ]
* tighten filtering of kernel images in apt.auto-removal (Closes: 772732)
[ Jean-Pierre Giraud ]
* French manpages translation update (Closes: 771967)
[ Zhou Mo ]
* Chinese (simplified) program translation update (Closes: 771982)
[ Kenshi Muto ]
* Japanese program translation update (Closes: 772678)
[ Theppitak Karoonboonyanan ]
* Thai program translation update (Closes: 772913)
-- David Kalnischkies <david@kalnischkies.de> Tue, 23 Dec 2014 13:22:42 +0100
apt (1.0.9.4) unstable; urgency=medium
[ David Kalnischkies ]
* use 'best' hash for source authentication (LP: 1098738)
* deprecate the Section member from package struct
* allow options between command and -- on commandline
* re-enable support for -s (and co) in apt-get source (Closes: 742578)
* change codenames to jessie as stable POV in docs
* close leaking slave fd after setting up pty magic (Closes: 767774)
* fix PTY interaction on linux and kfreebsd (Closes: 765687)
[ James McCoy ]
* support long keyids in "apt-key del" instead of ignoring them
(Closes: 754436)
[ Michael Vogt ]
* Use sysconf(_SC_ARG_MAX) to find the size of Dpkg::MaxArgBytes
[ Frans Spiesschaert ]
* Dutch program translation update (Closes: 771039)
[ Julien Patriarca ]
* French program translation update (Closes: 766755)
[ Zhou Mo ]
* Chinese (simplified) program translation update (Closes: 766170)
[ Miroslav Kure ]
* Czech program translation update (Closes: 764055)
[ Mert Dirik ]
* Turkish program translation update (Closes: 763379)
[ Kenshi Muto ]
* Japanese program translation update (Closes: 763033)
[ Manuel "Venturi" Porras Peralta ]
* Spanish program translation update (Closes: 771815)
-- David Kalnischkies <david@kalnischkies.de> Wed, 03 Dec 2014 14:26:04 +0100
apt (1.0.9.3) unstable; urgency=medium
[ josch ]

18
debian/libapt-pkg4.15.symbols

@ -1351,7 +1351,23 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER#
(c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@Base" 1.0.4
(c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@Base" 1.0.4
(c++)"pkgSrcRecords::Step()@Base" 1.0.4
(c++)"debTranslationsParser::Architecture()@Base" 1.0.4
(c++)"debTranslationsParser::~debTranslationsParser()@Base" 1.0.4
(c++)"debTranslationsParser::Version()@Base" 1.0.4
(c++)"typeinfo for debTranslationsParser@Base" 1.0.4
(c++)"typeinfo name for debTranslationsParser@Base" 1.0.4
(c++)"vtable for debTranslationsParser@Base" 1.0.4
(c++)"pkgDPkgPM::SetupSlavePtyMagic()@Base" 1.0.8
(c++)"HashStringList::find(char const*) const@Base" 1.0.9.4
(c++)"HashStringList::operator==(HashStringList const&) const@Base" 1.0.9.4
(c++)"HashStringList::operator!=(HashStringList const&) const@Base" 1.0.9.4
(c++)"HashStringList::push_back(HashString const&)@Base" 1.0.9.4
(c++)"HashStringList::supported(char const*)@Base" 1.0.9.4
(c++)"HashStringList::VerifyFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 1.0.9.4
(c++)"HashString::operator==(HashString const&) const@Base" 1.0.9.4
(c++)"HashString::operator!=(HashString const&) const@Base" 1.0.9.4
(c++)"pkgSrcRecords::Parser::Files2(std::vector<pkgSrcRecords::File2, std::allocator<pkgSrcRecords::File2> >&)@Base" 1.0.9.4
(c++)"debSrcRecordParser::Files2(std::vector<pkgSrcRecords::File2, std::allocator<pkgSrcRecords::File2> >&)@Base" 1.0.9.4
(c++)"APT::Progress::PackageManager::PackageManager()@Base" 1.1~exp1
(c++)"pkgDPkgPM::Go(APT::Progress::PackageManager*)@Base" 1.1~exp1
(c++)"pkgPackageManager::DoInstall(APT::Progress::PackageManager*)@Base" 1.1~exp1
@ -1381,6 +1397,8 @@ libapt-pkg.so.4.15 libapt-pkg4.15 #MINVER#
(c++)"indexRecords::SetTrusted(bool)@Base" 1.1~exp5
(c++)"metaIndex::metaIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 1.1~exp9
(c++)"pkgTagSection::Get(char const*&, char const*&, unsigned int) const@Base" 1.1~exp9
### demangle strangeness - buildd report it as MISSING and as new…
(c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0
### gcc-4.6 artefacts
# (c++|optional=implicit)"HashString::operator=(HashString const&)@Base" 0.8.0
# (c++|optional=implicit)"HashString::HashString(HashString const&)@Base" 0.8.0

10
doc/apt-verbatim.ent

@ -225,13 +225,13 @@
">
<!-- this will be updated by 'prepare-release' -->
<!ENTITY apt-product-version "1.1~exp7">
<!ENTITY apt-product-version "1.0.9.7">
<!-- (Code)names for various things used all over the place -->
<!ENTITY oldstable-codename "squeeze">
<!ENTITY stable-codename "wheezy">
<!ENTITY testing-codename "jessie">
<!ENTITY stable-version "7">
<!ENTITY oldstable-codename "wheezy">
<!ENTITY stable-codename "jessie">
<!ENTITY testing-codename "stretch">
<!ENTITY stable-version "8">
<!ENTITY ubuntu-codename "trusty">
<!-- good and bad just refers to matching and not matching a pattern…

4
doc/po/apt-doc.pot

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: apt-doc 1.1~exp3\n"
"Project-Id-Version: apt-doc 1.0.9.5\n"
"Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
"POT-Creation-Date: 2014-11-06 09:45+0100\n"
"POT-Creation-Date: 2015-01-16 04:37-0500\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"

649
doc/po/fr.po

File diff suppressed because it is too large

6
ftparchive/cachedb.cc

@ -322,12 +322,12 @@ bool CacheDB::LoadSource() /*{{{*/
if (Dsc.Read(FileName) == false)
return false;
if (Dsc.Data == 0)
if (Dsc.Length == 0)
return _error->Error(_("Failed to read .dsc"));
// Write back the control information
InitQuerySource();
if (Put(Dsc.Data, Dsc.Length) == true)
if (Put(Dsc.Data.c_str(), Dsc.Length) == true)
CurStat.Flags |= FlSource;
return true;

41
ftparchive/sources.cc

@ -1,5 +1,5 @@
#include <string>
#include <iostream>
#include <sstream>
// for memcpy
#include <cstring>
@ -9,17 +9,19 @@
#include "sources.h"
bool DscExtract::TakeDsc(const void *newData, unsigned long newSize)
bool DscExtract::TakeDsc(const void *newData, unsigned long long newSize)
{
if(newSize > maxSize)
return _error->Error("DSC data is too large %lu!", newSize);
if (newSize == 0)
{
// adding two newlines 'off record' for pkgTagSection.Scan() calls
Data = "\n\n";
Length = 0;
return true;
}
memcpy(Data, newData, newSize);
Data = std::string((const char*)newData, newSize);
// adding two newlines 'off record' for pkgTagSection.Scan() calls
Data.append("\n\n");
Length = newSize;
return true;
@ -27,20 +29,31 @@ bool DscExtract::TakeDsc(const void *newData, unsigned long newSize)
bool DscExtract::Read(std::string FileName)
{
Data.clear();
Length = 0;
FileFd F;
if (OpenMaybeClearSignedFile(FileName, F) == false)
return false;
unsigned long long const FSize = F.FileSize();
if(FSize > maxSize)
return _error->Error("DSC file '%s' is too large!",FileName.c_str());
if (F.Read(Data, FSize) == false)
return false;
Length = FSize;
IsClearSigned = (FileName != F.Name());
std::ostringstream data;
char buffer[1024];
do {
unsigned long long actual = 0;
if (F.Read(buffer, sizeof(buffer)-1, &actual) == false)
return _error->Errno("read", "Failed to read dsc file %s", FileName.c_str());
if (actual == 0)
break;
Length += actual;
buffer[actual] = '\0';
data << buffer;
} while(true);
// adding two newlines 'off record' for pkgTagSection.Scan() calls
data << "\n\n";
Data = data.str();
return true;
}

26
ftparchive/sources.h

@ -3,29 +3,21 @@
#include <apt-pkg/tagfile.h>
class DscExtract
#include <string>
class DscExtract
{
public:
//FIXME: do we really need to enforce a maximum size of the dsc file?
static const int maxSize = 128*1024;
char *Data;
std::string Data;
pkgTagSection Section;
unsigned long Length;
unsigned long long Length;
bool IsClearSigned;
bool TakeDsc(const void *Data, unsigned long Size);
bool TakeDsc(const void *Data, unsigned long long Size);
bool Read(std::string FileName);
DscExtract() : Data(0), Length(0), IsClearSigned(false) {
Data = new char[maxSize];
};
~DscExtract() {
if(Data != NULL) {
delete [] Data;
Data = NULL;
}
};
DscExtract() : Length(0), IsClearSigned(false) {};
~DscExtract() {};
};

12
ftparchive/writer.cc

@ -648,18 +648,10 @@ bool SourcesWriter::DoPackage(string FileName)
// the "db cursor"
Db.Finish();
// read stuff
char *Start = Db.Dsc.Data;
char *BlkEnd = Db.Dsc.Data + Db.Dsc.Length;
// Add extra \n to the end, just in case (as in clearsigned they are missing)
*BlkEnd++ = '\n';
*BlkEnd++ = '\n';
pkgTagSection Tags;
if (Tags.Scan(Start,BlkEnd - Start) == false)
if (Tags.Scan(Db.Dsc.Data.c_str(), Db.Dsc.Data.length()) == false)
return _error->Error("Could not find a record in the DSC '%s'",FileName.c_str());
if (Tags.Exists("Source") == false)
return _error->Error("Could not find a Source entry in the DSC '%s'",FileName.c_str());
Tags.Trim();

28
methods/https.cc

@ -95,24 +95,33 @@ HttpsMethod::write_data(void *buffer, size_t size, size_t nmemb, void *userp)
if (me->Server->JunkSize != 0)
return buffer_size;
if (me->Res.Size == 0)
if (me->Server->ReceivedData == false)
{
me->URIStart(me->Res);
me->Server->ReceivedData = true;
}
if(me->File->Write(buffer, buffer_size) != true)
return false;
return 0;
if(me->Queue->MaximumSize > 0 && me->File->Tell() > me->Queue->MaximumSize)
if(me->Queue->MaximumSize > 0)
{
me->SetFailReason("MaximumSizeExceeded");
_error->Error("Writing more data than expected (%llu > %llu)",
me->TotalWritten, me->Queue->MaximumSize);
return 0;
unsigned long long const TotalWritten = me->File->Tell();
if (TotalWritten > me->Queue->MaximumSize)
{
me->SetFailReason("MaximumSizeExceeded");
_error->Error("Writing more data than expected (%llu > %llu)",
TotalWritten, me->Queue->MaximumSize);
return 0;
}
}
return buffer_size;
}
int
HttpsMethod::progress_callback(void *clientp, double dltotal, double /*dlnow*/,
double /*ultotal*/, double /*ulnow*/)
double /*ultotal*/, double /*ulnow*/)
{
HttpsMethod *me = (HttpsMethod *)clientp;
if(dltotal > 0 && me->Res.Size == 0) {
@ -125,6 +134,7 @@ HttpsMethod::progress_callback(void *clientp, double dltotal, double /*dlnow*/,
HttpsServerState::HttpsServerState(URI Srv,HttpsMethod * /*Owner*/) : ServerState(Srv, NULL)
{
TimeOut = _config->FindI("Acquire::https::Timeout",TimeOut);
ReceivedData = false;
Reset();
}
/*}}}*/
@ -192,7 +202,7 @@ void HttpsMethod::SetupProxy() /*{{{*/
bool HttpsMethod::Fetch(FetchItem *Itm)
{
struct stat SBuf;
struct curl_slist *headers=NULL;
struct curl_slist *headers=NULL;
char curl_errorstr[CURL_ERROR_SIZE];
URI Uri = Itm->Uri;
string remotehost = Uri.Host;

11
methods/https.h

@ -50,6 +50,8 @@ class HttpsServerState : public ServerState
HttpsServerState(URI Srv, HttpsMethod *Owner);
virtual ~HttpsServerState() {Close();};
bool ReceivedData;
};
class HttpsMethod : public pkgAcqMethod
@ -62,18 +64,17 @@ class HttpsMethod : public pkgAcqMethod
static size_t parse_header(void *buffer, size_t size, size_t nmemb, void *userp);
static size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
static int progress_callback(void *clientp, double dltotal, double dlnow,
double ultotal, double ulnow);
static int progress_callback(void *clientp, double dltotal, double dlnow,
double ultotal, double ulnow);
void SetupProxy();
CURL *curl;
FetchResult Res;
HttpsServerState *Server;
unsigned long long TotalWritten;
public:
FileFd *File;
HttpsMethod() : pkgAcqMethod("1.2",Pipeline | SendConfig), Server(NULL), TotalWritten(0), File(NULL)
HttpsMethod() : pkgAcqMethod("1.2",Pipeline | SendConfig), Server(NULL), File(NULL)
{
curl = curl_easy_init();
};

2
methods/server.cc

@ -129,7 +129,7 @@ bool ServerState::HeaderLine(string Line)
if (elements == 3)
{
Code[0] = '\0';
if (Owner->Debug == true)
if (Owner != NULL && Owner->Debug == true)
clog << "HTTP server doesn't give Reason-Phrase for " << Result << std::endl;
}
else if (elements != 4)

1951
po/apt-all.pot

File diff suppressed because it is too large

1996
po/ar.po

File diff suppressed because it is too large

2213
po/ast.po

File diff suppressed because it is too large

2296
po/bg.po

File diff suppressed because it is too large

1957
po/bs.po

File diff suppressed because it is too large

2242
po/ca.po

File diff suppressed because it is too large

2188
po/cs.po

File diff suppressed because it is too large

2180
po/cy.po

File diff suppressed because it is too large

2200
po/da.po

File diff suppressed because it is too large

2261
po/de.po

File diff suppressed because it is too large

2163
po/dz.po

File diff suppressed because it is too large

2159
po/el.po

File diff suppressed because it is too large

3009
po/es.po

File diff suppressed because it is too large

2163
po/eu.po

File diff suppressed because it is too large

2159
po/fi.po

File diff suppressed because it is too large

2566
po/fr.po

File diff suppressed because it is too large

2246
po/gl.po

File diff suppressed because it is too large

7
po/he.po

@ -2259,12 +2259,7 @@ msgstr "כשלון בפענוח %s"
#: apt-pkg/tagfile.cc:102
#, c-format
msgid "Unable to parse package file %s (1)"
msgstr ""
#: apt-pkg/tagfile.cc:189
#, c-format
msgid "Unable to parse package file %s (2)"
msgid "Unable to parse package file %s (%d)"
msgstr ""
#: apt-pkg/sourcelist.cc:90

2237
po/hu.po

File diff suppressed because it is too large

2247
po/it.po

File diff suppressed because it is too large

2204
po/ja.po

File diff suppressed because it is too large

2161
po/km.po

File diff suppressed because it is too large

2199
po/ko.po

File diff suppressed because it is too large

1998
po/ku.po

File diff suppressed because it is too large

2110
po/lt.po

File diff suppressed because it is too large

2168
po/mr.po

File diff suppressed because it is too large

2243
po/nb.po

File diff suppressed because it is too large

2172
po/ne.po

File diff suppressed because it is too large

3121
po/nl.po

File diff suppressed because it is too large

2155
po/nn.po

File diff suppressed because it is too large

2292
po/pl.po

File diff suppressed because it is too large

2294
po/pt.po

File diff suppressed because it is too large

2172
po/pt_BR.po

File diff suppressed because it is too large

2183
po/ro.po

File diff suppressed because it is too large

2257
po/ru.po

File diff suppressed because it is too large

2235
po/sk.po

File diff suppressed because it is too large

2211
po/sl.po

File diff suppressed because it is too large

2225
po/sv.po

File diff suppressed because it is too large

2177
po/th.po

File diff suppressed because it is too large

2163
po/tl.po

File diff suppressed because it is too large

2212
po/tr.po

File diff suppressed because it is too large

2293
po/uk.po

File diff suppressed because it is too large

2288
po/vi.po

File diff suppressed because it is too large

2612
po/zh_CN.po

File diff suppressed because it is too large

2168
po/zh_TW.po

File diff suppressed because it is too large

5
test/integration/framework

@ -248,7 +248,7 @@ setupenvironment() {
echo "Dir::Bin::apt-key \"${BUILDDIRECTORY}/apt-key\";" >> aptconfig.conf
fi
cat > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
cat << EOF > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg"
#!/bin/sh
set -e
if [ -r "${TMPWORKINGDIRECTORY}/noopchroot.so" ]; then
@ -262,7 +262,6 @@ exec fakeroot dpkg --root="${TMPWORKINGDIRECTORY}/rootdir" \\
--log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log \\
--force-not-root --force-bad-path "\$@"
EOF
cat "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg"
chmod +x "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg"
echo "Dir::Bin::dpkg \"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg\";" > rootdir/etc/apt/apt.conf.d/99dpkg
@ -827,7 +826,7 @@ buildaptarchivefromincoming() {
[ -e ftparchive.conf ] || createaptftparchiveconfig
[ -e dists ] || buildaptftparchivedirectorystructure
msgninfo "\tGenerate Packages, Sources and Contents files… "
aptftparchive -qq generate ftparchive.conf
testsuccess aptftparchive generate ftparchive.conf
cd - > /dev/null
msgdone "info"
generatereleasefiles "$@"

29
test/integration/test-allow-scores-for-all-dependency-types

@ -32,6 +32,11 @@ insertpackage 'multipleyes' 'foo' 'amd64' '2.2' 'Conflicts: bar (<= 3)'
# having foo multiple times as conflict is a non-advisable hack in general
insertpackage 'multipleyes' 'bar' 'amd64' '2.2' 'Conflicts: foo (<= 3), foo (<= 3)'
#774924 - slightly simplified
insertpackage 'jessie' 'login' 'amd64' '2' 'Pre-Depends: libaudit1 (>= 0)'
insertpackage 'jessie' 'libaudit1' 'amd64' '2' 'Depends: libaudit-common (>= 0)'
insertpackage 'jessie' 'libaudit-common' 'amd64' '2' 'Breaks: libaudit0, libaudit1 (<< 2)'
cp rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status-backup
setupaptarchive
@ -148,3 +153,27 @@ Inst foo [1] (2 versioned [amd64])
Inst baz (2 versioned [amd64])
Conf foo (2 versioned [amd64])
Conf baz (2 versioned [amd64])' aptget install baz -st versioned
# recreating the exact situation is hard, so we pull tricks to get the score
cp -f rootdir/var/lib/dpkg/status-backup rootdir/var/lib/dpkg/status
insertinstalledpackage 'gdm3' 'amd64' '1' 'Depends: libaudit0, libaudit0'
insertinstalledpackage 'login' 'amd64' '1' 'Essential: yes'
insertinstalledpackage 'libaudit0' 'amd64' '1'
testequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages will be REMOVED:
gdm3 libaudit0
The following NEW packages will be installed:
libaudit-common libaudit1
The following packages will be upgraded:
login
1 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
Remv gdm3 [1]
Remv libaudit0 [1]
Inst libaudit-common (2 jessie [amd64])
Conf libaudit-common (2 jessie [amd64])
Inst libaudit1 (2 jessie [amd64])
Conf libaudit1 (2 jessie [amd64])
Inst login [1] (2 jessie [amd64])
Conf login (2 jessie [amd64])' aptget dist-upgrade -st jessie

40
test/integration/test-apt-download-progress

@ -0,0 +1,40 @@
#!/bin/sh
#
# ensure downloading sends progress as a regression test for commit 9127d7ae
#
set -e
TESTDIR=$(readlink -f $(dirname $0))
. $TESTDIR/framework
setupenvironment
changetohttpswebserver
assertprogress() {
T="$1"
testsuccess grep "dlstatus:1:0:Retrieving file 1 of 1" "$T"
if ! egrep -q "dlstatus:1:[1-9][0-9](\..*)?:Retrieving file 1 of 1" "$T"; then
cat "$T"
msgfail "Failed to detect download progress"
fi
testsuccess grep "dlstatus:1:100:Retrieving file 1 of 1" "$T"
}
# we need to ensure the file is reasonable big so that apt has a chance to
# actually report progress - but not too big to ensure its not delaying the
# test too much
TESTFILE=testfile.big
testsuccess dd if=/dev/zero of=./aptarchive/$TESTFILE bs=800k count=1
msgtest 'download progress works via' 'http'
exec 3> apt-progress.log
testsuccess --nomsg apthelper download-file "http://localhost:8080/$TESTFILE" http-$TESTFILE -o APT::Status-Fd=3 -o Acquire::http::Dl-Limit=800
assertprogress apt-progress.log
msgtest 'download progress works via' 'https'
exec 3> apt-progress.log
testsuccess --nomsg apthelper download-file "https://localhost:4433/$TESTFILE" https-$TESTFILE -o APT::Status-Fd=3 -o Acquire::https::Dl-Limit=800
assertprogress apt-progress.log
# cleanup
rm -f apt-progress*.log

4
test/integration/test-apt-ftparchive-src-cachedb

@ -180,10 +180,6 @@ testequal "
E: Could not find a Source entry in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
rm -f aptarchive/pool/invalid/invalid_1.0.dsc
dd if=/dev/zero of="aptarchive/pool/invalid/toobig_1.0.dsc" bs=1k count=129 2>/dev/null
testequal "
E: DSC file 'aptarchive/pool/invalid/toobig_1.0.dsc' is too large!" aptftparchive sources aptarchive/pool/invalid
# ensure clean works
rm -f aptarchive/pool/main/*
testsuccess aptftparchive clean apt-ftparchive.conf -q=0 -o Debug::APT::FTPArchive::Clean=1

19
test/integration/test-apt-get-install-deb

@ -14,17 +14,14 @@ testequal 'E: Unable to locate package /dev/null' aptget install -qq /dev/null
cat > foo.deb <<EOF
I'm not a deb, I'm a teapot.
EOF
testequal 'E: Sub-process Popen returned an error code (100)
E: Encountered a section with no Package: header
testfailure aptget install ./foo.deb
testsuccess grep '^E: Sub-process Popen returned an error code' rootdir/tmp/testfailure.output
testequal 'E: Encountered a section with no Package: header
E: Problem with MergeLister for ./foo.deb
E: The package lists or status file could not be parsed or opened.' aptget install -qq ./foo.deb
E: The package lists or status file could not be parsed or opened.' tail -n 3 rootdir/tmp/testfailure.output
# fakeroot is currently not found, framwork needs updating
#
#buildsimplenativepackage 'foo' 'all' '1.0'
#
#testequal 'Selecting previously unselected package foo.
#(Reading database ... 0 files and directories currently installed.)
# Preparing to unpack .../incoming/foo_1.0_all.deb ...
#Unpacking foo (1.0) ...
#Setting up foo (1.0) ...' aptget install -qq ./incoming/foo_1.0_all.deb
buildsimplenativepackage 'foo' 'all' '1.0'
testdpkgnotinstalled 'foo'
testsuccess aptget install ./incoming/foo_1.0_all.deb
testdpkginstalled 'foo'

43
test/integration/test-apt-helper

@ -11,34 +11,35 @@ changetohttpswebserver
test_apt_helper_download() {
echo 'foo' > aptarchive/foo
echo 'bar' > aptarchive/foo2
msgtest 'apt-file download-file' 'md5sum'
apthelper -qq download-file http://localhost:8080/foo downloaded/foo2 MD5Sum:d3b07384d113edec49eaa6238ad5ff00 && msgpass || msgfail
testfileequal downloaded/foo2 'foo'
msgtest 'apt-file download-file md5sum'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo foo2 MD5Sum:d3b07384d113edec49eaa6238ad5ff00
testfileequal foo2 'foo'
msgtest 'apt-file download-file' 'sha1'
apthelper -qq download-file http://localhost:8080/foo downloaded/foo1 SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 && msgpass || msgfail
testfileequal downloaded/foo1 'foo'
msgtest 'apt-file download-file sha1'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo foo1 SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
testfileequal foo1 'foo'
msgtest 'apt-file download-file' 'sha256'
apthelper -qq download-file http://localhost:8080/foo downloaded/foo3 SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c && msgpass || msgfail
testfileequal downloaded/foo3 'foo'
msgtest 'apt-file download-file sha256'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo foo3 SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
testfileequal foo3 'foo'
msgtest 'apt-file download-file' 'no-hash'
apthelper -qq download-file http://localhost:8080/foo downloaded/foo4 && msgpass || msgfail
testfileequal downloaded/foo4 'foo'
msgtest 'apt-file download-file no-hash'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo foo4
testfileequal foo4 'foo'
msgtest 'apt-file download-file' 'wrong hash'
if ! apthelper -qq download-file http://localhost:8080/foo downloaded/foo5 MD5Sum:aabbcc 2>&1 2> download.stderr; then
msgpass
else
msgfail
fi
testfileequal download.stderr 'E: Failed to fetch http://localhost:8080/foo Hash Sum mismatch
msgtest 'apt-file download-file wrong hash'
testfailure --nomsg apthelper -qq download-file http://localhost:8080/foo foo5 MD5Sum:aabbcc
testfileequal rootdir/tmp/testfailure.output 'E: Failed to fetch http://localhost:8080/foo Hash Sum mismatch
E: Download Failed'
testfileequal downloaded/foo5.FAILED 'foo'
testfailure test -e downloaded/foo5
testfileequal foo5.FAILED 'foo'
msgtest 'apt-file download-file md5sum sha1'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo foo6 MD5Sum:d3b07384d113edec49eaa6238ad5ff00 http://localhost:8080/foo2 foo7 SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f
testfileequal foo6 'foo'
testfileequal foo7 'bar'
}
test_apt_helper_detect_proxy() {

3
test/integration/test-bug-769609-triggers-still-pending-after-run

@ -32,13 +32,10 @@ EOF
buildsimplenativepackage "trigdepends-$TYPE" 'all' '1.0' 'unstable'
}
# FIXME: implement test with activate-style triggers
#buildtriggerpackages 'interest'
buildtriggerpackages 'interest-noawait'
buildsimplenativepackage "trigstuff" 'all' '1.0' 'unstable'
setupaptarchive
runtests() {

7
test/integration/test-kernel-helper-autoremove

@ -26,13 +26,6 @@ insertinstalledpackage 'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1'
testsuccess aptmark auto "$CURRENTKERNEL" 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' 'linux-headers-1000000-1-generic'
cat > ./fake-dpkg <<EOF
#!/bin/sh
exec $(aptconfig dump --no-empty --format='%v ' 'DPKG::options') "\$@"
EOF
chmod +x ./fake-dpkg
echo 'Dir::Bin::dpkg "./fake-dpkg";' > rootdir/etc/apt/apt.conf.d/99fakedpkg
# install fake-dpkg into it
catfail() {
echo >&2

32
test/integration/test-no-fds-leaked-to-maintainer-scripts

@ -11,14 +11,20 @@ configdpkgnoopchroot
setupsimplenativepackage "fdleaks" 'all' '1.0' 'unstable'
BUILDDIR="incoming/fdleaks-1.0"
for script in 'preinst' 'postinst' 'prerm' 'postrm'; do
echo '#!/bin/sh
ls -l /proc/self/fd/' > ${BUILDDIR}/debian/$script
cat > ${BUILDDIR}/debian/$script << EOF
#!/bin/sh
if [ -e "$(pwd)/rootdir/tmp/read_stdin" ]; then
read line;
echo "STDIN: -\$line-"
fi
ls -l /proc/self/fd/
EOF
done
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
PKGNAME='fdleaks:all'
if ! dpkg-checkbuilddeps -d 'dpkg (>= 1.16.2)' /dev/null; then
if ! dpkg-checkbuilddeps -d 'dpkg (>= 1.16.2)' /dev/null >/dev/null 2>&1; then
PKGNAME='fdleaks'
fi
@ -84,6 +90,14 @@ startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
}
checkpurge
msgtest 'setsid provided is new enough to support' '-w'
if dpkg-checkbuilddeps -d 'util-linux (>= 2.24.2-1)' /dev/null >/dev/null 2>&1; then
msgpass
else
msgskip "$(command dpkg -l util-linux)"
exit
fi
rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
testsuccess runapt command setsid -w "${BUILDDIRECTORY}/apt-get" install -y fdleaks -qq < /dev/null
checkinstall
@ -91,3 +105,15 @@ checkinstall
rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
testsuccess runapt command setsid -w "${BUILDDIRECTORY}/apt-get" purge -y fdleaks -qq
checkpurge
touch rootdir/tmp/read_stdin
rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
for i in $(seq 1 10); do echo "$i"; done | testsuccess aptget install -y fdleaks -qq
checkinstall
testequal '2' grep -c '^STDIN: ' rootdir/var/log/apt/term.log
rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
yes '' | testsuccess runapt command setsid -w "${BUILDDIRECTORY}/apt-get" purge -y fdleaks -qq
checkpurge
testequal '3' grep -c '^STDIN: ' rootdir/var/log/apt/term.log

3
test/interactive-helper/aptwebserver.cc

@ -861,7 +861,8 @@ int main(int const argc, const char * argv[])
std::clog << "Serving ANY file on port: " << port << std::endl;
int const slaves = _config->FindB("aptwebserver::slaves", SOMAXCONN);
int const slaves = _config->FindI("aptwebserver::slaves", SOMAXCONN);
std::cerr << "SLAVES: " << slaves << std::endl;
listen(sock, slaves);
/*}}}*/

Loading…
Cancel
Save