return NT_STATUS_RPC_PROTOCOL_ERROR;
}
state->allow_incoming = false;
- // TODO...
-
- state->conn->features.bind_done = true;
- state->allow_incoming = true;
break;
case DCERPC_PKT_AUTH3:
if (!state->conn->features.bind_done) {
return NT_STATUS_RPC_PROTOCOL_ERROR;
}
- // TODO...
-
break;
case DCERPC_PKT_ALTER:
if (!state->conn->features.bind_done) {
return NT_STATUS_RPC_PROTOCOL_ERROR;
}
- // TODO...
-
break;
case DCERPC_PKT_REQUEST:
if (!state->conn->features.bind_done) {
return NT_STATUS_RPC_PROTOCOL_ERROR;
}
- // TODO...
-
break;
case DCERPC_PKT_CO_CANCEL:
return NT_STATUS_RPC_PROTOCOL_ERROR;
}
+ // TODO check last_call_id range, here or in the main loop???
+
+ /* Ensure we have the correct type. */
+ switch (pkt->ptype) {
+ case DCERPC_PKT_BIND:
+ // TODO...
+
+ state->conn->features.bind_done = true;
+ state->allow_incoming = true;
+ break;
+
+ case DCERPC_PKT_AUTH3:
+ // TODO...
+
+ break;
+
+ case DCERPC_PKT_ALTER:
+ // TODO...
+
+ break;
+
+ case DCERPC_PKT_REQUEST:
+ // TODO...
+
+ break;
+
+ default:
+ return NT_STATUS_INTERNAL_ERROR;
+ }
+
return NT_STATUS_NOT_IMPLEMENTED;
}