Archived Forum Post

Index of archived forum posts

Question:

web request fails after setting preferIpv6 to true

Oct 07 '16 at 19:13

Hi

I am using chilkat v9.5.0.51 Mono on Mac, Xamarin iOS & Android. After setting preferIpv6 to true on my Http object, some servers fail to be requested, for instance:

http://nominatim.openstreetmap.org/search?q=sabah&format=xml&limit=20

https://maps.googleapis.com/maps/api/staticmap?center=34.2065687282483,-117.859450371377&zoom=16&size=638x667&sensor=true&format=png&maptype=hybrid

If preferIpv6 is false, these requests work fine. Is it a server issue? Can I fix it on the client side?

Thanks Guillaume


Answer

Updating to Chilkat v9.5.0.58 should fix the problem. I just tested it, and it worked fine.


Answer

Make sure your ISP supports IPv6. Also make sure your computer is capable of using IPv6. For me, my normal work environment does not have IPv6 capability, which means to test I must run on some remote server (web hosting account, etc.).

If I run on my local computer where IPv6 is not possible, then I see only IPv4 addresses w/ verbose logging turned on, and therefore the connection happens over IPv4 even if PreferIpv6 is true.

If I run on a web server where IPv6 is possible, then everything works (for me). For example, I just tested the following Perl script:

use lib qw(./chilkat/myPerl/share/perl5/); 
use chilkat();

$http = new chilkat::CkHttp();

# Any string unlocks the component for the 1st 30-days. $success = $http->UnlockComponent("Anything for 30-day trial"); if ($success != 1) { print $http->lastErrorText() . "\r\n"; exit; }

$http->put_VerboseLogging(1);

$http->put_PreferIpv6(1);

$response = $http->quickGetStr("http://nominatim.openstreetmap.org/search?q=sabah&format=xml&limit=20"); if ($http->get_LastMethodSuccess() != 1) { print $http->lastErrorText() . "\r\n"; exit; }

print $response . "\r\n"; print $http->lastErrorText() . "\r\n";

The LastErrorText shows the IPv6 address and that it was used for the connection:
ChilkatLog:
  QuickGetStr(271ms):
    DllDate: Oct  7 2016
    ChilkatVersion: 9.5.0.61
    UnlockPrefix: Anything for 30-day trial
    Architecture: Little Endian; 64-bit
    Language: Linux Perl
    VerboseLogging: 1
    url: http://nominatim.openstreetmap.org/search?q=sabah&format=xml&limit=20
    httpRequestStr(271ms):
      a_quickReq(271ms):
        quickHttpRequest(271ms):
          httpVerb: GET
          url: http://nominatim.openstreetmap.org/search?q=sabah&format=xml&limit=20
          openHttpConnection(110ms):
            Opening connection directly to HTTP server.
            httpHostname: nominatim.openstreetmap.org
            httpPort: 80
            ssl: 0
            bUsingHttpProxy: 0
            httpProxyAuthMethod: 
            socket2Connect(110ms):
              connect2(110ms):
                hostname: nominatim.openstreetmap.org
                port: 80
                ssl: 0
                connectSocket(110ms):
                  domainOrIpAddress: nominatim.openstreetmap.org
                  port: 80
                  connectTimeoutMs: 30000
                  connect_ipv6_or_ipv4(110ms):
                    Single-threaded domain to IP address resolution
                    The application prefers IPv6 over IPv4. Looking for IPv6 addresses first...
                    connecting to IPV6 address...
                    ipAddress: 2001:630:12:500:ec4:7aff:fe66:96d2
                    createSocket:
                      Setting SO_SNDBUF size
                      sendBufSize: 262144
                      Setting SO_RCVBUF size
                      recvBufSize: 4194304
                    --createSocket
                    connect(110ms):
                      Waiting for the connect to complete...
                      myIP: 2607:f0d0:1103:106:22::12c
                      myPort: 36184
                      socket connect successful.
                    --connect
                  --connect_ipv6_or_ipv4
                --connectSocket
              --connect2
            --socket2Connect
            socketOptions:
              SO_SNDBUF: 249856
              SO_RCVBUF: 249856
              TCP_NODELAY: 0
              SO_KEEPALIVE: 1
            --socketOptions
            HTTP connection succeeded.
          --openHttpConnection
          buildQuickRequest:
            genStartLine:
              Adding params to the start line...
              startLine: GET /search?q=sabah&format=xml&limit=20 HTTP/1.1
            --genStartLine
            getMimeHeaderHttp:
              headerField: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
              headerField: Connection: keep-alive
              headerField: User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
              headerField: Accept-Language: en-us,en;q=0.5
            --getMimeHeaderHttp
            addCookies:
              Not auto-adding cookies.
              sendCookies: 1
              cookieDir: 
            --addCookies
          --buildQuickRequest
          quickRequestHeader:
            requestHeader: GET /search?q=sabah&format=xml&limit=20 HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip
