176 case CURLE_SSL_ISSUER_ERROR: sn->error = DAV_SSL_ERROR; break; |
176 case CURLE_SSL_ISSUER_ERROR: sn->error = DAV_SSL_ERROR; break; |
177 default: sn->error = DAV_ERROR; break; |
177 default: sn->error = DAV_ERROR; break; |
178 } |
178 } |
179 } |
179 } |
180 if(c != CURLE_OK) { |
180 if(c != CURLE_OK) { |
181 sn->errorstr = curl_easy_strerror(c); |
181 dav_session_set_errstr(sn, curl_easy_strerror(c)); |
182 } else { |
182 } else { |
183 sn->errorstr = NULL; |
183 dav_session_set_errstr(sn, NULL); |
184 } |
184 } |
|
185 } |
|
186 |
|
187 void dav_session_set_errstr(DavSession *sn, const char *str) { |
|
188 if(sn->errorstr) { |
|
189 dav_session_free(sn, sn->errorstr); |
|
190 } |
|
191 char *errstr = NULL; |
|
192 if(str) { |
|
193 errstr = dav_session_strdup(sn, str); |
|
194 } |
|
195 sn->errorstr = errstr; |
185 } |
196 } |
186 |
197 |
187 void dav_session_destroy(DavSession *sn) { |
198 void dav_session_destroy(DavSession *sn) { |
188 // remove session from context |
199 // remove session from context |
189 UcxList *sessions = sn->context->sessions; |
200 UcxList *sessions = sn->context->sessions; |
215 |
226 |
216 void dav_session_free(DavSession *sn, void *ptr) { |
227 void dav_session_free(DavSession *sn, void *ptr) { |
217 ucx_mempool_free(sn->mp, ptr); |
228 ucx_mempool_free(sn->mp, ptr); |
218 } |
229 } |
219 |
230 |
220 char* dav_session_strdup(DavSession *sn, char *str) { |
231 char* dav_session_strdup(DavSession *sn, const char *str) { |
221 return sstrdup_a(sn->mp->allocator, sstr(str)).ptr; |
232 return sstrdup_a(sn->mp->allocator, sstr((char*)str)).ptr; |
222 } |
233 } |
223 |
234 |
224 |
235 |
225 char* dav_session_create_plain_href(DavSession *sn, char *path) { |
236 char* dav_session_create_plain_href(DavSession *sn, char *path) { |
226 if(!DAV_ENCRYPT_NAME(sn)) { |
237 if(!DAV_ENCRYPT_NAME(sn)) { |