dav/sync.c

changeset 558
1a9e6a5c1e79
parent 557
90ad7324bbbc
child 559
ba54fc8abdf1
equal deleted inserted replaced
557:90ad7324bbbc 558:1a9e6a5c1e79
1085 char *etag = dav_get_string_property(res, "D:getetag"); 1085 char *etag = dav_get_string_property(res, "D:getetag");
1086 SYS_STAT s; 1086 SYS_STAT s;
1087 memset(&s, 0, sizeof(SYS_STAT)); 1087 memset(&s, 0, sizeof(SYS_STAT));
1088 1088
1089 char *blocksize_str = dav_get_string_property_ns(res, DAV_NS, "split"); 1089 char *blocksize_str = dav_get_string_property_ns(res, DAV_NS, "split");
1090 int64_t blocksize = 0; 1090 uint64_t blocksize = 0;
1091 DavBool issplit = FALSE; 1091 DavBool issplit = FALSE;
1092 if(blocksize_str) { 1092 if(blocksize_str) {
1093 if(!util_strtouint(blocksize_str, &blocksize)) { 1093 if(!util_strtouint(blocksize_str, &blocksize)) {
1094 fprintf(stderr, "Error: split property does not contain an integer.\n"); 1094 fprintf(stderr, "Error: split property does not contain an integer.\n");
1095 return 1; 1095 return 1;
3144 ucx_map_free(updated_parts_map); 3144 ucx_map_free(updated_parts_map);
3145 return NULL; 3145 return NULL;
3146 } 3146 }
3147 3147
3148 // set content-hash 3148 // set content-hash
3149 char content_hash[DAV_SHA256_DIGEST_LENGTH]; 3149 unsigned char content_hash[DAV_SHA256_DIGEST_LENGTH];
3150 dav_hash_final(sha, content_hash); 3150 dav_hash_final(sha, content_hash);
3151 sync_set_content_hash(res, content_hash); 3151 sync_set_content_hash(res, content_hash);
3152 local->hash = util_hexstr(content_hash, DAV_SHA256_DIGEST_LENGTH); 3152 local->hash = util_hexstr(content_hash, DAV_SHA256_DIGEST_LENGTH);
3153 3153
3154 // get etags from uploaded resources 3154 // get etags from uploaded resources
4583 return dav_get_string_property_ns(res, DAV_NS, "content-hash"); 4583 return dav_get_string_property_ns(res, DAV_NS, "content-hash");
4584 } 4584 }
4585 return NULL; 4585 return NULL;
4586 } 4586 }
4587 4587
4588 void sync_set_content_hash(DavResource *res, const char *hashdata) { 4588 void sync_set_content_hash(DavResource *res, const unsigned char *hashdata) {
4589 uint32_t flags = res->session->flags; 4589 uint32_t flags = res->session->flags;
4590 if((flags & DAV_SESSION_ENCRYPT_CONTENT) == DAV_SESSION_ENCRYPT_CONTENT) { 4590 if((flags & DAV_SESSION_ENCRYPT_CONTENT) == DAV_SESSION_ENCRYPT_CONTENT) {
4591 if(res->session->key) { 4591 if(res->session->key) {
4592 char *enc_hash = aes_encrypt(hashdata, DAV_SHA256_DIGEST_LENGTH, res->session->key); 4592 char *enc_hash = aes_encrypt((const char*)hashdata, DAV_SHA256_DIGEST_LENGTH, res->session->key);
4593 if(enc_hash) { 4593 if(enc_hash) {
4594 dav_set_string_property_ns(res, DAV_NS, "crypto-hash", enc_hash); 4594 dav_set_string_property_ns(res, DAV_NS, "crypto-hash", enc_hash);
4595 free(enc_hash); 4595 free(enc_hash);
4596 } 4596 }
4597 } 4597 }
4598 } else { 4598 } else {
4599 char *hex_hash = util_hexstr((const unsigned char*)hashdata, DAV_SHA256_DIGEST_LENGTH); 4599 char *hex_hash = util_hexstr(hashdata, DAV_SHA256_DIGEST_LENGTH);
4600 dav_set_string_property_ns(res, DAV_NS, "content-hash", hex_hash); 4600 dav_set_string_property_ns(res, DAV_NS, "content-hash", hex_hash);
4601 free(hex_hash); 4601 free(hex_hash);
4602 } 4602 }
4603 } 4603 }

mercurial