On 21/12/2012 2:20 p.m., Eliezer Croitoru wrote:
Hey,

I had a delay and I hope the next preview is an improvement to the old one. I know I'm out of sync from trunk and once the preview is OK I will present a patch in sync with trunk.

On 12/06/2012 03:20 AM, Amos Jeffries wrote:
On 06.12.2012 04:24, Eliezer Croitoru wrote:
This patch implements the StoreID fully functional but yet to take in
full account PURGE\ICP\HTCP requests.

in src/cf.data.pre:
 - under store_id_program
  + on "ERR" in protocol description, please add a statement:
    "The default is to use HTTP request URL as the store ID"

+ the "WARNING:" paragraph is specific to URL-rewriter screwups. The storeID does need a WARNING as well, but the paragraph there should describe the known problems with pointing two URLs at one stored object (risk of getting the de-dup wrong, client visible when problems oc cur, etc).

OK.
I added note about refresh_pattern but I am not sure if it's the best place here.

I think it is the right place for that. refresh_attern itself is not the problem, but only when storeId functionality is enabled. So people looking at storeId directive need to be told. If you wish to add a not to refresh_pattern *as well* that would be fine.

- you are also using the pattern "http->store_id.size() BLAH ? http->store_id.termedBuf() : http->uri" in various places with inconsistent BLAH (!=0, <0, >0) + please use the inline accessor method http->storeId() instead. You may need to duplicate the HttpRequest::storeId() method in clientReplyContext. OR convert the reply code to using http->request->storeId()

FIXME: I have considered using another method but since it was implemented before with the variable I used the more direct approach to the variable instead of creating a method.

Not sure what you mean by that, but will review the new patch and see if it makes sense.


+ please update that method to perform the above pattern in a suitable form.

If we do want to force basic store_id *size* I will implement a method with validation otherwise I dont think it's needed.

I was basing that on what you are currently doing, using size(). String only provides Size() and defined(). StoreId needs to be a >0 length string to be useful - defined() will return true for 0-length strings which have been defined as "" and not very useful for storeId.

I'm not sure if we want to enforce a minimum length key or just warn loudly for short keys. That is a test for the helepr reply handler to do though.

I was just thinking you could add:
inline const char* ClientReplyContext::storeId() { return (http->store_id.size() > 0 ? http->store_id.termedBuf() : http->uri); }

(or some equivalent using urlCanonical() instead of http->uri.)


- in clientReplyContext::doGetMoreData I do not quite understand your new documentation NOTE:
  + s/relpy/reply/
+ what is a ' reply of "HTTP/" ' and how does it occur at this point in the code? what is the problem you hint at without stating? + what is going on with debugs 'section'? no debugs() statement should ever change the run-time state by being run/displayed. Yours does not change any state, so how does is affect anything?

A FIXME on that in the code.

in src/client_side_request.cc:
- documentation needs to start with /** instead of /* for doxygen format. Several places.
 - clientStoreIdAccessCheckDone
+ please use static_cast in new code casting ... "ClientRequestContext *context = static_cast<ClientRequestContext *>(data);" + "The nilReply is marked as Unknown if Will not set as Error." is not needed with the method documentation saying the same thing but better.



Amos

Reply via email to