Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ef63152 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Support IPv6->IPv4 fallback in HTTP streaming.

Bug: 4068057
Change-Id: I425f65a99eb9e0986d9e9c0e264c3c8f61fcfdbd
parent 7528e58d
Loading
Loading
Loading
Loading
+24 −14
Original line number Diff line number Diff line
@@ -150,31 +150,41 @@ status_t HTTPStream::connect(const char *server, int port) {
    }

    CHECK_EQ(mSocket, -1);
    mSocket = socket(ai[0].ai_family, ai[0].ai_socktype, ai[0].ai_protocol);

    mState = CONNECTING;
    status_t res = -1;
    struct addrinfo *tmp;
    for (tmp = ai; tmp; tmp = tmp->ai_next) {
        mSocket = socket(tmp->ai_family, tmp->ai_socktype, tmp->ai_protocol);
        if (mSocket < 0) {
        freeaddrinfo(ai);
        return UNKNOWN_ERROR;
            continue;
        }

    setReceiveTimeout(30);  // Time out reads after 30 secs by default

    mState = CONNECTING;
        setReceiveTimeout(30);  // Time out reads after 30 secs by default.

        int s = mSocket;

        mLock.unlock();

    status_t res = MyConnect(s, ai[0].ai_addr, ai[0].ai_addrlen);

    freeaddrinfo(ai);
        res = MyConnect(s, tmp->ai_addr, tmp->ai_addrlen);

        mLock.lock();

        if (mState != CONNECTING) {
            close(s);
            freeaddrinfo(ai);
            return UNKNOWN_ERROR;
        }

        if (res == OK) {
            break;
        }

        close(s);
    }

    freeaddrinfo(ai);

    if (res != OK) {
        close(mSocket);
        mSocket = -1;