- struct active_lock *lock = (struct active_lock *)userData;
-
- if (lock->ctx_timeout && !strcmp(name, "D:timeout")) {
- lock->ctx_timeout = 0;
- } else if (lock->ctx_owner_href && strstr(name, "href")) {
- lock->ctx_owner_href = 0;
- } else if (lock->ctx_owner && strstr(name, "owner")) {
- lock->ctx_owner = 0;
- } else if (lock->ctx_locktoken_href && !strcmp(name, "D:href")) {
- lock->ctx_locktoken_href = 0;
- } else if (lock->ctx_locktoken && !strcmp(name, "D:locktoken")) {
- lock->ctx_locktoken = 0;
- } else if (lock->ctx_activelock && !strcmp(name, "D:activelock")) {
- lock->ctx_activelock = 0;
+ struct active_lock *lock = (struct active_lock *)ctx->userData;
+
+ if (tag_closed && ctx->cdata) {
+ if (!strcmp(ctx->name, DAV_ACTIVELOCK_OWNER)) {
+ lock->owner = xmalloc(strlen(ctx->cdata) + 1);
+ strcpy(lock->owner, ctx->cdata);
+ } else if (!strcmp(ctx->name, DAV_ACTIVELOCK_TIMEOUT)) {
+ if (!strncmp(ctx->cdata, "Second-", 7))
+ lock->timeout =
+ strtol(ctx->cdata + 7, NULL, 10);
+ } else if (!strcmp(ctx->name, DAV_ACTIVELOCK_TOKEN)) {
+ if (!strncmp(ctx->cdata, "opaquelocktoken:", 16)) {
+ lock->token = xmalloc(strlen(ctx->cdata) - 15);
+ strcpy(lock->token, ctx->cdata + 16);
+ }
+ }