Roxen.git / server / base_server / configuration.pike

version» Context lines:

Roxen.git/server/base_server/configuration.pike:2262:   #endif    PROF_ENTER(Roxen.get_owning_module(tmp[1])->module_name,"location");    TRACE_ENTER("Calling find_file()...", 0);    LOCK(tmp[1]);    fid=tmp[1]( file[ strlen(loc) .. ] + id->extra_extension, id);    UNLOCK();    TRACE_LEAVE("");    PROF_LEAVE(Roxen.get_owning_module(tmp[1])->module_name,"location");    if(fid)    { +  if (id)    id->virtfile = loc;       if(mappingp(fid))    {    TRACE_LEAVE(""); // Location module [...]    TRACE_LEAVE(examine_return_mapping(fid));    TIMER_END(location_modules);    return fid;    }    else
Roxen.git/server/base_server/configuration.pike:2517:    root_id->misc->_request_depth++;    if(sub_req_limit && root_id->misc->_request_depth > sub_req_limit)    error("Subrequest limit reached. (Possibly an insertion loop.)");       mapping|int res;    mapping res2;    function tmp;    res = low_get_file(id, no_magic);    TIMER_END(get_file);    +  // Note: id may be destructed at this point already (when the +  // request is handled asynchronously, +  // i.e. Roxen.http_pipe_in_progress() is returned, but +  // id->send_result() finishes in another thread before the calling +  // thread gets to this point.) +  if (id && (!mappingp (res) || !res->pipe)) {    // finally map all filter type modules.    // Filter modules are like TYPE_LAST modules, but they get called    // for _all_ files.    TIMER_START(filter_modules);    foreach(filter_module_cache||filter_modules(), tmp)    {    TRACE_ENTER("Filter module", tmp);    PROF_ENTER(Roxen.get_owning_module(tmp)->module_name,"filter");    if(res2=tmp(res,id))    {    if(mappingp(res) && res->file && (res2->file != res->file))    destruct(res->file);    TRACE_LEAVE("Rewrote result.");    res=res2;    } else    TRACE_LEAVE("");    PROF_LEAVE(Roxen.get_owning_module(tmp)->module_name,"filter");    }    TIMER_END(filter_modules); -  +  }    -  +  if (root_id)    root_id->misc->_request_depth--; -  +  +  if (id)    id->misc->internal_get = orig_internal_get; -  +     return res;   }      array(string) find_dir(string file, RequestID id, void|int(0..1) verbose)   {    array dir;    TRACE_ENTER(sprintf("List directory %O.", file), 0);       if(!sizeof (file) || file[0] != '/')    file = "/" + file;