aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assuan-socket.c65
-rw-r--r--src/assuan.h.in2
-rw-r--r--src/libassuan.def2
-rw-r--r--src/libassuan.vers2
4 files changed, 63 insertions, 8 deletions
diff --git a/src/assuan-socket.c b/src/assuan-socket.c
index ed6a488..7bca0ae 100644
--- a/src/assuan-socket.c
+++ b/src/assuan-socket.c
@@ -1,5 +1,6 @@
-/* assuan-socket.c
+/* assuan-socket.c - Socket wrapper
Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2001-2015 g10 Code GmbH
This file is part of Assuan.
@@ -78,6 +79,13 @@
+ strlen ((ptr)->sun_path))
#endif
+/* In the future, we can allow access to sock_ctx, if that context's
+ hook functions need to be overridden. There can only be one global
+ assuan_sock_* user (one library or one application) with this
+ convenience interface, if non-standard hook functions are
+ needed. */
+static assuan_context_t sock_ctx;
+
#ifdef HAVE_W32_SYSTEM
@@ -375,6 +383,42 @@ _assuan_sock_new (assuan_context_t ctx, int domain, int type, int proto)
int
+_assuan_sock_set_flag (assuan_context_t ctx, assuan_fd_t sockfd,
+ const char *name, int value)
+{
+ if (0)
+ {
+ }
+ else
+ {
+ gpg_err_set_errno (EINVAL);
+ return -1;
+ }
+
+ return 0;
+}
+
+
+int
+_assuan_sock_get_flag (assuan_context_t ctx, assuan_fd_t sockfd,
+ const char *name, int *r_value)
+{
+ (void)ctx;
+
+ if (0)
+ {
+ }
+ else
+ {
+ gpg_err_set_errno (EINVAL);
+ return -1;
+ }
+
+ return 0;
+}
+
+
+int
_assuan_sock_connect (assuan_context_t ctx, assuan_fd_t sockfd,
struct sockaddr *addr, int addrlen)
{
@@ -695,13 +739,6 @@ _assuan_sock_check_nonce (assuan_context_t ctx, assuan_fd_t fd,
/* Public API. */
-/* In the future, we can allow access to sock_ctx, if that context's
- hook functions need to be overridden. There can only be one global
- assuan_sock_* user (one library or one application) with this
- convenience interface, if non-standard hook functions are
- needed. */
-static assuan_context_t sock_ctx;
-
gpg_error_t
assuan_sock_init ()
{
@@ -752,6 +789,18 @@ assuan_sock_new (int domain, int type, int proto)
}
int
+assuan_sock_set_flag (assuan_fd_t sockfd, const char *name, int value)
+{
+ return _assuan_sock_set_flag (sock_ctx, sockfd, name, value);
+}
+
+int
+assuan_sock_get_flag (assuan_fd_t sockfd, const char *name, int *r_value)
+{
+ return _assuan_sock_get_flag (sock_ctx, sockfd, name, r_value);
+}
+
+int
assuan_sock_connect (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen)
{
return _assuan_sock_connect (sock_ctx, sockfd, addr, addrlen);
diff --git a/src/assuan.h.in b/src/assuan.h.in
index f53c26e..14255ea 100644
--- a/src/assuan.h.in
+++ b/src/assuan.h.in
@@ -467,6 +467,8 @@ gpg_error_t assuan_sock_init (void);
void assuan_sock_deinit (void);
int assuan_sock_close (assuan_fd_t fd);
assuan_fd_t assuan_sock_new (int domain, int type, int proto);
+int assuan_sock_set_flag (assuan_fd_t sockfd, const char *name, int value);
+int assuan_sock_get_flag (assuan_fd_t sockfd, const char *name, int *r_value);
int assuan_sock_connect (assuan_fd_t sockfd,
struct sockaddr *addr, int addrlen);
int assuan_sock_bind (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen);
diff --git a/src/libassuan.def b/src/libassuan.def
index d9997e3..9f31c31 100644
--- a/src/libassuan.def
+++ b/src/libassuan.def
@@ -112,6 +112,8 @@ EXPORTS
__assuan_waitpid @91
assuan_check_version @92
assuan_sock_set_sockaddr_un @93
+ assuan_sock_set_flag @94
+ assuan_sock_get_flag @95
; END
diff --git a/src/libassuan.vers b/src/libassuan.vers
index e36c322..2b2389d 100644
--- a/src/libassuan.vers
+++ b/src/libassuan.vers
@@ -102,6 +102,8 @@ LIBASSUAN_1.0 {
assuan_socket_connect_fd;
assuan_check_version;
assuan_sock_set_sockaddr_un;
+ assuan_sock_set_flag;
+ assuan_sock_get_flag;
__assuan_close;
__assuan_pipe;