diff --git a/.gitignore b/.gitignore
index 266852e6..2186e0de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -88,7 +88,6 @@ tests/test_many_sockets
tests/test_diffserv
tests/test*.log
tests/test*.trs
-tests/test_zap_ipc_creds
src/platform.hpp*
src/stamp-h1
perf/local_lat
diff --git a/doc/zmq_getsockopt.txt b/doc/zmq_getsockopt.txt
index db3e2cdc..f49fb711 100644
--- a/doc/zmq_getsockopt.txt
+++ b/doc/zmq_getsockopt.txt
@@ -606,25 +606,6 @@ Default value:: not set
Applicable socket types:: all, when using TCP transport
-ZMQ_ZAP_IPC_CREDS: Retrieve IPC peer credentials state
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The 'ZMQ_ZAP_IPC_CREDS' option shall return True (1) if credentials of IPC
-peers will be appended to the address sent in ZAP request messages and False
-(0) otherwise.
-
-Refer to linkzmq:zmq_setsockopt[3] for more information.
-
-NOTE: IPC peer credentials are only available on platforms supporting the
-SO_PEERCRED or LOCAL_PEERCRED socket options.
-
-[horizontal]
-Option value type:: int
-Option value unit:: boolean
-Default value:: 0 (false)
-Applicable socket types:: all listening sockets, when using IPC transports.
-
-
RETURN VALUE
------------
The _zmq_getsockopt()_ function shall return zero if successful. Otherwise it
diff --git a/doc/zmq_setsockopt.txt b/doc/zmq_setsockopt.txt
index 615a10d4..2e157f9c 100644
--- a/doc/zmq_setsockopt.txt
+++ b/doc/zmq_setsockopt.txt
@@ -777,24 +777,6 @@ Default value:: not set
Applicable socket types:: all, when using TCP transport
-ZMQ_ZAP_IPC_CREDS: Append IPC peer credentials to ZAP address
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If set, the credentials of IPC peers will be appended to the address sent in
-ZAP request messages. The new address will be formatted as ADDRESS:UID:GID:PID
-where UID and GID are the effective group and user IDs of the user owning the
-peer process and PID is the process ID. PID will be empty on systems not
-supporting SO_PEERCRED.
-
-NOTE: IPC peer credentials are only available on platforms supporting the
-SO_PEERCRED or LOCAL_PEERCRED socket options.
-
-[horizontal]
-Option value type:: int
-Option value unit:: boolean
-Default value:: 0 (false)
-Applicable socket types:: all listening sockets, when using IPC transports.
-
-
RETURN VALUE
------------
The _zmq_setsockopt()_ function shall return zero if successful. Otherwise it
diff --git a/include/zmq.h b/include/zmq.h
index 4c448fb2..561df21a 100644
--- a/include/zmq.h
+++ b/include/zmq.h
@@ -293,7 +293,6 @@ ZMQ_EXPORT int zmq_msg_set (zmq_msg_t *msg, int option, int optval);
#define ZMQ_IPC_FILTER_PID 58
#define ZMQ_IPC_FILTER_UID 59
#define ZMQ_IPC_FILTER_GID 60
-#define ZMQ_ZAP_IPC_CREDS 61
/* Message options */
#define ZMQ_MORE 1
diff --git a/src/options.cpp b/src/options.cpp
index edf8f67e..09dc6df7 100644
--- a/src/options.cpp
+++ b/src/options.cpp
@@ -51,9 +51,6 @@ zmq::options_t::options_t () :
tcp_keepalive_cnt (-1),
tcp_keepalive_idle (-1),
tcp_keepalive_intvl (-1),
-# if defined ZMQ_HAVE_SO_PEERCRED || defined ZMQ_HAVE_LOCAL_PEERCRED
- zap_ipc_creds (false),
-# endif
mechanism (ZMQ_NULL),
as_server (0),
socket_id (0),
@@ -261,13 +258,6 @@ int zmq::options_t::setsockopt (int option_, const void *optval_,
break;
# if defined ZMQ_HAVE_SO_PEERCRED || defined ZMQ_HAVE_LOCAL_PEERCRED
- case ZMQ_ZAP_IPC_CREDS:
- if (is_int && (value == 0 || value == 1)) {
- zap_ipc_creds = (value != 0);
- return 0;
- }
- break;
-
case ZMQ_IPC_FILTER_UID:
if (optvallen_ == 0 && optval_ == NULL) {
ipc_uid_accept_filters.clear ();
@@ -601,15 +591,6 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_)
}
break;
-# if defined ZMQ_HAVE_SO_PEERCRED || defined ZMQ_HAVE_LOCAL_PEERCRED
- case ZMQ_ZAP_IPC_CREDS:
- if (is_int) {
- *value = zap_ipc_creds;
- return 0;
- }
- break;
-# endif
-
case ZMQ_MECHANISM:
if (is_int) {
*value = mechanism;
diff --git a/src/stream_engine.cpp b/src/stream_engine.cpp
index 07612d7d..61bc8d0e 100644
--- a/src/stream_engine.cpp
+++ b/src/stream_engine.cpp
@@ -89,7 +89,8 @@ zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_,
if (family == 0)
peer_address = "";
#if defined ZMQ_HAVE_SO_PEERCRED
- else if (family == PF_UNIX && options.zap_ipc_creds) {
+ else
+ if (family == PF_UNIX) {
struct ucred cred;
socklen_t size = sizeof (cred);
if (!getsockopt (s, SOL_SOCKET, SO_PEERCRED, &cred, &size)) {
@@ -99,7 +100,8 @@ zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_,
}
}
#elif defined ZMQ_HAVE_LOCAL_PEERCRED
- else if (family == PF_UNIX && options.zap_ipc_creds) {
+ else
+ if (family == PF_UNIX) {
struct xucred cred;
socklen_t size = sizeof (cred);
if (!getsockopt (s, 0, LOCAL_PEERCRED, &cred, &size)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 42ee17aa..76c3d38f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -53,8 +53,7 @@ noinst_PROGRAMS += test_shutdown_stress \
test_reqrep_ipc \
test_timeo \
test_fork \
- test_filter_ipc \
- test_zap_ipc_creds
+ test_filter_ipc
endif
if BUILD_TIPC
diff --git a/tests/test_zap_ipc_creds.cpp b/tests/test_zap_ipc_creds.cpp
deleted file mode 100644
index 10dccb6c..00000000
--- a/tests/test_zap_ipc_creds.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this program. If not, see .
-*/
-
-#include
-
-#include
-
-#include "testutil.hpp"
-
-static void zap_handler (void *handler)
-{
- // Process ZAP requests forever
- while (true) {
- char *version = s_recv (handler);
- if (!version)
- break; // Terminating
- char *sequence = s_recv (handler);
- char *domain = s_recv (handler);
- char *address = s_recv (handler);
- char *identity = s_recv (handler);
- char *mechanism = s_recv (handler);
-
- assert (streq (version, "1.0"));
- assert (streq (mechanism, "NULL"));
-
- if (streq (domain, "creds")) {
- std::ostringstream buf;
- buf << "localhost:" << getuid () << ":" << getgid () << ":";
-# ifdef ZMQ_HAVE_SO_PEERCRED
- buf << getpid ();
-# endif
- assert (streq (address, buf.str ().c_str ()));
- } else
- assert (streq (address, "localhost"));
-
- s_sendmore (handler, version);
- s_sendmore (handler, sequence);
- s_sendmore (handler, "200");
- s_sendmore (handler, "OK");
- s_sendmore (handler, "anonymous");
- s_send (handler, "");
-
- free (version);
- free (sequence);
- free (domain);
- free (address);
- free (identity);
- free (mechanism);
- }
- zmq_close (handler);
-}
-
-static void run_test (bool with_creds)
-{
- void *ctx = zmq_ctx_new ();
- assert (ctx);
-
- // Spawn ZAP handler
- // We create and bind ZAP socket in main thread to avoid case
- // where child thread does not start up fast enough.
- void *handler = zmq_socket (ctx, ZMQ_REP);
- assert (handler);
- int rc = zmq_bind (handler, "inproc://zeromq.zap.01");
- assert (rc == 0);
- void *zap_thread = zmq_threadstart (&zap_handler, handler);
-
- void *sb = zmq_socket (ctx, ZMQ_PAIR);
- assert (sb);
-
- void *sc = zmq_socket (ctx, ZMQ_PAIR);
- assert (sc);
-
- // Now use the right domain, the test must pass
- if (with_creds) {
- rc = zmq_setsockopt (sb, ZMQ_ZAP_DOMAIN, "creds", 5);
- assert (rc == 0);
- int ipc_creds = 1;
- rc = zmq_setsockopt (sb, ZMQ_ZAP_IPC_CREDS, &ipc_creds, sizeof (int));
- assert (rc == 0);
- } else {
- rc = zmq_setsockopt (sb, ZMQ_ZAP_DOMAIN, "none", 4);
- assert (rc == 0);
- int ipc_creds = 1;
- size_t size = sizeof (int);
- rc = zmq_getsockopt (sb, ZMQ_ZAP_IPC_CREDS, &ipc_creds, &size);
- assert (rc == 0);
- assert (ipc_creds == 0);
- }
-
- rc = zmq_bind (sb, "ipc://@/tmp/test");
- assert (rc == 0);
-
- rc = zmq_connect (sc, "ipc://@/tmp/test");
- assert (rc == 0);
-
- bounce (sb, sc);
-
- rc = zmq_close (sc);
- assert (rc == 0);
- rc = zmq_close (sb);
- assert (rc == 0);
-
- rc = zmq_ctx_term (ctx);
- assert (rc == 0);
-
- // Wait until ZAP handler terminates.
- zmq_threadclose (zap_thread);
-}
-
-int main (void)
-{
- setup_test_environment();
-
- run_test(false);
- run_test(true);
-
- return 0 ;
-}
-