142 sstr_t url = sstr(base_url); |
142 sstr_t url = sstr(base_url); |
143 if(url.length == 0) { |
143 if(url.length == 0) { |
144 return NULL; |
144 return NULL; |
145 } |
145 } |
146 DavSession *sn = malloc(sizeof(DavSession)); |
146 DavSession *sn = malloc(sizeof(DavSession)); |
|
147 sn->mp = ucx_mempool_new(1024); |
147 sn->key = NULL; |
148 sn->key = NULL; |
148 sn->errorstr = NULL; |
149 sn->errorstr = NULL; |
149 sn->error = DAV_OK; |
150 sn->error = DAV_OK; |
150 sn->flags = 0; |
151 sn->flags = 0; |
151 if(url.ptr[url.length - 1] == '/') { |
152 if(url.ptr[url.length - 1] == '/') { |
152 sn->base_url = strdup(base_url); // TODO: mempool |
153 sstr_t url = sstrdup_a(sn->mp->allocator, sstr(base_url)); |
|
154 sn->base_url = url.ptr; |
153 } else { |
155 } else { |
154 char *url_str = malloc(url.length + 2); |
156 char *url_str = malloc(url.length + 2); |
155 memcpy(url_str, base_url, url.length); |
157 memcpy(url_str, base_url, url.length); |
156 url_str[url.length] = '/'; |
158 url_str[url.length] = '/'; |
157 url_str[url.length + 1] = '\0'; |
159 url_str[url.length + 1] = '\0'; |
159 } |
161 } |
160 sn->context = context; |
162 sn->context = context; |
161 sn->handle = curl_easy_init(); |
163 sn->handle = curl_easy_init(); |
162 //curl_easy_setopt(sn->handle, CURLOPT_VERBOSE, 1L); |
164 //curl_easy_setopt(sn->handle, CURLOPT_VERBOSE, 1L); |
163 //curl_easy_setopt(sn->handle, CURLOPT_STDERR, stderr); |
165 //curl_easy_setopt(sn->handle, CURLOPT_STDERR, stderr); |
|
166 curl_easy_setopt(sn->handle, CURLOPT_FOLLOWLOCATION, 1L); |
164 |
167 |
165 // set proxy |
168 // set proxy |
166 DavProxy *proxy = sstrprefix(url, S("https")) ? context->https_proxy |
169 DavProxy *proxy = sstrprefix(url, S("https")) ? context->https_proxy |
167 : context->http_proxy; |
170 : context->http_proxy; |
168 |
171 |