summaryrefslogtreecommitdiffstats
path: root/source3
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-31 23:26:43 +0100
committerGünther Deschner <gd@samba.org>2014-02-13 11:54:16 +0100
commit7f5badb36b443c14d555a3d54f59c25064a7d78a (patch)
treec52bb867071ac42d20b31dcfdb3d4caf56b86bef /source3
parentcaeef257d24bbf1166e7a8b88af290c102f7d3e4 (diff)
downloadsamba-7f5badb36b443c14d555a3d54f59c25064a7d78a.tar.gz
samba-7f5badb36b443c14d555a3d54f59c25064a7d78a.tar.xz
samba-7f5badb36b443c14d555a3d54f59c25064a7d78a.zip
s3:srv_epmapper: make use of dcerpc_binding_*() functions in endpoints_match()
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org>
Diffstat (limited to 'source3')
-rw-r--r--source3/rpc_server/epmapper/srv_epmapper.c37
1 files changed, 26 insertions, 11 deletions
diff --git a/source3/rpc_server/epmapper/srv_epmapper.c b/source3/rpc_server/epmapper/srv_epmapper.c
index 55474c0da7..32b8b1b577 100644
--- a/source3/rpc_server/epmapper/srv_epmapper.c
+++ b/source3/rpc_server/epmapper/srv_epmapper.c
@@ -127,37 +127,52 @@ static struct dcesrv_iface_list *find_interface_list(const struct dcesrv_endpoin
/*
* Check if two endpoints match.
*/
-static bool endpoints_match(const struct dcerpc_binding *ep1,
- const struct dcerpc_binding *ep2)
+static bool endpoints_match(const struct dcerpc_binding *b1,
+ const struct dcerpc_binding *b2)
{
- if (ep1->transport != ep2->transport) {
+ enum dcerpc_transport_t t1;
+ const char *ep1;
+ const char *h1;
+ enum dcerpc_transport_t t2;
+ const char *ep2;
+ const char *h2;
+
+ t1 = dcerpc_binding_get_transport(b1);
+ ep1 = dcerpc_binding_get_string_option(b1, "endpoint");
+ h1 = dcerpc_binding_get_string_option(b1, "host");
+
+ t2 = dcerpc_binding_get_transport(b2);
+ ep2 = dcerpc_binding_get_string_option(b2, "endpoint");
+ h2 = dcerpc_binding_get_string_option(b2, "host");
+
+ if (t1 != t2) {
return false;
}
- if (!ep1->endpoint && ep2->endpoint) {
+ if (!ep1 && ep2) {
return false;
}
- if (ep1->endpoint && !ep2->endpoint) {
+ if (ep1 && !ep2) {
return false;
}
- if (ep1->endpoint && ep2->endpoint) {
- if (!strequal(ep1->endpoint, ep2->endpoint)) {
+ if (ep1 && ep2) {
+ if (!strequal(ep1, ep2)) {
return false;
}
}
- if (!ep1->host && ep2->host) {
+ if (!h1 && h2) {
return false;
}
- if (ep1->host && !ep2->host) {
+ if (h1 && !h2) {
return false;
}
- if (ep1->host && ep2->host) {
- if (!strequal(ep1->host, ep2->host)) {
+ if (h1 && h2) {
+ if (!strequal(h1, h2)) {
return false;
}
}