session = talloc_get_type_abort(ptr, struct smbXsrv_session);
session->db_rec = local_rec;
-
status = smbXsrv_session_clear_and_logoff(session);
+ session->db_rec = NULL;
if (!NT_STATUS_IS_OK(status)) {
if (NT_STATUS_IS_OK(state->first_status)) {
state->first_status = status;
TDB_DATA val;
void *ptr = NULL;
struct smbXsrv_session *session = NULL;
+ int ret;
val = dbwrap_record_get_value(local_rec);
if (val.dsize != sizeof(ptr)) {
memcpy(&ptr, val.dptr, val.dsize);
session = talloc_get_type_abort(ptr, struct smbXsrv_session);
+
session->db_rec = local_rec;
+ ret = state->caller_cb(session, state->caller_data);
+ session->db_rec = NULL;
- return state->caller_cb(session, state->caller_data);
+ return ret;
}
struct smbXsrv_session_disconnect_xconn_state {
state->first_status = status;
}
state->errors++;
+ session->db_rec = NULL;
return 0;
}
ARRAY_DEL_ELEMENT(global->channels, n, global->num_channels);
state->errors++;
}
+ session->db_rec = NULL;
return 0;
}