Hi all,

I'm seeing the need to follow redirects in my application and so am looking at the related libcurl options. This has generated some questions on libcurl behavior. I'm interested in not only following the redirects (automagically or manually) but being able to log/debug out where the redirects went.


https://curl.haxx.se/libcurl/c/CURLINFO_REDIRECT_URL.html
<<
DESCRIPTION

Pass a pointer to a char pointer to receive the URL a redirect would take you to if you would enable CURLOPT_FOLLOWLOCATION. This can come very handy if you think using the built-in libcurl redirect logic isn't good enough for you but you would still prefer to avoid implementing all the magic of figuring out the new URL.
>>

I take it this is only valid if the operation got a redirect (HTTP 3xx)?
What if the operation was not redirected - do I need to check CURLINFO_RESPONSE_CODE for 3xx first or CURLINFO_REDIRECT_COUNT? Or does it cleanly return NULL in the non-redirect case? (Can I use this option to simply check for a redirect by testing for NULL or non-NULL? ) If CURLOPT_FOLLOWLOCATION is in effect, does the pointer still get set if a redirect occurred or set NULL if no redirect?? What is the persistence of the memory pointed to? (From other curl_easy_getinfo options I see this is memory managed by libcurl.) Is it safe to say that the returned pointer will remain valid until the next transfer operation or cleanup on the handle? No guarantee beyond that?



https://curl.haxx.se/libcurl/c/CURLINFO_EFFECTIVE_URL.html
<<
DESCRIPTION

Pass in a pointer to a char pointer and get the last used effective URL.

In cases when you've asked libcurl to follow redirects, it may very well not be the same value you set with CURLOPT_URL.

The urlp pointer will be NULL or pointing to private memory you MUST NOT free - it gets freed when you call curl_easy_cleanup on the corresponding CURL handle.
>>

Can the effective URL get changed from the given URL when there is no redirect? Or does libcurl possibly 'cleanup' the given URL by doing things like unescaping, path squashing or other transformation? (CURLINFO_EFFECTIVE_URL != CURLOPT_URL)

Once I understand things, I'll try to make some suggestions for the documentation pages.

Cheers!
Rich
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:  https://curl.haxx.se/mail/etiquette.html

Reply via email to