Skip to content

Commit

Permalink
Merge pull request #567 from sthoduka/fix/peer_endpoint
Browse files Browse the repository at this point in the history
Problem: assertion fails when requesting endpoint of non-existent peer
  • Loading branch information
bluca committed Jan 4, 2018
2 parents 3efaef9 + 2014d3b commit 87cc0fb
Show file tree
Hide file tree
Showing 18 changed files with 22 additions and 3 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ This is the class interface:
zyre_peer_groups (zyre_t *self);

// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
// Caller owns return value and must destroy it when done.
ZYRE_EXPORT char *
zyre_peer_address (zyre_t *self, const char *peer);
Expand Down
1 change: 1 addition & 0 deletions api/zyre.api
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@

<method name = "peer address">
Return the endpoint of a connected peer.
Returns empty string if peer does not exist.
<argument name = "peer" type = "string" />
<return type = "string" fresh = "1" />
</method>
Expand Down
1 change: 1 addition & 0 deletions bindings/jni/src/main/java/org/zeromq/zyre/Zyre.java
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@ public Zlist peerGroups () {
}
/*
Return the endpoint of a connected peer.
Returns empty string if peer does not exist.
*/
native static String __peerAddress (long self, String peer);
public String peerAddress (String peer) {
Expand Down
1 change: 1 addition & 0 deletions bindings/lua_ffi/zyre_ffi.lua
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ zlist_t *
zyre_peer_groups (zyre_t *self);

// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
char *
zyre_peer_address (zyre_t *self, const char *peer);

Expand Down
1 change: 1 addition & 0 deletions bindings/nodejs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,7 @@ string my_zyre.peerAddress (String)
```

Return the endpoint of a connected peer.
Returns empty string if peer does not exist.

```
string my_zyre.peerHeaderValue (String, String)
Expand Down
1 change: 1 addition & 0 deletions bindings/python/zyre/_zyre_ctypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@ def peer_groups(self):
def peer_address(self, peer):
"""
Return the endpoint of a connected peer.
Returns empty string if peer does not exist.
"""
return return_fresh_string(lib.zyre_peer_address(self._as_parameter_, peer))

Expand Down
1 change: 1 addition & 0 deletions bindings/python_cffi/zyre_cffi/Zyre.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ def peer_groups(self):
def peer_address(self, peer):
"""
Return the endpoint of a connected peer.
Returns empty string if peer does not exist.
"""
return utils.lib.zyre_peer_address(self._p, utils.to_bytes(peer))

Expand Down
1 change: 1 addition & 0 deletions bindings/python_cffi/zyre_cffi/_cdefs.inc
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ zlist_t *
zyre_peer_groups (zyre_t *self);

// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
char *
zyre_peer_address (zyre_t *self, const char *peer);

Expand Down
1 change: 1 addition & 0 deletions bindings/python_cffi/zyre_cffi/cdefs.py
Original file line number Diff line number Diff line change
Expand Up @@ -4262,6 +4262,7 @@
zyre_peer_groups (zyre_t *self);
// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
char *
zyre_peer_address (zyre_t *self, const char *peer);
Expand Down
1 change: 1 addition & 0 deletions bindings/qml/src/QmlZyre.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ zlist_t *QmlZyre::peerGroups () {

///
// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
QString QmlZyre::peerAddress (const QString &peer) {
char *retStr_ = zyre_peer_address (self, peer.toUtf8().data());
QString retQStr_ = QString (retStr_);
Expand Down
1 change: 1 addition & 0 deletions bindings/qml/src/QmlZyre.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ public slots:
zlist_t *peerGroups ();

// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
QString peerAddress (const QString &peer);

// Return the value of a header of a conected peer.
Expand Down
1 change: 1 addition & 0 deletions bindings/qt/src/qzyre.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ QZlist * QZyre::peerGroups ()

///
// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
QString QZyre::peerAddress (const QString &peer)
{
char *retStr_ = zyre_peer_address (self, peer.toUtf8().data());
Expand Down
1 change: 1 addition & 0 deletions bindings/ruby/lib/zyre/ffi/zyre.rb
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ def peer_groups()
end

# Return the endpoint of a connected peer.
# Returns empty string if peer does not exist.
#
# @param peer [String, #to_s, nil]
# @return [::FFI::AutoPointer]
Expand Down
1 change: 1 addition & 0 deletions doc/zyre.doc
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ This is the class interface:
zyre_peer_groups (zyre_t *self);

// Return the endpoint of a connected peer.
// Returns empty string if the peer does not exist.
// Caller owns return value and must destroy it when done.
ZYRE_EXPORT char *
zyre_peer_address (zyre_t *self, const char *peer);
Expand Down
1 change: 1 addition & 0 deletions doc/zyre.txt
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ ZYRE_EXPORT zlist_t *
zyre_peer_groups (zyre_t *self);

// Return the endpoint of a connected peer.
// Returns empty string if the peer does not exist.
// Caller owns return value and must destroy it when done.
ZYRE_EXPORT char *
zyre_peer_address (zyre_t *self, const char *peer);
Expand Down
1 change: 1 addition & 0 deletions include/zyre.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ ZYRE_EXPORT zlist_t *
zyre_peer_groups (zyre_t *self);

// Return the endpoint of a connected peer.
// Returns empty string if peer does not exist.
// Caller owns return value and must destroy it when done.
ZYRE_EXPORT char *
zyre_peer_address (zyre_t *self, const char *peer);
Expand Down
3 changes: 2 additions & 1 deletion src/zyre.c
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,8 @@ zyre_peers_by_group (zyre_t *self, const char *group)


// --------------------------------------------------------------------------
// Return the endpoint of a connected peer. Caller owns the string.
// Return the endpoint of a connected peer. Returns empty string if
// the peer does not exist. Caller owns the string.

char *
zyre_peer_address (zyre_t *self, const char *peer)
Expand Down
6 changes: 4 additions & 2 deletions src/zyre_node.c
Original file line number Diff line number Diff line change
Expand Up @@ -684,8 +684,10 @@ zyre_node_recv_api (zyre_node_t *self)
if (streq (command, "PEER ENDPOINT")) {
char *uuid = zmsg_popstr (request);
zyre_peer_t *peer = (zyre_peer_t *) zhash_lookup (self->peers, uuid);
assert (peer);
zsock_send (self->pipe, "s", zyre_peer_endpoint (peer));
if (peer)
zsock_send (self->pipe, "s", zyre_peer_endpoint (peer));
else
zsock_send (self->pipe, "s", "");
zstr_free (&uuid);
}
else
Expand Down

0 comments on commit 87cc0fb

Please sign in to comment.