]> git.saurik.com Git - apt-legacy.git/commitdiff
Fixed some dependencies, removed mDNS fix for 2.0, and factored for multi-arch support.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 14 Apr 2008 23:22:48 +0000 (23:22 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 14 Apr 2008 23:22:48 +0000 (23:22 +0000)
M cfnetwork.diff
D darwin.diff
M mdns.diff
A ostable.diff

git-svn-id: http://svn.telesphoreo.org/trunk@218 514c082c-b64e-11dc-b46d-3d985efe055d

24 files changed:
buildlib/ostable
cmdline/apt-cache.cc
cmdline/apt-cache.cc.orig
cmdline/apt-cdrom.cc
cmdline/apt-cdrom.cc.orig
cmdline/apt-config.cc
cmdline/apt-config.cc.orig
cmdline/apt-extracttemplates.cc
cmdline/apt-extracttemplates.cc.orig
cmdline/apt-get.cc
cmdline/apt-get.cc.orig
cmdline/apt-sortpkgs.cc
cmdline/apt-sortpkgs.cc.orig
ftparchive/apt-ftparchive.cc
methods/cdrom.cc
methods/copy.cc
methods/file.cc
methods/ftp.cc
methods/gpgv.cc
methods/gzip.cc
methods/http.cc
methods/http.cc.orig
methods/rred.cc
methods/rsh.cc

index 088af64b0b58d6db2ea1876fa38a5a91359e8877..091faf8092ce3caa7b984608345afba3d3a62447 100644 (file)
@@ -11,6 +11,7 @@
 [^-]*-kfreebsd.*-gnu   kfreebsd
 [^-]*-knetbsd.*-gnu   knetbsd
 [^-]*-gnu[^-]*   hurd
+[^-]*-darwin9 iphoneos
 [^-]*-darwin darwin
 
 # These are samples. 
index 37594e7a69b6890bea57a20ebf698a69a84074bf..07c82c90c1e08f933f91c1cba43e05a3ae2c21c6 100644 (file)
@@ -1710,12 +1710,14 @@ void CacheInitialize()
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index d729170caad50948348771376974155c34b7c0a3..d01c0c37c1580730cfcc0798f71e308742c2d8d1 100644 (file)
@@ -1710,12 +1710,14 @@ void CacheInitialize()
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index 8f4efeaa444d7f393edcb614c3a9c5aeb0a27e37..677df810e70b6e3f474af77858a7b798de9e5b74 100644 (file)
@@ -171,12 +171,14 @@ int ShowHelp()
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index bba416b8cea17fbe84b93b129b8f02a4fbb09b9e..6a1be2cf0f4038e9a1d0b81e54355aefbb4c8975 100644 (file)
@@ -171,12 +171,14 @@ int ShowHelp()
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index 6241b30c2c6c79b9a1a66ead328b40973f9c6c23..f154cd881065098a980fabf0182e4ae89f824bbe 100644 (file)
@@ -95,12 +95,14 @@ int ShowHelp()
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index dab395295001fc2d3473fbf4f6daec09554e04c3..978356932b7937195d5acecc51c4fe3308456c52 100644 (file)
@@ -95,12 +95,14 @@ int ShowHelp()
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index 82729b2f00ea5581b7c515c34e776d4cd7bef58a..b1dbd95ea09c8b98bf571ce5486342b706d13784 100644 (file)
@@ -355,12 +355,14 @@ bool Go(CommandLine &CmdL)
 
 int main(int argc, const char **argv)
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
        CommandLine::Args Args[] = {
                {'h',"help","help",0},
index 7aab8237a81d6e7aa9c7ad790681c8f65adf159a..5061ddd4a238e54a4b8e60730bc6684009349582 100644 (file)
@@ -355,12 +355,14 @@ bool Go(CommandLine &CmdL)
 
 int main(int argc, const char **argv)
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
        CommandLine::Args Args[] = {
                {'h',"help","help",0},
index 6c111736f08abd8482d97932f3c2a925dc0ba5a3..04791b5786f882f375dce477694bc46164b3024f 100644 (file)
@@ -2508,12 +2508,14 @@ void SigWinch(int)
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index dc4bf67e26f23cc400403255d2add864f3eebeaf..d3bca63a667d8915b2a9959926634bbf760d3423 100644 (file)
@@ -2507,12 +2507,14 @@ void SigWinch(int)
 
 int main(int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index 106f4bf66dd258a5385c5847c5425e100c0eee59..bec90aeaf3e58771ff95504f73aa0efcbbb6ecb3 100644 (file)
@@ -168,12 +168,14 @@ int ShowHelp()
 
 int main(unsigned int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index 63bb0afde17a51ed2c50b50e0d69798895e701f3..08fe77aeb9942fddbcb44e84afd1a996d4724763 100644 (file)
@@ -168,12 +168,14 @@ int ShowHelp()
 
 int main(unsigned int argc,const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index a5aaec797ee6da80896698ca4ca94629a9d2c3da..4afc2ea6cf952b55bb628e43e798a7a3ca7cca35 100644 (file)
@@ -905,12 +905,14 @@ bool Clean(CommandLine &CmdL)
 
 int main(int argc, const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    CommandLine::Args Args[] = {
       {'h',"help","help",0},
index 26e3b4ba96846ab07f4cc79a030b53a1c6bb765f..f6546aa7e414bf3732e5fd37f283c56667b1d59e 100644 (file)
@@ -197,12 +197,14 @@ bool CDROMMethod::Fetch(FetchItem *Itm)
 
 int main()
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
 
index d3799dee3f72bc29d80395f86454bd691c066dcf..48aa5ab084b2eb798469d7dd08f2020d2462d2ee 100644 (file)
@@ -90,12 +90,14 @@ bool CopyMethod::Fetch(FetchItem *Itm)
 
 int main()
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
 
index 9b264c9e4e7f5b30514e225cabfb906e366dd39e..5370f5c74a17570c95d0881b21d6c09697c09bbe 100644 (file)
@@ -93,12 +93,14 @@ bool FileMethod::Fetch(FetchItem *Itm)
 
 int main()
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
 
index 73697d10147e1b64e8023732cd7fa8143f0391f2..125907aa8084555f141737e292bcc5d6bc81d4ef 100644 (file)
@@ -1090,12 +1090,14 @@ bool FtpMethod::Fetch(FetchItem *Itm)
 
 int main(int argc,const char *argv[])
 { 
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
 
index d0081ab78608b4d4adae31e3ab101c4267079033..730a1bb71729680487ccfd4cda5aaadc2e29243d 100644 (file)
@@ -306,12 +306,14 @@ bool GPGVMethod::Fetch(FetchItem *Itm)
 
 int main()
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
    
index 0128266c3bd388df2112fd8c6dbefb7ddc80ee41..dfca4936b6e8dfb3f90eed6330c24d00660037e0 100644 (file)
@@ -166,12 +166,14 @@ bool GzipMethod::Fetch(FetchItem *Itm)
 
 int main(int argc, char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
 
index 578e4e2fa2f575c11ee48d5d5224ec4888f8c9f0..2cca8b8b7a154cec9e6d9fcf80e271805dacdcc3 100644 (file)
@@ -47,6 +47,7 @@ extern "C" {
 
 // Internet stuff
 #include <netdb.h>
+#include <arpa/inet.h>
 
 #include <CoreFoundation/CoreFoundation.h>
 #include <CoreServices/CoreServices.h>
@@ -59,7 +60,7 @@ extern "C" {
                                                                        /*}}}*/
 using namespace std;
 
-void CfrsError(CFReadStreamRef rs) {
+void CfrsError(const char *name, CFReadStreamRef rs) {
     CFStreamError se = CFReadStreamGetError(rs);
 
     if (se.domain == kCFStreamErrorDomainCustom) {
@@ -68,7 +69,7 @@ void CfrsError(CFReadStreamRef rs) {
     } else if (se.domain == kCFStreamErrorDomainMacOSStatus) {
         _error->Error("MacOSStatus: %ld", se.error);
     } else if (se.domain == kCFStreamErrorDomainNetDB) {
-        _error->Error("NetDB: %s", gai_strerror(se.error));
+        _error->Error("NetDB: %s %s", name, gai_strerror(se.error));
     } else if (se.domain == kCFStreamErrorDomainMach) {
         _error->Error("Mach: %ld", se.error);
     } else if (se.domain == kCFStreamErrorDomainHTTP) {
@@ -1116,7 +1117,21 @@ int HttpMethod::Loop()
 
       char *url = strdup(Queue->Uri.c_str());
     url:
-      CFStringRef sr = CFStringCreateWithCString(kCFAllocatorDefault, url, se);
+      URI uri = Queue->Uri;
+      std::string hs = uri.Host;
+
+      struct hostent *he = gethostbyname(hs.c_str());
+      if (he == NULL || he->h_addr_list[0] == NULL) {
+         _error->Error(hstrerror(h_errno));
+         Fail(true);
+         free(url);
+      }
+
+      uri.Host = inet_ntoa(* (struct in_addr *) he->h_addr_list[0]);
+
+      std::string urs = uri;
+
+      CFStringRef sr = CFStringCreateWithCString(kCFAllocatorDefault, urs.c_str(), se);
       CFURLRef ur = CFURLCreateWithString(kCFAllocatorDefault, sr, NULL);
       CFRelease(sr);
       CFHTTPMessageRef hm = CFHTTPMessageCreateRequest(kCFAllocatorDefault, CFSTR("GET"), ur, kCFHTTPVersion1_1);
@@ -1138,6 +1153,11 @@ int HttpMethod::Loop()
       }
 
       CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("User-Agent"), CFSTR("Telesphoreo APT-HTTP/1.0.98"));
+
+      sr = CFStringCreateWithCString(kCFAllocatorDefault, hs.c_str(), se);
+      CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("Host"), sr);
+      CFRelease(sr);
+
       CFReadStreamRef rs = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, hm);
       CFRelease(hm);
 
@@ -1148,8 +1168,6 @@ int HttpMethod::Loop()
       //CFReadStreamSetProperty(rs, kCFStreamPropertyHTTPShouldAutoredirect, kCFBooleanTrue);
       CFReadStreamSetProperty(rs, kCFStreamPropertyHTTPAttemptPersistentConnection, kCFBooleanTrue);
 
-      URI uri = Queue->Uri;
-
       FetchResult Res;
       CFIndex rd;
       UInt32 sc;
@@ -1157,10 +1175,10 @@ int HttpMethod::Loop()
       uint8_t data[10240];
       size_t offset = 0;
 
-      Status("Connecting to %s", uri.Host.c_str());
+      Status("Connecting to %s", hs.c_str());
 
       if (!CFReadStreamOpen(rs)) {
-         CfrsError(rs);
+         CfrsError("Open", rs);
          Fail(true);
          goto done;
       }
@@ -1168,7 +1186,7 @@ int HttpMethod::Loop()
       rd = CFReadStreamRead(rs, data, sizeof(data));
 
       if (rd == -1) {
-         CfrsError(rs);
+         CfrsError(uri.Host.c_str(), rs);
          Fail(true);
          goto done;
       }
@@ -1294,7 +1312,7 @@ int HttpMethod::Loop()
         URIStart(Res);
 
          read: if (rd == -1) {
-            CfrsError(rs);
+            CfrsError("rd", rs);
             Fail(true);
          } else if (rd == 0) {
            if (Res.Size == 0)
@@ -1348,12 +1366,14 @@ int HttpMethod::Loop()
 
 int main()
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");
 
index d2762c8f99fc137ac6561a92ef66cd9757ea640f..27454b97b8cd825a3d3608e6278d7c562833de7e 100644 (file)
@@ -43,6 +43,7 @@
 
 // Internet stuff
 #include <netdb.h>
+#include <arpa/inet.h>
 
 #include <CoreFoundation/CoreFoundation.h>
 #include <CoreServices/CoreServices.h>
@@ -55,7 +56,7 @@
                                                                        /*}}}*/
 using namespace std;
 
-void CfrsError(CFReadStreamRef rs) {
+void CfrsError(const char *name, CFReadStreamRef rs) {
     CFStreamError se = CFReadStreamGetError(rs);
 
     if (se.domain == kCFStreamErrorDomainCustom) {
@@ -64,7 +65,7 @@ void CfrsError(CFReadStreamRef rs) {
     } else if (se.domain == kCFStreamErrorDomainMacOSStatus) {
         _error->Error("MacOSStatus: %ld", se.error);
     } else if (se.domain == kCFStreamErrorDomainNetDB) {
-        _error->Error("NetDB: %s", gai_strerror(se.error));
+        _error->Error("NetDB: %s %s", name, gai_strerror(se.error));
     } else if (se.domain == kCFStreamErrorDomainMach) {
         _error->Error("Mach: %ld", se.error);
     } else if (se.domain == kCFStreamErrorDomainHTTP) {
@@ -1112,7 +1113,21 @@ int HttpMethod::Loop()
 
       char *url = strdup(Queue->Uri.c_str());
     url:
-      CFStringRef sr = CFStringCreateWithCString(kCFAllocatorDefault, url, se);
+      URI uri = Queue->Uri;
+      std::string hs = uri.Host;
+
+      struct hostent *he = gethostbyname(hs.c_str());
+      if (he == NULL || he->h_addr_list[0] == NULL) {
+         _error->Error(hstrerror(h_errno));
+         Fail(true);
+         free(url);
+      }
+
+      uri.Host = inet_ntoa(* (struct in_addr *) he->h_addr_list[0]);
+
+      std::string urs = uri;
+
+      CFStringRef sr = CFStringCreateWithCString(kCFAllocatorDefault, urs.c_str(), se);
       CFURLRef ur = CFURLCreateWithString(kCFAllocatorDefault, sr, NULL);
       CFRelease(sr);
       CFHTTPMessageRef hm = CFHTTPMessageCreateRequest(kCFAllocatorDefault, CFSTR("GET"), ur, kCFHTTPVersion1_1);
@@ -1134,6 +1149,11 @@ int HttpMethod::Loop()
       }
 
       CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("User-Agent"), CFSTR("Telesphoreo APT-HTTP/1.0.98"));
+
+      sr = CFStringCreateWithCString(kCFAllocatorDefault, hs.c_str(), se);
+      CFHTTPMessageSetHeaderFieldValue(hm, CFSTR("Host"), sr);
+      CFRelease(sr);
+
       CFReadStreamRef rs = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, hm);
       CFRelease(hm);
 
@@ -1144,8 +1164,6 @@ int HttpMethod::Loop()
       //CFReadStreamSetProperty(rs, kCFStreamPropertyHTTPShouldAutoredirect, kCFBooleanTrue);
       CFReadStreamSetProperty(rs, kCFStreamPropertyHTTPAttemptPersistentConnection, kCFBooleanTrue);
 
-      URI uri = Queue->Uri;
-
       FetchResult Res;
       CFIndex rd;
       UInt32 sc;
@@ -1153,10 +1171,10 @@ int HttpMethod::Loop()
       uint8_t data[10240];
       size_t offset = 0;
 
-      Status("Connecting to %s", uri.Host.c_str());
+      Status("Connecting to %s", hs.c_str());
 
       if (!CFReadStreamOpen(rs)) {
-         CfrsError(rs);
+         CfrsError("Open", rs);
          Fail(true);
          goto done;
       }
@@ -1164,7 +1182,7 @@ int HttpMethod::Loop()
       rd = CFReadStreamRead(rs, data, sizeof(data));
 
       if (rd == -1) {
-         CfrsError(rs);
+         CfrsError(uri.Host.c_str(), rs);
          Fail(true);
          goto done;
       }
@@ -1290,7 +1308,7 @@ int HttpMethod::Loop()
         URIStart(Res);
 
          read: if (rd == -1) {
-            CfrsError(rs);
+            CfrsError("rd", rs);
             Fail(true);
          } else if (rd == 0) {
            if (Res.Size == 0)
index e5fd0ea95e76902a77be61859acd95c18709371b..8171a9203cdcfd92f5ad2b2cd3e0cc5d80ac94d9 100644 (file)
@@ -257,12 +257,14 @@ bool RredMethod::Fetch(FetchItem *Itm)
 
 int main(int argc, char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    RredMethod Mth;
 
index 1a7475ab816ab8921989669763004bff4511fcfc..25fbae59260add5faeef87453f64ec168b040f41 100644 (file)
@@ -515,12 +515,14 @@ bool RSHMethod::Fetch(FetchItem *Itm)
 
 int main(int argc, const char *argv[])
 {
+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
    struct nlist nl[2];
    memset(nl, 0, sizeof(nl));
    nl[0].n_un.n_name = (char *) "_useMDNSResponder";
    nlist("/usr/lib/libc.dylib", nl);
    if (nl[0].n_type != N_UNDF)
        *(int *) nl[0].n_value = 0;
+#endif
 
    setlocale(LC_ALL, "");