[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14055085#comment-14055085
 ] 

Erik Anderson commented on ZOOKEEPER-1677:
------------------------------------------

The zookeeper client was offline for me until I found this patch, without it 
the client was stuck in a continuous reconfigure cycle without ever connecting 
to the server.

A possible alternative (architecture-independent) approach is simply to zero 
out the buffer inside of addrvec_append_addrinfo.  This is the only entrypoint 
into the vector, so one could simply memcmp the entire thing.

In any case, neither INET_ADDRSTRLEN or INET6_ADDRSTRLEN are in used by the 
client after this point (and are rather well documented).  Can we drop the 
#defines as part of this patch?

> Misuse of INET_ADDRSTRLEN
> -------------------------
>
>                 Key: ZOOKEEPER-1677
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1677
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.5.0
>            Reporter: Shevek
>            Assignee: Marshall McMullen
>             Fix For: 3.5.0
>
>         Attachments: ZOOKEEPER-1677.patch, ZOOKEEPER-1677.patch, 
> ZOOKEEPER-1677.patch, ZOOKEEPER-1677.patch, ZOOKEEPER-1677.patch, 
> ZOOKEEPER-1677.patch, ZOOKEEPER-1677.patch, ZOOKEEPER-1677.patch, 
> ZOOKEEPER-1677.patch
>
>
>     ZOOKEEPER-1355. Add zk.updateServerList(newServerList) (Alex Shraer, 
> Marshall McMullen via fpj)
>     
>     
>     
>     git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1410731 
> 13f79535-47bb-0310-9956-ffa450edef68
> +int addrvec_contains(const addrvec_t *avec, const struct sockaddr_storage 
> *addr)
> +{
> +    if (!avec || !addr)
> +    { 
> +        return 0;
> +    }
> +
> +    int i = 0;
> +    for (i = 0; i < avec->count; i++)
> +    {
> +        if(memcmp(&avec->data[i], addr, INET_ADDRSTRLEN) == 0)
> +            return 1;
> +    }
> +
> +    return 0;
> +}
> Pretty sure that should be sizeof(sockaddr_storage). INET_ADDRSTRLEN is the 
> size of the character buffer which needs to be allocated for the return value 
> of inet_ntop, which seems to be totally wrong.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to