Host: nominatim.openstreetmap.org
          --quickRequestHeader
          sendRequestHeader:
            sendHeaderElapsedMs: 0
          --sendRequestHeader
          readResponseHeader(161ms):
            responseHeader: HTTP/1.1 200 OK
Date: Fri, 07 Oct 2016 23:06:46 GMT
Server: Apache/2.4.18 (Ubuntu)
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: OPTIONS,GET
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1544
Connection: close
Content-Type: text/xml; charset=UTF-8

      --readResponseHeader
      statusCode: 200
      statusText: OK
      readResponseBody:
        bDiscard: 0
        contentLength: 1544
        numBytesToReceive: 1544
      --readResponseBody
      checkCloseConnection:
        Response includes connection:close header (or proxy-connection:close header)
        cleanCloseHttpConnection:
          terminateConnection:
            TCP connection cleanly closed by peer.
            Cleanly terminated TCP connection.
          --terminateConnection
        --cleanCloseHttpConnection
      --checkCloseConnection
    --quickHttpRequest
    checkUngzipResponse:
      decompressing GZIP response...
    --checkUngzipResponse
  --a_quickReq
  convertResponseBodyToUtf8:
    responseBodySize: 4458
    Logging up to 2048 bytes of the response in quoted-printable format:
    responseQP: [<?xml version=3D"1.0" encoding=3D"UTF-8" ?>=0A<searchresults timestamp=3D'Fri, 07 Oct 16 23:06:46 +0000' attribution=3D'Data =C2=A9 OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring=3D'sabah' polygon=3D'false' exclude_place_ids=3D'159718645,26212864,25973053,12738836,12751453,24999386,55659910,124182295,124182291,18302792,25739459,143459436' more_url=3D'http://nominatim.openstreetmap.org/search.php?format=3Dxml&amp;exclude_place_ids=3D159718645,26212864,25973053,12738836,12751453,24999386,55659910,124182295,124182291,18302792,25739459,143459436&amp;accept-language=3Den-us,en;q=3D0.5&amp;q=3Dsabah'>=0A<place place_id=3D'159718645' osm_type=3D'relation' osm_id=3D'3879783' place_rank=3D'8' boundingbox=3D"4.0969619,7.5111989,115.32751,119.4390876" lat=3D'5.595237' lon=3D'117.0051734' display_name=3D'Sabah, Malaysia' class=3D'boundary' type=3D'administrative' importance=3D'0.699443639274' icon=3D'http://nominatim.openstreetmap.org/images/mapicons/poi_boundary_administrative.p.20.png'/><place place_id=3D'26212864' osm_type=3D'node' osm_id=3D'2489253500' place_rank=3D'19' boundingbox=3D"35.289185,35.329185,43.348372,43.388372" lat=3D'35.309185' lon=3D'43.368372' display_name=3D'Sabah, Saladin, Iraq' class=3D'place' type=3D'village' importance=3D'0.375' icon=3D'http://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png'/><place place_id=3D'25973053' osm_type=3D'node' osm_id=3D'2487904956' place_rank=3D'19' boundingbox=3D"30.949167,30.989167,47.121389,47.161389" lat=3D'30.969167' lon=3D'47.141389' display_name=3D'Sabah, Basra, Iraq' class=3D'place' type=3D'village' importance=3D'0.375' icon=3D'http://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png'/><place place_id=3D'12738836' osm_type=3D'node' osm_id=3D'1223194777' place_rank=3D'19' boundingbox=3D"14.053781,14.093781,45.4263958,45.4663958" lat=3D'14.073781' lon=3D'45.4463958' display_name=3D'Sabah, Al Bayda&#039; Governorate, Yemen' class=3D'place' type=3D'village' importance=3D'0.375' ic=

on=3D'http://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png'/><place place_id="3D'12751453'" osm_type="3D'node'" os]="" responsecontenttype:="" text="" xml;="" charset="UTF-8" responsehdrcharset:="" utf-8="" --convertresponsebodytoutf8="" --httprequeststr="" success.="" --quickgetstr="" --chilkatlog="" <="" pre="">