s4:librpc: remove server_name from transport
authorGregor Beck <gbeck@sernet.de>
Mon, 23 Sep 2013 11:54:38 +0000 (13:54 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 7 Jan 2014 07:37:45 +0000 (08:37 +0100)
Signed-off-by: Gregor Beck <gbeck@sernet.de>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source4/librpc/rpc/dcerpc.c
source4/librpc/rpc/dcerpc.h
source4/librpc/rpc/dcerpc_auth.c
source4/librpc/rpc/dcerpc_smb.c
source4/librpc/rpc/dcerpc_sock.c

index ace155e92229784ff321f9a51100b8570d8c8c1f..95f608aeb5799d7c4a23c95041d367b66807ea9b 100644 (file)
@@ -1984,13 +1984,7 @@ static NTSTATUS dcerpc_ndr_validate_out(struct dcecli_connection *c,
 */
 _PUBLIC_ const char *dcerpc_server_name(struct dcerpc_pipe *p)
 {
-       if (!p->conn->transport.target_hostname) {
-               if (!p->conn->transport.peer_name) {
-                       return "";
-               }
-               return p->conn->transport.peer_name(p->conn);
-       }
-       return p->conn->transport.target_hostname(p->conn);
+       return p->conn ? p->conn->server_name : NULL;
 }
 
 
index ed338e912f173dd773eeebce186954d802e8ee0f..2b2e8b78bb8f55bb8038eafb7e1951de86bddc97 100644 (file)
@@ -80,10 +80,6 @@ struct dcecli_connection {
 
                NTSTATUS (*shutdown_pipe)(struct dcecli_connection *, NTSTATUS status);
 
-               const char *(*peer_name)(struct dcecli_connection *);
-
-               const char *(*target_hostname)(struct dcecli_connection *);
-
                /* send a request to the server */
                NTSTATUS (*send_request)(struct dcecli_connection *, DATA_BLOB *, bool trigger_read);
 
@@ -95,6 +91,8 @@ struct dcecli_connection {
                void (*recv_data)(struct dcecli_connection *, DATA_BLOB *, NTSTATUS status);
        } transport;
 
+       const char *server_name;
+
        /* Requests that have been sent, waiting for a reply */
        struct rpc_request *pending;
 
index 9a5d04dfb95d28ddd127c68a7b8d4873d2490f7f..a146716495399af23dfd711b6fbe234f4eb4677b 100644 (file)
@@ -309,7 +309,7 @@ struct composite_context *dcerpc_bind_auth_send(TALLOC_CTX *mem_ctx,
        }
 
        c->status = gensec_set_target_hostname(sec->generic_state,
-                                              p->conn->transport.target_hostname(p->conn));
+                                              dcerpc_server_name(p));
        if (!NT_STATUS_IS_OK(c->status)) {
                DEBUG(1, ("Failed to set GENSEC target hostname: %s\n", 
                          nt_errstr(c->status)));
index adfb870db78a06de94b8002160d6a55edd592f68..b7bd98417b6025026396e0f35621b03aa3aa64f6 100644 (file)
@@ -36,7 +36,6 @@
 /* transport private information used by SMB pipe transport */
 struct smb_private {
        DATA_BLOB session_key;
-       const char *server_name;
 
        struct tstream_context *stream;
        struct tevent_queue *write_queue;
@@ -378,28 +377,6 @@ static void smb_shutdown_pipe_done(struct tevent_req *subreq)
        pipe_dead(c, status);
 }
 
-/*
-  return SMB server name (called name)
-*/
-static const char *smb_peer_name(struct dcecli_connection *c)
-{
-       struct smb_private *smb = talloc_get_type_abort(
-               c->transport.private_data, struct smb_private);
-       if (smb == NULL) return "";
-       return smb->server_name;
-}
-
-/*
-  return remote name we make the actual connection (good for kerberos) 
-*/
-static const char *smb_target_hostname(struct dcecli_connection *c)
-{
-       struct smb_private *smb = talloc_get_type_abort(
-               c->transport.private_data, struct smb_private);
-       if (smb == NULL) return "";
-       return smb->server_name;
-}
-
 /*
   fetch the user session key 
 */
@@ -470,9 +447,9 @@ struct composite_context *dcerpc_pipe_open_smb_send(struct dcecli_connection *c,
        state->smb->tcon = tcon;
        state->smb->timeout_msec = timeout_msec;
 
-       state->smb->server_name = strupper_talloc(state->smb,
+       state->c->server_name = strupper_talloc(state->c,
                smbXcli_conn_remote_name(conn));
-       if (composite_nomem(state->smb->server_name, ctx)) return ctx;
+       if (composite_nomem(state->c->server_name, ctx)) return ctx;
 
        ctx->status = smbXcli_session_application_key(session,
                                                      state->smb,
@@ -516,8 +493,6 @@ static void dcerpc_pipe_open_smb_done(struct tevent_req *subreq)
        c->transport.transport       = NCACN_NP;
        c->transport.private_data    = NULL;
        c->transport.shutdown_pipe   = smb_shutdown_pipe;
-       c->transport.peer_name       = smb_peer_name;
-       c->transport.target_hostname = smb_target_hostname;
 
        c->transport.send_request    = smb_send_request;
        c->transport.send_read       = smb_send_read;
index 928e7f7818706d2a9aa3643cde1364641fe3bac9..9f82cf26f434c420beaec337d4be291c8ba8b919 100644 (file)
@@ -34,8 +34,6 @@
 
 /* transport private information used by general socket pipe transports */
 struct sock_private {
-       char *server_name;
-
        const char *path; /* For ncacn_unix_sock and ncalrpc */
 
        struct socket_address *peer_addr;
@@ -259,27 +257,6 @@ static NTSTATUS sock_shutdown_pipe(struct dcecli_connection *p, NTSTATUS status)
        return status;
 }
 
-/*
-  return sock server name
-*/
-static const char *sock_peer_name(struct dcecli_connection *p)
-{
-       struct sock_private *sock = talloc_get_type_abort(
-               p->transport.private_data, struct sock_private);
-       return sock->server_name;
-}
-
-/*
-  return remote name we make the actual connection (good for kerberos) 
-*/
-static const char *sock_target_hostname(struct dcecli_connection *p)
-{
-       struct sock_private *sock = talloc_get_type_abort(
-               p->transport.private_data, struct sock_private);
-       return sock->server_name;
-}
-
-
 struct pipe_open_socket_state {
        struct dcecli_connection *conn;
        struct socket_context *socket_ctx;
@@ -336,8 +313,6 @@ static void continue_socket_connect(struct composite_context *ctx)
        conn->transport.recv_data       = NULL;
 
        conn->transport.shutdown_pipe   = sock_shutdown_pipe;
-       conn->transport.peer_name       = sock_peer_name;
-       conn->transport.target_hostname = sock_target_hostname;
 
        /*
         * Windows uses 5840 for ncacn_ip_tcp,
@@ -347,7 +322,7 @@ static void continue_socket_connect(struct composite_context *ctx)
        conn->srv_max_recv_frag = 5840;
 
        sock->pending_reads = 0;
-       sock->server_name   = strupper_talloc(sock, s->target_hostname);
+       conn->server_name   = strupper_talloc(conn, s->target_hostname);
 
        conn->transport.private_data = sock;