Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
When connect to a 3G service with weak signal, it may connect
several times. When connman suspend to S3 and resume several
times, function remove_timeout only remove the last timeout event.
This will lead connman crash when connect_timeout invoked by other
timeout event to access previous already freed service.
|
|
Given the following reproduction steps:
1) Set up an access point with a Class B IP address, say
10.2.40.254.
2) Set up the access point to provide DHCP leases over a range
10.2.40.2 through 10.2.40.253.
3) Set up a short lease renewal period of 5-10 minutes.
4) Allow the device to associate, connect and receive an IP
address.
5) Midway through the lease interval, change the access point to a
different IP address, say, 10.2.41.254.
6) Change the access point to issue DHCP leases over a new range,
10.2.41.2 through 10.2.41.253.
7) Watch as the access point resets, the connection is lost, the
connection is regained and as connman tries to get a new DHCP
lease.
Prior to commit 39825846, connman could receive a new but different
DHCP lease but connman would not program the confirmed lease to the
interface.
However, following that commit, it now programs the new, changed DHCP
lease to the interface but still believes the old lease is valid and
attempts to keep servicing the old renewal timeout for the prior but
now stale lease.
This patch cancels any existing, pending DHCP lease renewal timeout
following a DHCP lease configuration change.
|
|
Return and pass a consistent set of informative error codes and
display a consistent set of error messages for
connman_inet_modify_address and connman_{clear,set}_*_address.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Create a complete session, that is with proper notification object.
|
|
|
|
Also add util function for creating the test fixture data structure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dhcp->nameservers can be NULL. This can be triggered with toggling
the technologies switches fast enough.
|
|
|
|
|
|
|
|
|
|
|
|
Clearing the ipconfig fields is not enough, the actual rntl command needs
to be sent for the IP to be cleared.
|
|
When network and service events occur from the bottom up
(e.g. supplicant, link state, etc.) that also incur IP configuration
changes, it is possible for one or more of the notifier counters to
underflow, leaving connman in a state from which it can never recover
without a process restart.
By limiting underflow of the three notifier counters, these non-
recoverable states are prevented.
|
|
When removing a network DHCP configuration, invalidate the DHCP
configuration in addition to releasing it.
This addresses a case in which a lower-level network event (e.g. Wi-Fi
disassociation triggered by the driver due to low signal strength)
causes a service disconnect not triggered by connman but then is
recovered BY connman to reuse the prior DHCP lease configuration but
not actually assign it by simply invalidating the old lease
configuration when connman removes the prior network.
|
|
In the Connection Manager, completion of a valid IP configuration
excites the service state machine to move from the "configuration" to
the "ready" state.
However, the existing implementation of IP configuration completion
explicitly attempts to directly manipulate service state, rather than
hinting at an excitation event.
As a consequence, a late IP configuration completion after the service
state machine has transitioned from "ready" to "online" can lead to an
incorrect transition back to the "ready" state. This causes the
connection count for the technology associated with that service to
increment again, unnecessarily.
This patch avoids this issue by providing a service object interface
that simply hints that an IP configuration is complete for a given IP
type, allowing the service object and its state machine to either hold
fast in the present state, returning an advisory error or advancing,
as before.
All prior invocations of __connman_service_indicate_state outside of
the service module for the CONNMAN_SERVICE_STATE_READY are replaced
with calls to this new interface.
Thanks to Daniel Wagner and Marcel Holtmann for offline IRC discussion
that helped motivate this fix.
* v2: Incorporated feedback from Samuel Ortiz about combining IPv4
and IPv6 states before checking state readiness.
|
|
|
|
Include the reason for skipping the requested network disconnect in
the warning message.
|
|
dhcp_release will be called from the hash table remove callback, if the
network is found.
|
|
|
|
and don't rely on the element code.
|
|
So we don't rely on the connman_device_set/get_string().
|
|
|
|
|
|
|
|
|