+ char * psz_new_loc;
+
+ /* This does not follow RFC 2068, but yet if the url is not absolute,
+ * handle it as everyone does. */
+ if( p[0] == '/' )
+ {
+ const char *psz_http_ext = p_sys->b_ssl ? "s" : "" ;
+
+ if( p_sys->url.i_port == ( p_sys->b_ssl ? 443 : 80 ) )
+ {
+ asprintf(&psz_new_loc, "http%s://%s%s", psz_http_ext,
+ p_sys->url.psz_host, p);
+ }
+ else
+ {
+ asprintf(&psz_new_loc, "http%s://%s:%d%s", psz_http_ext,
+ p_sys->url.psz_host, p_sys->url.i_port, p);
+ }
+ }
+ else
+ {
+ psz_new_loc = strdup( p );
+ }
+