On 03/24/2011 04:48 AM, Tsantilas Christos wrote:
> This simple patch provide %D details for all SSL errors documented at
> http://www.openssl.org/docs/apps/verify.html
> 
> This patch also adds a std::map based structure to optimize the ssl
> error description retrieval.
> +    const char *err = getErrorDescr(error_no);
> +    if (!err)
> +        return "[Not available]";
> +    else
> +        return err;    
> +
Consider a shorter/safer version:
if (const char *err = getErrorDescr(error_no))
    return err;
return "[Not available]";
> +//Use std::map to optimize search
> +std::map<Ssl::ssl_error_t, SslErrorDetailEntry *> TheSslDetailMap;
...
> +    std::map<Ssl::ssl_error_t, SslErrorDetailEntry *>::iterator it;
> +    for (it=TheSslDetailMap.begin(); it != TheSslDetailMap.end(); ++it) {
> +        if (strcmp(name, it->second->name) == 0)
> +            return it->second->value;
>      }
Consider a more polished and slightly safer version:
> typedef std::map<Ssl::ssl_error_t, SslErrorDetailEntry *> SslErrorDetails;
> static SslErrorDetails TheSslDetailMap;
> ...
> typedef SslErrorDetails::const_iterator SEDCI;
> for (SEDCI i = TheSslDetailMap.begin(); i != TheSslDetailMap.end(); ++i) {
> ...
The SslErrorDetails type may be used here as well (also correcting for
const-ness):
> +    const SslErrorDetails::const_iterator it = TheSslDetailMap.find(value);
> +    if (it != TheSslDetailMap.end())
I would also rename TheSslDetailMap to TheSslDetails because the code
does not really care about the exact index structure. For example, when
hash_map becomes easily portable, we can start using that instead.
Thank you,
Alex.
Received on Thu Mar 24 2011 - 16:09:17 MDT
This archive was generated by hypermail 2.2.0 : Fri Mar 25 2011 - 12:00:17 MDT