struct composite_context *ncacn_ip_tcp_req;
struct composite_context *ncacn_unix_req;
struct composite_context *ncalrpc_req;
+ enum dcerpc_transport_t transport;
+ uint32_t flags;
/* dcerpc pipe connect input parameters */
pc.pipe = s->pipe;
pc.creds = s->credentials;
pc.resolve_ctx = lpcfg_resolve_context(s->lp_ctx);
+ transport = dcerpc_binding_get_transport(s->binding);
+ flags = dcerpc_binding_get_flags(s->binding);
+
/* connect dcerpc pipe depending on required transport */
- switch (s->binding->transport) {
+ switch (transport) {
case NCACN_NP:
- if (pc.binding->flags & DCERPC_SMB2) {
+ if (flags & DCERPC_SMB2) {
/* new varient of SMB a.k.a. SMB2 */
ncacn_np_smb2_req = dcerpc_pipe_connect_ncacn_np_smb2_send(c, &pc, s->lp_ctx);
composite_continue(c, ncacn_np_smb2_req, continue_pipe_connect_ncacn_np_smb2, c);
{
struct composite_context *c;
struct pipe_connect_state *s;
+ enum dcerpc_transport_t transport;
+ const char *endpoint = NULL;
/* composite context allocation and setup */
c = composite_create(parent_ctx, ev);
tevent_add_timer(c->event_ctx, c,
timeval_current_ofs(DCERPC_REQUEST_TIMEOUT, 0),
dcerpc_connect_timeout_handler, c);
-
- switch (s->binding->transport) {
- case NCA_UNKNOWN: {
- struct composite_context *binding_req;
- binding_req = dcerpc_epm_map_binding_send(c, s->binding, s->table,
- s->pipe->conn->event_ctx,
- s->lp_ctx);
- composite_continue(c, binding_req, continue_map_binding, c);
- return c;
- }
+ transport = dcerpc_binding_get_transport(s->binding);
+
+ switch (transport) {
case NCACN_NP:
case NCACN_IP_TCP:
case NCALRPC:
- if (!s->binding->endpoint) {
- struct composite_context *binding_req;
- binding_req = dcerpc_epm_map_binding_send(c, s->binding, s->table,
- s->pipe->conn->event_ctx,
- s->lp_ctx);
- composite_continue(c, binding_req, continue_map_binding, c);
- return c;
- }
-
+ endpoint = dcerpc_binding_get_string_option(s->binding, "endpoint");
+ break;
default:
break;
}
+ if (endpoint == NULL) {
+ struct composite_context *binding_req;
+
+ binding_req = dcerpc_epm_map_binding_send(c, s->binding, s->table,
+ s->pipe->conn->event_ctx,
+ s->lp_ctx);
+ composite_continue(c, binding_req, continue_map_binding, c);
+ return c;
+ }
+
continue_connect(c, s);
return c;
}