};
struct service_entry {
+ /* track why this service was selected */
+ enum connman_session_reason reason;
struct connman_service *service;
};
enum connman_session_roaming_policy roaming_policy;
unsigned int marker;
- /* track why this service was selected */
- enum connman_session_reason reason;
struct service_entry *entry;
};
g_sequence_free(session->service_list);
if (info->entry != NULL &&
- info->reason == CONNMAN_SESSION_REASON_CONNECT) {
+ info->entry->reason == CONNMAN_SESSION_REASON_CONNECT) {
__connman_service_disconnect(info->entry->service);
}
{
struct session_info *info = &session->info;
- if (explicit_connect(info->reason) == FALSE)
+ if (explicit_connect(info->entry->reason) == FALSE)
goto out;
if (__connman_service_session_dec(info->entry->service) == TRUE)
__connman_service_disconnect(info->entry->service);
out:
- info->reason = CONNMAN_SESSION_REASON_UNKNOWN;
info->entry = NULL;
}
test_and_disconnect(session);
if (entry != NULL) {
- info->reason = reason;
info->entry = entry;
+ info->entry->reason = reason;
if (explicit_connect(reason) == TRUE)
__connman_service_session_inc(info->entry->service);
break;
case CONNMAN_SESSION_TRIGGER_CONNECT:
if (info->online == TRUE) {
- info->reason = CONNMAN_SESSION_REASON_CONNECT;
+ info->entry->reason = CONNMAN_SESSION_REASON_CONNECT;
__connman_service_session_inc(info->entry->service);
break;
}
break;
case CONNMAN_SESSION_TRIGGER_PERIODIC:
if (info->online == TRUE) {
- info->reason = CONNMAN_SESSION_REASON_PERIODIC;
+ info->entry->reason = CONNMAN_SESSION_REASON_PERIODIC;
__connman_service_session_inc(info->entry->service);
break;
}
if (entry == NULL)
return entry;
+ entry->reason = CONNMAN_SESSION_REASON_UNKNOWN;
entry->service = service;
return entry;
info->roaming_policy = roaming_policy;
info->entry = NULL;
info->marker = 0;
- info->reason = CONNMAN_SESSION_REASON_UNKNOWN;
if (allowed_bearers == NULL) {
info->allowed_bearers =
info_last->roaming_policy = info->roaming_policy;
info_last->entry = info->entry;
info_last->marker = info->marker;
- info_last->reason = info->reason;
info_last->allowed_bearers = info->allowed_bearers;
update_info(info_last);