7e6a37fe9a
Reorganize patches for better understanding and ensure they are applied in expected order. Another changes: * gnupg is now in recommends (used by apt-key). * x11-repo is now in suggests. * TCSAFLUSH patch is dropped because it is covered by one of NDK patches where TCSAFLUSH value is replaced with TCSANOW.
53 lines
2.0 KiB
Diff
53 lines
2.0 KiB
Diff
diff -uNr apt-1.4.9/apt-pkg/contrib/srvrec.cc apt-1.4.9.mod/apt-pkg/contrib/srvrec.cc
|
|
--- apt-1.4.9/apt-pkg/contrib/srvrec.cc 2019-01-18 12:42:07.000000000 +0200
|
|
+++ apt-1.4.9.mod/apt-pkg/contrib/srvrec.cc 2019-11-12 22:41:25.142836445 +0200
|
|
@@ -40,14 +40,24 @@
|
|
struct servent *s_ent = nullptr;
|
|
std::vector<char> buf(1024);
|
|
|
|
+#ifdef __ANDROID__
|
|
+ s_ent = getservbyport(htons(port), "tcp");
|
|
+ if (s_ent == nullptr) return false;
|
|
+#else
|
|
res = getservbyport_r(htons(port), "tcp", &s_ent_buf, buf.data(), buf.size(), &s_ent);
|
|
if (res != 0 || s_ent == nullptr)
|
|
return false;
|
|
+#endif
|
|
|
|
strprintf(target, "_%s._tcp.%s", s_ent->s_name, host.c_str());
|
|
return GetSrvRecords(target, Result);
|
|
}
|
|
|
|
+#ifdef __ANDROID__
|
|
+extern "C" int __dn_skipname(const unsigned char* comp_dn, const unsigned char* eom);
|
|
+static inline int dn_skipname(const unsigned char* a, const unsigned char* b) { return __dn_skipname(a,b); }
|
|
+#endif
|
|
+
|
|
bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
|
|
{
|
|
unsigned char answer[PACKETSZ];
|
|
diff -uNr apt-1.4.9/methods/connect.cc apt-1.4.9.mod/methods/connect.cc
|
|
--- apt-1.4.9/methods/connect.cc 2019-01-18 12:42:07.000000000 +0200
|
|
+++ apt-1.4.9.mod/methods/connect.cc 2019-11-12 22:41:29.396188505 +0200
|
|
@@ -129,7 +129,7 @@
|
|
|
|
// Check the socket for an error condition
|
|
unsigned int Err;
|
|
- unsigned int Len = sizeof(Err);
|
|
+ socklen_t Len = sizeof(Err);
|
|
if (getsockopt(Fd,SOL_SOCKET,SO_ERROR,&Err,&Len) != 0)
|
|
return _error->Errno("getsockopt",_("Failed"));
|
|
|
|
@@ -301,7 +301,10 @@
|
|
if(LastHost != Host || LastPort != Port)
|
|
{
|
|
SrvRecords.clear();
|
|
- if (_config->FindB("Acquire::EnableSrvRecords", true) == true)
|
|
+ /* Disable by default in Termux due to it breaking on (some) HTC
|
|
+ devices (https://github.com/termux/termux-packages/issues/99). */
|
|
+
|
|
+ if (_config->FindB("Acquire::EnableSrvRecords", false) == true)
|
|
{
|
|
GetSrvRecords(Host, DefPort, SrvRecords);
|
|
// RFC2782 defines that a lonely '.' target is an abort reason
|