Lines Matching refs:dobj

51  *   entity name (dobj->name) [length is in disk_cache_info_t->name_len]
75 disk_cache_object_t *dobj, const char *name)
77 if (!dobj->hashfile) {
78 dobj->hashfile = ap_cache_generate_name(p, conf->dirlevels,
82 if (dobj->prefix) {
83 return apr_pstrcat(p, dobj->prefix, CACHE_VDIR_SUFFIX "/",
84 dobj->hashfile, CACHE_HEADER_SUFFIX, NULL);
87 return apr_pstrcat(p, conf->cache_root, "/", dobj->hashfile,
93 disk_cache_object_t *dobj, const char *name)
95 if (!dobj->hashfile) {
96 dobj->hashfile = ap_cache_generate_name(p, conf->dirlevels,
100 if (dobj->prefix) {
101 return apr_pstrcat(p, dobj->prefix, CACHE_VDIR_SUFFIX "/",
102 dobj->hashfile, CACHE_DATA_SUFFIX, NULL);
105 return apr_pstrcat(p, conf->cache_root, "/", dobj->hashfile,
218 disk_cache_object_t *dobj, request_rec *r)
226 rv = apr_file_read_full(fd, &dobj->disk_info, len, &len);
232 info->status = dobj->disk_info.status;
233 info->date = dobj->disk_info.date;
234 info->expire = dobj->disk_info.expire;
235 info->request_time = dobj->disk_info.request_time;
236 info->response_time = dobj->disk_info.response_time;
238 memcpy(&info->control, &dobj->disk_info.control, sizeof(cache_control_t));
242 urlbuff = apr_palloc(r->pool, dobj->disk_info.name_len + 1);
243 len = dobj->disk_info.name_len;
248 urlbuff[dobj->disk_info.name_len] = '\0';
252 if (strcmp(urlbuff, dobj->name) != 0) {
344 disk_cache_object_t *dobj;
377 obj->vobj = dobj = apr_pcalloc(r->pool, sizeof(*dobj));
381 dobj->name = obj->key;
382 dobj->prefix = NULL;
384 dobj->root = apr_pstrmemdup(r->pool, conf->cache_root, conf->cache_root_len);
385 dobj->root_len = conf->cache_root_len;
390 file_cache_create(conf, &dobj->hdrs, pool);
391 file_cache_create(conf, &dobj->vary, pool);
392 file_cache_create(conf, &dobj->data, pool);
394 dobj->data.file = data_file(r->pool, conf, dobj, key);
395 dobj->hdrs.file = header_file(r->pool, conf, dobj, key);
396 dobj->vary.file = header_file(r->pool, conf, dobj, key);
398 dobj->disk_info.header_only = r->header_only;
418 disk_cache_object_t *dobj;
436 dobj = apr_pcalloc(r->pool, sizeof(disk_cache_object_t));
441 dobj->prefix = NULL;
444 dobj->root = apr_pstrmemdup(r->pool, conf->cache_root, conf->cache_root_len);
445 dobj->root_len = conf->cache_root_len;
447 dobj->vary.file = header_file(r->pool, conf, dobj, key);
449 rc = apr_file_open(&dobj->vary.fd, dobj->vary.file, flags, 0, r->pool);
456 apr_file_read_full(dobj->vary.fd, &format, len, &len);
463 apr_file_read_full(dobj->vary.fd, &expire, len, &len);
466 rc = read_array(r, varray, dobj->vary.fd);
470 dobj->vary.file);
471 apr_file_close(dobj->vary.fd);
474 apr_file_close(dobj->vary.fd);
478 dobj->hashfile = NULL;
479 dobj->prefix = dobj->vary.file;
480 dobj->hdrs.file = header_file(r->pool, conf, dobj, nkey);
483 rc = apr_file_open(&dobj->hdrs.fd, dobj->hdrs.file, flags, 0, r->pool);
491 dobj->vary.file, format);
492 apr_file_close(dobj->vary.fd);
499 dobj->hdrs.fd = dobj->vary.fd;
500 dobj->vary.fd = NULL;
501 dobj->hdrs.file = dobj->vary.file;
506 apr_file_seek(dobj->hdrs.fd, APR_SET, &offset);
511 dobj->key = nkey;
512 dobj->name = key;
517 file_cache_create(conf, &dobj->hdrs, pool);
518 file_cache_create(conf, &dobj->vary, pool);
519 file_cache_create(conf, &dobj->data, pool);
521 dobj->data.file = data_file(r->pool, conf, dobj, nkey);
524 rc = file_cache_recall_mydata(dobj->hdrs.fd, info, dobj, r);
527 "Cannot read header file %s", dobj->hdrs.file);
528 apr_file_close(dobj->hdrs.fd);
534 if (dobj->disk_info.header_only && !r->header_only) {
537 dobj->hdrs.file);
538 apr_file_close(dobj->hdrs.fd);
543 if (dobj->disk_info.has_body) {
552 rc = apr_file_open(&dobj->data.fd, dobj->data.file, flags, 0, r->pool);
555 "Cannot open data file %s", dobj->data.file);
556 apr_file_close(dobj->hdrs.fd);
561 dobj->data.fd);
563 dobj->file_size = finfo.size;
567 if (dobj->disk_info.inode == finfo.inode &&
568 dobj->disk_info.device == finfo.device) {
572 "Recalled cached URL info header %s", dobj->name);
576 obj->vobj = dobj;
586 obj->vobj = dobj;
594 dobj->name);
596 apr_file_close(dobj->hdrs.fd);
614 disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj;
616 close_disk_cache_fd(&(dobj->hdrs));
617 close_disk_cache_fd(&(dobj->vary));
618 close_disk_cache_fd(&(dobj->data));
628 disk_cache_object_t *dobj;
631 dobj = (disk_cache_object_t *) h->cache_obj->vobj;
632 if (!dobj) {
637 if (dobj->hdrs.file) {
639 "Deleting %s from cache.", dobj->hdrs.file);
641 rc = apr_file_remove(dobj->hdrs.file, r->pool);
648 dobj->hdrs.file);
654 if (dobj->data.file) {
656 "Deleting %s from cache.", dobj->data.file);
658 rc = apr_file_remove(dobj->data.file, r->pool);
665 dobj->data.file);
671 if (dobj->root) {
674 str_to_copy = dobj->hdrs.file ? dobj->hdrs.file : dobj->data.file;
694 for (q = dir + dobj->root_len; *q ; ) {
866 disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj;
869 if (!dobj->hdrs.fd) {
871 "recalling headers; but no header fd for %s", dobj->name);
879 read_table(h, r, h->resp_hdrs, dobj->hdrs.fd);
880 read_table(h, r, h->req_hdrs, dobj->hdrs.fd);
882 apr_file_close(dobj->hdrs.fd);
885 "Recalled headers for URL %s", dobj->name);
891 disk_cache_object_t *dobj = (disk_cache_object_t*) h->cache_obj->vobj;
893 if (dobj->data.fd) {
894 apr_brigade_insert_file(bb, dobj->data.fd, 0, dobj->file_size, p);
934 disk_cache_object_t *dobj = (disk_cache_object_t*) h->cache_obj->vobj;
939 dobj->headers_out = ap_cache_cacheable_headers_out(r);
943 dobj->headers_in = ap_cache_cacheable_headers_in(r);
947 dobj->disk_info.header_only = 1;
959 disk_cache_object_t *dobj = (disk_cache_object_t*) h->cache_obj->vobj;
966 if (dobj->headers_out) {
969 tmp = apr_table_get(dobj->headers_out, "Vary");
979 if (dobj->prefix) {
980 dobj->hdrs.file = dobj->prefix;
981 dobj->prefix = NULL;
984 rv = mkdir_structure(conf, dobj->hdrs.file, r->pool);
986 rv = apr_file_mktemp(&dobj->vary.tempfd, dobj->vary.tempfile,
988 dobj->vary.pool);
993 dobj->vary.tempfile);
998 rv = apr_file_write_full(dobj->vary.tempfd, &format, amt, NULL);
1002 dobj->vary.tempfile);
1003 apr_file_close(dobj->vary.tempfd);
1004 apr_pool_destroy(dobj->vary.pool);
1009 rv = apr_file_write_full(dobj->vary.tempfd,
1014 dobj->vary.tempfile);
1015 apr_file_close(dobj->vary.tempfd);
1016 apr_pool_destroy(dobj->vary.pool);
1023 store_array(dobj->vary.tempfd, varray);
1025 rv = apr_file_close(dobj->vary.tempfd);
1029 dobj->vary.tempfile);
1030 apr_pool_destroy(dobj->vary.pool);
1034 tmp = regen_key(r->pool, dobj->headers_in, varray, dobj->name);
1035 dobj->prefix = dobj->hdrs.file;
1036 dobj->hashfile = NULL;
1037 dobj->data.file = data_file(r->pool, conf, dobj, tmp);
1038 dobj->hdrs.file = header_file(r->pool, conf, dobj, tmp);
1043 rv = apr_file_mktemp(&dobj->hdrs.tempfd, dobj->hdrs.tempfile,
1045 APR_BUFFERED | APR_EXCL, dobj->hdrs.pool);
1050 dobj->hdrs.tempfile);
1057 disk_info.entity_version = dobj->disk_info.entity_version++;
1061 disk_info.inode = dobj->disk_info.inode;
1062 disk_info.device = dobj->disk_info.device;
1063 disk_info.has_body = dobj->disk_info.has_body;
1064 disk_info.header_only = dobj->disk_info.header_only;
1066 disk_info.name_len = strlen(dobj->name);
1072 iov[1].iov_base = (void*)dobj->name;
1075 rv = apr_file_writev_full(dobj->hdrs.tempfd, (const struct iovec *) &iov,
1080 dobj->hdrs.tempfile);
1081 apr_file_close(dobj->hdrs.tempfd);
1082 apr_pool_destroy(dobj->hdrs.pool);
1086 if (dobj->headers_out) {
1087 rv = store_table(dobj->hdrs.tempfd, dobj->headers_out);
1091 dobj->hdrs.tempfile);
1092 apr_file_close(dobj->hdrs.tempfd);
1093 apr_pool_destroy(dobj->hdrs.pool);
1100 if (dobj->headers_in) {
1101 rv = store_table(dobj->hdrs.tempfd, dobj->headers_in);
1105 dobj->hdrs.tempfile);
1106 apr_file_close(dobj->hdrs.tempfd);
1107 apr_pool_destroy(dobj->hdrs.pool);
1112 rv = apr_file_close(dobj->hdrs.tempfd); /* flush and close */
1116 dobj->hdrs.tempfile);
1117 apr_pool_destroy(dobj->hdrs.pool);
1129 disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj;
1133 if (!dobj->offset) {
1134 dobj->offset = dconf->readsize;
1136 if (!dobj->timeout && dconf->readtime) {
1137 dobj->timeout = apr_time_now() + dconf->readtime;
1140 if (dobj->offset) {
1141 apr_brigade_partition(in, dobj->offset, &e);
1151 if (dobj->done || !dobj->data.pool) {
1160 dobj->done = 1;
1189 apr_pool_destroy(dobj->data.pool);
1198 if (!dobj->disk_info.header_only) {
1203 if (!dobj->data.tempfd) {
1205 rv = apr_file_mktemp(&dobj->data.tempfd, dobj->data.tempfile,
1207 | APR_EXCL, dobj->data.pool);
1209 apr_pool_destroy(dobj->data.pool);
1212 dobj->file_size = 0;
1214 dobj->data.tempfd);
1216 apr_pool_destroy(dobj->data.pool);
1219 dobj->disk_info.device = finfo.device;
1220 dobj->disk_info.inode = finfo.inode;
1221 dobj->disk_info.has_body = 1;
1225 rv = apr_file_write_full(dobj->data.tempfd, str, length, &written);
1230 apr_pool_destroy(dobj->data.pool);
1233 dobj->file_size += written;
1234 if (dobj->file_size > dconf->maxfs) {
1237 "(%" APR_OFF_T_FMT ">%" APR_OFF_T_FMT ")", h->cache_obj->key, dobj->file_size, dconf->maxfs);
1239 apr_pool_destroy(dobj->data.pool);
1250 dobj->offset -= length;
1251 if (dobj->offset <= 0) {
1252 dobj->offset = 0;
1255 if ((dconf->readtime && apr_time_now() > dobj->timeout)) {
1256 dobj->timeout = 0;
1268 if (!dobj->disk_info.header_only) {
1270 if (dobj->data.tempfd) {
1271 rv = apr_file_close(dobj->data.tempfd);
1274 apr_pool_destroy(dobj->data.pool);
1284 apr_pool_destroy(dobj->data.pool);
1287 if (dobj->file_size < dconf->minfs) {
1290 "(%" APR_OFF_T_FMT "<%" APR_OFF_T_FMT ")", h->cache_obj->key, dobj->file_size, dconf->minfs);
1292 apr_pool_destroy(dobj->data.pool);
1297 if ((errno == 0) && (dobj->file_size != cl)) {
1301 apr_pool_destroy(dobj->data.pool);
1318 disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj;
1326 rv = file_cache_el_final(conf, &dobj->hdrs, r);
1329 rv = file_cache_el_final(conf, &dobj->vary, r);
1332 if (!dobj->disk_info.header_only) {
1333 rv = file_cache_el_final(conf, &dobj->data, r);
1335 else if (dobj->data.file){
1336 rv = apr_file_remove(dobj->data.file, dobj->data.pool);
1345 dobj->name);
1350 dobj->name);
1353 apr_pool_destroy(dobj->data.pool);