From b895d45e225dd3d1bf9d598774d3ae4f29fcbc25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= Date: Thu, 28 Nov 2013 12:57:21 +0100 Subject: Define TRANS_RECEIVED flag for transports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The flag is to be used to mark transports related to sockets received from systemd. Signed-off-by: Ɓukasz Stelmach Signed-off-by: Hans de Goede Acked-by: Peter Hutterer --- Xtrans.c | 28 ++++++++++++++++++++++++++++ Xtrans.h | 4 ++++ Xtransint.h | 1 + 3 files changed, 33 insertions(+) diff --git a/Xtrans.c b/Xtrans.c index 735d7b8..e478422 100644 --- a/Xtrans.c +++ b/Xtrans.c @@ -743,6 +743,34 @@ TRANS(CreateListener) (XtransConnInfo ciptr, char *port, unsigned int flags) return ciptr->transptr->CreateListener (ciptr, port, flags); } +int +TRANS(Received) (const char * protocol) + +{ + Xtransport *trans; + int i = 0, ret = 0; + + prmsg (5, "Received(%s)\n", protocol); + + if ((trans = TRANS(SelectTransport)(protocol)) == NULL) + { + prmsg (1,"Received: unable to find transport: %s\n", + protocol); + + return -1; + } + if (trans->flags & TRANS_ALIAS) { + if (trans->nolisten) + while (trans->nolisten[i]) { + ret |= TRANS(Received)(trans->nolisten[i]); + i++; + } + } + + trans->flags |= TRANS_RECEIVED; + return ret; +} + int TRANS(NoListen) (const char * protocol) diff --git a/Xtrans.h b/Xtrans.h index 69accd7..1754720 100644 --- a/Xtrans.h +++ b/Xtrans.h @@ -303,6 +303,10 @@ int TRANS(CreateListener)( unsigned int /* flags */ ); +int TRANS(Received) ( + const char* /* protocol*/ +); + int TRANS(NoListen) ( const char* /* protocol*/ ); diff --git a/Xtransint.h b/Xtransint.h index ec5a772..4c670b8 100644 --- a/Xtransint.h +++ b/Xtransint.h @@ -331,6 +331,7 @@ typedef struct _Xtransport_table { #define TRANS_NOUNLINK (1<<4) /* Don't unlink transport endpoints */ #define TRANS_ABSTRACT (1<<5) /* Use abstract sockets if available */ #define TRANS_NOXAUTH (1<<6) /* Don't verify authentication (because it's secure some other way at the OS layer) */ +#define TRANS_RECEIVED (1<<7) /* The fd for this has already been opened by someone else. */ /* Flags to preserve when setting others */ #define TRANS_KEEPFLAGS (TRANS_NOUNLINK|TRANS_ABSTRACT) -- cgit v1.2.3