You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Erik Anderson (JIRA)" <ji...@apache.org> on 2014/07/08 18:13:04 UTC
[jira] [Commented] (ZOOKEEPER-1677) Misuse of INET_ADDRSTRLEN
[ 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)