]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - client_common.c
Reject non-sideband connections.
[paraslash.git] / client_common.c
index 78b232dbd043caf1dc0ee6ba58b3437000e0d86a..a3a471aedaab1f79a3f3091bf61572a716248598 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1997-2012 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2013 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -44,6 +44,7 @@ void client_disconnect(struct client_task *ct)
        if (ct->scc.fd >= 0)
                close(ct->scc.fd);
        free_argv(ct->features);
+       ct->features = NULL;
        sc_free(ct->scc.recv);
        ct->scc.recv = NULL;
        sc_free(ct->scc.send);
@@ -344,6 +345,11 @@ static void client_post_select(struct sched *s, struct task *t)
                if (ret < 0 || n == 0)
                        goto out;
                ct->features = parse_features(buf);
+               if (!has_feature("sideband", ct)) {
+                       PARA_ERROR_LOG("server has no sideband support\n");
+                       ret = -E_INCOMPAT_FEAT;
+                       goto out;
+               }
                ct->status = CL_RECEIVED_WELCOME;
                return;
        case CL_RECEIVED_WELCOME: /* send auth command */