Better still I passed in the request_record as the context and saved the information in the per request config structure for the module:
apreq_hook_t * my_hook_handle = apreq_hook_make(req->pool,
my_hook, NULL, req);
With this technique I have access to the data even after an interruption causing an EOF is received. The data hangs around until the request is completed, so I can recover from the interruption. I would like to have this hook remove itself once it sets the value. How do I remove it? I see no function for removal of a hook. Would I have to step through the hook_queue, find the one that matches the current hook, and then move the rest of them up a slot? That sounds a bit messy. On 9/12/06, Brian McQueen <[EMAIL PROTECTED]> wrote:
That does work, but it won't get me where I need to be. The problem is that the spoolfile isn't set after a parsing error - there is no brigade in param->upload upon a bad parse. I did find a simple way to get a filter in there: apreq_hook_t * my_hook_handle = apreq_hook_make(req->pool, my_hook, NULL, NULL); apreq_hook_add(aph, my_hook_handle); I think I'll be able to set a note with this technique. Brian McQueen On 9/12/06, Issac Goldstand <[EMAIL PROTECTED]> wrote: > Well, the spool file is just a normal apr_file_t, and the actual file > handle is accessable via apreq_brigade_spoolfile(), so you'll likely > want to do something like: > > (untested) > char[255] filename; > apr_status_t rv; > > rv = apr_file_name_get(&filename, apreq_brigade_spoolfile(param->upload)); > > Issac > > Brian McQueen wrote: > > I am trying to figure out how to get the name of the temp file created > > by apreq when it spools to the disk. I have been through several > > tries now and the most promising seems to be making a hook and adding > > it to the parser. The hook would get the name from the brigade as the > > request is parsed, then it could put the name into a note which my > > module could get later. I'm struggling now to add my hook to the > > parser. I have a parser function, but not a parser_t at that stage of > > my code - prior to reading and parsing - and the add_hook function > > requires a parser_t. At this stage the parser is not yet set. > > > > How can I directly add a hook to the parse_multipart parser? > > Do any of you have any better ideas? > > > > Brian McQueen >