s4:rpc_server: use dcerpc_binding_get_*() in endpoints_match()
authorStefan Metzmacher <metze@samba.org>
Thu, 30 Jan 2014 18:00:09 +0000 (19:00 +0100)
committerGünther Deschner <gd@samba.org>
Thu, 13 Feb 2014 10:54:17 +0000 (11:54 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
source4/rpc_server/dcerpc_server.c

index bf91529ae1e792cd6a1a4db48f0a2a7a899e9bc7..2df7872d801592fb583d2c31c7df1aa3b8940f9d 100644 (file)
@@ -127,16 +127,28 @@ static struct dcesrv_assoc_group *dcesrv_assoc_group_new(TALLOC_CTX *mem_ctx,
 static bool endpoints_match(const struct dcerpc_binding *ep1,
                            const struct dcerpc_binding *ep2)
 {
-       if (ep1->transport != ep2->transport) {
+       enum dcerpc_transport_t t1;
+       enum dcerpc_transport_t t2;
+       const char *e1;
+       const char *e2;
+
+       t1 = dcerpc_binding_get_transport(ep1);
+       t2 = dcerpc_binding_get_transport(ep2);
+
+       e1 = dcerpc_binding_get_string_option(ep1, "endpoint");
+       e2 = dcerpc_binding_get_string_option(ep2, "endpoint");
+
+       if (t1 != t2) {
                return false;
        }
 
-       if (!ep1->endpoint || !ep2->endpoint) {
-               return ep1->endpoint == ep2->endpoint;
+       if (!e1 || !e2) {
+               return e1 == e2;
        }
 
-       if (strcasecmp(ep1->endpoint, ep2->endpoint) != 0) 
+       if (strcasecmp(e1, e2) != 0) {
                return false;
+       }
 
        return true;
 }