On Fri, Mar 6, 2020 at 6:08 PM Robert Brose via curl-library <curl-library@cool.haxx.se> wrote: > > I'm having trouble figuring out what I'm doing wrong with an > implementation of libcurl that is working for everything else I can > throw at it. I've done a lot of searching stack overflow, etc and > haven't figured out the issue yet. > Using the latest libcurl I'm getting the above error back immediately > with no data sent. It looks fine as far as I can tell and if I put the > same URL into command line curl it works fine. > > https://r3---sn-vgqs7nlk.googlevideo.com/videoplayback?expire=1583550131&ei=U7piXujKIseCir4PhKec-Aw&ip=1.1.1.1&id=o-AHAFYbXI8YRoD0acpA-MVWR0l6dylcQoX4c-r7Jx4vMg&itag=248&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&source=youtube&requiressl=yes&mm=31%2C26&mn=sn-vgqs7nlk%2Csn-qxoedn7d&ms=au%2Conr&mv=m&mvi=2&pl=20&initcwndbps=805000&vprv=1&mime=video%2Fwebm&gir=yes&clen=84511680&dur=357.123&lmt=1583350521559494&mt=1583528433&fvip=3&keepalive=yes&fexp=23842630&c=WEB&txp=5431432&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=ADKhkGMwRQIgCzr9srMO-3hlIOxxHI3EhMcB63reuEgfYcupN8315joCIQC315T8NyWNZv0oTedYBMepYi3ParbWUYp1Rgv_trMAsA%3D%3D&lsparams=mm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=ABSNjpQwRQIhAKo-wN50dUGo82aZ83P1PeleKiM_Whxp4HGrSd5w37hWAiAhVmYKbyqzmUGspMejmVGLWwbet8j3Z2nv8shJ3bF4Gg%3D%3D&ratebypass=yes > > It's a GET so I'm just using this to set it up: > > curl_easy_setopt(m_cURLFile->handle.curl, CURLOPT_URL, > JRStringUTF8(m_fnURL.GetFilename()).GetString()); > > The JRStringUTF8(m_fnURL.GetFilename()).GetString() returns a pointer to > the null terminated c string exactly as seen above. > All of the rest of the curl setup is precisely how I'm doing it for > every other GET request. > > I run it through URL validators and it's fine. > Is there some sort of maximum URL length?
If curl is not making a copy of JRStringUTF8, then the string could be going away before the command completes. Maybe you can add a first class temporary object that holds the string. Then use it like: char* temp = new char [...]; copy_string(temp, ...); // copy JRStringUTF8 curl_easy_setopt(m_cURLFile->handle.curl, CURLOPT_URL, temp); delete[] temp; The code above tries to rule out early destruction of the string, but it is just a guess. It would probably be helpful if you could provide more context. Is the code available on GitHub? Jeff ------------------------------------------------------------------- Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html