diff --git a/server/reds-stream.c b/server/reds-stream.c index c0f443be..d87cb232 100644 --- a/server/reds-stream.c +++ b/server/reds-stream.c @@ -236,6 +236,24 @@ int reds_stream_get_family(const RedsStream *s) return s->priv->info->laddr_ext.ss_family; } +int reds_stream_is_plain_unix(const RedsStream *s) +{ + spice_return_val_if_fail(s != NULL, FALSE); + + if (reds_stream_get_family(s) != AF_UNIX) + return FALSE; + +#if HAVE_SASL + if (s->priv->sasl.conn) + return FALSE; +#endif + if (s->priv->ssl) + return FALSE; + + return TRUE; + +} + ssize_t reds_stream_writev(RedsStream *s, const struct iovec *iov, int iovcnt) { int i; diff --git a/server/reds-stream.h b/server/reds-stream.h index 8e0edb07..9e53b228 100644 --- a/server/reds-stream.h +++ b/server/reds-stream.h @@ -73,6 +73,7 @@ RedsStreamSslStatus reds_stream_ssl_accept(RedsStream *stream); int reds_stream_enable_ssl(RedsStream *stream, SSL_CTX *ctx); void reds_stream_set_info_flag(RedsStream *stream, unsigned int flag); int reds_stream_get_family(const RedsStream *stream); +int reds_stream_is_plain_unix(const RedsStream *stream); typedef enum { REDS_SASL_ERROR_OK,