157
157
if (leaving_state == TIMEOUT)
159
if (strcmp(cdata->data, "Infinite") == 0)
159
if (strcasecmp(cdata->data, "Infinite") == 0)
160
160
lock_ctx->lock->expiration_date = 0;
161
else if (strncasecmp(cdata->data, "Second-", 7) == 0)
164
SVN_ERR(svn_cstring_atoui(&n, cdata->data+7));
166
lock_ctx->lock->expiration_date = apr_time_now() +
167
apr_time_from_sec(n);
162
SVN_ERR(svn_time_from_cstring(&lock_ctx->lock->creation_date,
163
cdata->data, lock_ctx->pool));
170
return svn_error_createf(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL,
171
_("Invalid LOCK timeout value '%s'"),
165
174
else if (leaving_state == HREF)
362
371
svn_ra_serf__get_lock(svn_ra_session_t *ra_session,
363
372
svn_lock_t **lock,
364
373
const char *path,
374
apr_pool_t *result_pool)
367
376
svn_ra_serf__session_t *session = ra_session->priv;
368
377
svn_ra_serf__handler_t *handler;
369
378
svn_ra_serf__xml_context_t *xmlctx;
379
apr_pool_t *scratch_pool = svn_pool_create(result_pool);
370
380
lock_info_t *lock_ctx;
371
381
const char *req_url;
372
382
svn_error_t *err;
374
req_url = svn_path_url_add_component2(session->session_url.path, path, pool);
376
lock_ctx = apr_pcalloc(pool, sizeof(*lock_ctx));
378
lock_ctx->pool = pool;
384
req_url = svn_path_url_add_component2(session->session_url.path, path,
387
lock_ctx = apr_pcalloc(scratch_pool, sizeof(*lock_ctx));
388
lock_ctx->pool = result_pool;
379
389
lock_ctx->path = req_url;
380
lock_ctx->lock = svn_lock_create(pool);
381
lock_ctx->lock->path = apr_pstrdup(pool, path); /* be sure */
390
lock_ctx->lock = svn_lock_create(result_pool);
391
lock_ctx->lock->path = apr_pstrdup(result_pool, path);
383
393
xmlctx = svn_ra_serf__xml_context_create(locks_ttable,
384
394
NULL, locks_closed, NULL,
387
handler = svn_ra_serf__create_expat_handler(xmlctx, pool);
397
handler = svn_ra_serf__create_expat_handler(xmlctx, scratch_pool);
389
399
handler->method = "PROPFIND";
390
400
handler->path = req_url;
406
416
lock_ctx->handler = handler;
408
err = svn_ra_serf__context_run_one(handler, pool);
418
err = svn_ra_serf__context_run_one(handler, scratch_pool);
409
419
err = determine_error(handler, err);
411
421
if (handler->sline.code == 404)
575
590
SVN_ERR(svn_ra_serf__get_lock(ra_session, &existing_lock, path,
577
token = existing_lock->token;
592
token = existing_lock ? existing_lock->token : NULL;
580
595
err = svn_error_createf(SVN_ERR_RA_NOT_LOCKED, NULL,