Hello Brett,

What OpenSIPS version are you using ?

In the latest GIT for all maintained branches, the code was fixed to propagate the exact return from the module implementing the module connectivity, except for the 0 return code, which is converted to 1 ( success ) - done in order not to break the script execution.

Best Regards,

Vlad Paiu
OpenSIPS Developer
http://www.opensips-solutions.com

On 23.07.2014 17:18, Brett Nemeroff wrote:
Hey All,

Using memcached..

So I've noticed that while performing a cache_fetch I can't tell the difference between a cache failure and a NOT_FOUND. It seems the problem is actually in cachedb.c because we do this at the end of cachedb_fetch:

return cde->cdb_func.get(con,attr,val)<0?-1:1;

So I read this to basically say to return -1 on any failure regardless of the failure code. This is probably because of the generalized nature of the cache interface and since each cache backend has it's own return codes. I get that, but that being said, I can't tell what the failure is and respond properly.

So I changed that one return line to look more like this:

        res = cde->cdb_func.get(con,attr,val);
        if (res < 0) {
          return res;
        } else {
          return 1;
        }

Is this acceptable? Will I run into problems I'm not thinking about? The only real problem I can see is that a specific error number on one cache backend might mean something different on another. Obviously the only way to really fix this would be to have each cache backend to match up it's own backend's reply codes to a set of generic opensips cache engine reply codes separately enumerated.

Thoughts?

Thanks,
Brett


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to