Re: NM 0.7.1 leaves open fd of /dev/tts/USB2 after disconnect
- From: Dan Williams <dcbw redhat com>
- To: Valmantas Palikša <walmis gmail com>
- Cc: networkmanager-list gnome org
- Subject: Re: NM 0.7.1 leaves open fd of /dev/tts/USB2 after disconnect
- Date: Wed, 01 Jul 2009 07:48:13 -0400
On Wed, 2009-07-01 at 11:29 +0300, Valmantas Palikša wrote:
> On Tue, 2009-06-30 at 17:51 -0400, Dan Williams wrote:
> > On Wed, 2009-06-24 at 22:26 +0300, Valmantas Palikša wrote:
> > > Done some digging and found out that NM opens the device twice. This
> > > very often leads to kernel panics here if the device connects multiple
> > > times or is pluged/unpluged when the descriptor is left open. Probably
> > > some bug in the kernel somewhere..
> >
> > Yes, it is, and I think 2.6.31 should fix that, but I had thought that
> > 2d93148ab6988cad872e65d694c95e8944e1b626 in 2.6.30 would have done so.
> >
> > So you've got two issues here, the first is that NM is finding two
> > ports, not one. I'd expect NM 0.7.1 to do OK here, see my recent post
> > on the ZTE thing a bit earlier today. There may be a (already fixed)
> > bug with HAL 'info.bus' handling that you can test by dropping that fdi
> > file into the right place.
> >
>
> NM applet shows 2 ports:
>
> NetworkManager: <info> (tts/USB2): found serial port (udev:GSM
> hal:GSM)
> NetworkManager: <info> (tts/USB2): new Modem device (driver: 'option')
> NetworkManager: <info> (tts/USB2): exported
> as /org/freedesktop/Hal/devices/usb_device_19d2_31_1234567890ABCDEF_if3_serial_usb_0
> NetworkManager: <info> (tts/USB0): ignoring due to lack of mobile
> broadband capabilties
> NetworkManager: <info> (tts/USB2): device state change: 1 -> 2
> NetworkManager: <info> (tts/USB2): deactivating device (reason: 2).
> NetworkManager: nm_system_device_flush_ip4_routes_with_iface: assertion
> `iface_idx >= 0' failed
> NetworkManager: nm_system_device_flush_ip4_addresses_with_iface:
> assertion `iface_idx >= 0' failed
> NetworkManager: <info> (tts/USB2): device state change: 2 -> 3
> NetworkManager: <info> (tts/USB1): found serial port (udev:GSM hal:)
> NetworkManager: <info> (tts/USB1): deferring until all ports found
> NetworkManager: <info> Re-checking deferred serial ports
> NetworkManager: <info> (tts/USB1): new Modem device (driver: 'option')
> NetworkManager: <info> (tts/USB1): exported
> as /org/freedesktop/Hal/devices/usb_device_19d2_31_1234567890ABCDEF_if1_serial_usb_0
> NetworkManager: <info> (tts/USB1): device state change: 1 -> 2
> NetworkManager: <info> (tts/USB1): deactivating device (reason: 2).
> NetworkManager: nm_system_device_flush_ip4_routes_with_iface: assertion
> `iface_idx >= 0' failed
> NetworkManager: nm_system_device_flush_ip4_addresses_with_iface:
> assertion `iface_idx >= 0' failed
> NetworkManager: <info> (tts/USB1): device state change: 2 -> 3
>
> Got it fixed by using this udev rule:
> ACTION!="add|change", GOTO="nm_modem_probe_end"
> SUBSYSTEM!="tty", GOTO="nm_modem_probe_end"
>
> ENV{NM_MODEM_USB_INTERFACE_NUMBER}=="01", ENV{ID_VENDOR_ID}=="19d2",
> ENV{ID_MODEL_ID}=="0031", ENV{ID_NM_MODEM_GSM}="0"
>
> LABEL="nm_modem_probe_end"
>
> EDIT:
> dropped the deprecated keys fdi file and it seems it now detects 1 port
> correctly.
>
>
>
> > But yes, NM appears to re-open the port. We should be closing it when
> > requesting secrets since it may be a long time before secrets come back.
> > Can you try they attached patch and let me know if it fixes the issue?
> >
>
> Hmm, something's wrong with the patch, can't connect at all:
Try the attached patch as a replacement for what you've already got, the
fd wasn't correctly initialized to -1.
Next, can you run NM with
NM_PPP_DEBUG=1 NM_SERIAL_DEBUG=1 /usr/sbin/NetworkManager --no-daemon
(ie, add NM_PPP_DEBUG=1 to what you've already got)
Thanks,
Dan
> NetworkManager: <info> (tts/USB2): found serial port (udev:GSM
> hal:GSM)
> NetworkManager: <info> (tts/USB2): new Modem device (driver: 'option')
> NetworkManager: <info> (tts/USB2): exported
> as /org/freedesktop/Hal/devices/usb_device_19d2_31_1234567890ABCDEF_if3_serial_usb_0
> NetworkManager: <info> (tts/USB0): ignoring due to lack of mobile
> broadband capabilties
> NetworkManager: <info> (tts/USB2): device state change: 1 -> 2
> NetworkManager: <info> (tts/USB2): deactivating device (reason: 2).
> NetworkManager: nm_system_device_flush_ip4_routes_with_iface: assertion
> `iface_idx >= 0' failed
> NetworkManager: nm_system_device_flush_ip4_addresses_with_iface:
> assertion `iface_idx >= 0' failed
> NetworkManager: <info> (tts/USB2): device state change: 2 -> 3
> NetworkManager: <info> Activation (tts/USB2) starting connection 'Omni
> Connect'
> NetworkManager: <info> (tts/USB2): device state change: 3 -> 4
> NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> Prepare) scheduled...
> NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> Prepare) started...
> NetworkManager: <debug> [1246435879.217633] nm_serial_device_open():
> (tts/USB2) bug: device already open
> NetworkManager: <debug> [1246435879.217670] nm_serial_device_open():
> (tts/USB2) opening device...
> NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> Prepare) complete.
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (1)
> NetworkManager: <info> (tts/USB1): ignoring due to lack of mobile
> broadband capabilties
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (2)
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (3)
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (4)
> NetworkManager: <info> (tts/USB2): GSM pin secret required
> NetworkManager: <info> (tts/USB2): device state change: 4 -> 6
> NetworkManager: <debug> [1246435887.061857] nm_serial_device_close():
> Closing device 'tts/USB2'
> NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> Prepare) scheduled...
> NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> Prepare) started...
> NetworkManager: <info> (tts/USB2): device state change: 6 -> 4
> NetworkManager: <debug> [1246435887.066475] nm_serial_device_open():
> (tts/USB2) bug: device already open
> NetworkManager: <debug> [1246435887.066503] nm_serial_device_open():
> (tts/USB2) opening device...
> NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> Prepare) complete.
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (1)
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (2)
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (3)
> NetworkManager: <WARN> init_done(): Trying alternate modem
> initialization (4)
> NetworkManager: <info> (tts/USB2): powering up...
> NetworkManager: <info> Searching for a network...
> NetworkManager: <info> Searching for a network...
> NetworkManager: <info> Registered on Home network
> NetworkManager: <info> Associated with network: +COPS: 0,1,"OMT",2
> NetworkManager: <info> Connected, Woo!
> NetworkManager: <info> Activation (tts/USB2) Stage 2 of 5 (Device
> Configure) scheduled...
> NetworkManager: <info> Activation (tts/USB2) Stage 2 of 5 (Device
> Configure) starting...
> NetworkManager: <info> (tts/USB2): device state change: 4 -> 5
> NetworkManager: <info> Starting pppd connection
> NetworkManager: <debug> [1246435894.109089] nm_ppp_manager_start():
> Command line: /usr/sbin/pppd nodetach lock nodefaultroute tts/USB2
> noipdefault noauth refuse-eap refuse-pap refuse-chap refuse-mschap
> refuse-mschap-v2 usepeerdns lcp-echo-failure 0 lcp-echo-interval 0
> ipparam /org/freedesktop/NetworkManager/PPP/0
> plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so
> Plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so loaded.
> NetworkManager: <debug> [1246435894.125042] nm_ppp_manager_start(): ppp
> started with pid 2143
> Using interface ppp0
> Connect: ppp0 <--> /dev/tts/USB2
> NetworkManager: <info> Activation (tts/USB2) Stage 2 of 5 (Device
> Configure) complete.
> NetworkManager: <info> (tts/USB2): device state change: 5 -> 6
> Terminating on signal 15
> NetworkManager: <debug> [1246435894.159214] nm_serial_device_close():
> Closing device 'tts/USB2'
> Connection terminated.
> NetworkManager: <debug> [1246435896.000993] ensure_killed(): waiting for
> ppp pid 2143 to exit
> NetworkManager: <debug> [1246435896.001139] ensure_killed(): ppp pid
> 2143 cleaned up
>
>
> > Dan
> >
> > > Kernel: 2.6.30
> > > NM: 0.7.1
> > > Modem: ZTE MF633 (0x19d2 0x0031)
> > >
> > > My temporary patch:
> > >
> > > --- nm-gsm-device.old.c 2009-04-13 01:29:59.000000000 +0300
> > > +++ nm-gsm-device.c 2009-06-24 22:17:58.039782740 +0300
> > > @@ -823,6 +823,11 @@
> > >
> > > setting = NM_SETTING_SERIAL (gsm_device_get_setting (NM_GSM_DEVICE
> > > (device), NM_TYPE_SETTING_SERIAL));
> > >
> > > + if(NM_GSM_DEVICE_GET_PRIVATE (device)->init_ok) {
> > > + nm_warning("BUG: Closing previous connection");
> > > + nm_serial_device_close (serial_device);
> > > + }
> > > +
> > > if (!nm_serial_device_open (serial_device, setting)) {
> > > *reason = NM_DEVICE_STATE_REASON_CONFIG_FAILED;
> > > return NM_ACT_STAGE_RETURN_FAILURE;
> > >
> > > Also the log:
> > >
> > > NetworkManager: <info> (tts/USB2): device state change: 2 -> 3
> > > NetworkManager: <info> (tts/USB1): found serial port (udev:GSM hal:)
> > > NetworkManager: <info> (tts/USB1): deferring until all ports found
> > > NetworkManager: <info> Activation (tts/USB2) starting connection 'Omni
> > > Connect'
> > > NetworkManager: <info> (tts/USB2): device state change: 3 -> 4
> > > NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> > > Prepare) scheduled...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> > > Prepare) started...
> > > NetworkManager: <WARN> real_act_stage1_prepare(): Stage1 0xf64010 0
> > > NetworkManager: <debug> [1245870737.912363] nm_serial_device_open():
> > > (tts/USB2) opening device...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> > > Prepare) complete.
> > > NetworkManager: <info> Re-checking deferred serial ports
> > > NetworkManager: <info> (tts/USB1): new Modem device (driver: 'option')
> > > NetworkManager: <info> (tts/USB1): exported
> > > as /org/freedesktop/Hal/devices/usb_device_19d2_31_1234567890ABCDEF_if1_serial_usb_0
> > > NetworkManager: <debug> [1245870738.017629] nm_serial_debug(): Sending:
> > > 'ATZ E0 V1 X4 &C1 +FCLASS=0
> > > '
> > > NetworkManager: <debug> [1245870738.075007] nm_serial_debug(): Got: 'ATZ
> > > E0 V1 X4 &C1 +FCLASS=0'
> > > NetworkManager: <debug> [1245870738.086523] nm_serial_debug(): Got: 'ATZ
> > > E0 V1 X4 &C1 +FCLASS=0
> > >
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (1)
> > > NetworkManager: <debug> [1245870739.001616] nm_serial_debug(): Sending:
> > > 'ATZ E0 V1 &C1
> > > '
> > > NetworkManager: <debug> [1245870739.046540] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (2)
> > > NetworkManager: <debug> [1245870740.001537] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1 X4 &C1 +FCLASS=0
> > > '
> > > NetworkManager: <debug> [1245870740.073194] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (3)
> > > NetworkManager: <debug> [1245870741.001280] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1 &C1
> > > '
> > > NetworkManager: <debug> [1245870741.043247] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (4)
> > > NetworkManager: <info> (tts/USB1): device state change: 1 -> 2
> > > NetworkManager: <info> (tts/USB1): deactivating device (reason: 2).
> > > NetworkManager: nm_system_device_flush_ip4_routes_with_iface: assertion
> > > `iface_idx >= 0' failed
> > > NetworkManager: nm_system_device_flush_ip4_addresses_with_iface:
> > > assertion `iface_idx >= 0' failed
> > > NetworkManager: <debug> [1245870742.008830] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1
> > > '
> > > NetworkManager: <info> (tts/USB1): device state change: 2 -> 3
> > > NetworkManager: <debug> [1245870742.043197] nm_serial_debug(): Got: '
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <debug> [1245870742.043300] nm_serial_debug(): Sending:
> > > 'AT+CPIN?
> > > '
> > > NetworkManager: <debug> [1245870742.073198] nm_serial_debug(): Got: '
> > >
> > > +CPIN: SIM PIN
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <info> (tts/USB2): GSM pin secret required
> > > NetworkManager: <info> (tts/USB2): device state change: 4 -> 6
> > > NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> > > Prepare) scheduled...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> > > Prepare) started...
> > > NetworkManager: <info> (tts/USB2): device state change: 6 -> 4
> > > NetworkManager: <WARN> real_act_stage1_prepare(): Stage1 0xf64010 1
> > > NetworkManager: <WARN> real_act_stage1_prepare(): BUG: Closing previous
> > > connection
> > > NetworkManager: <debug> [1245870742.083547] nm_serial_device_close():
> > > Closing device 'tts/USB2'
> > > NetworkManager: <debug> [1245870742.085062] nm_serial_device_open():
> > > (tts/USB2) opening device...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 1 of 5 (Device
> > > Prepare) complete.
> > > NetworkManager: <debug> [1245870742.189500] nm_serial_debug(): Sending:
> > > 'ATZ E0 V1 X4 &C1 +FCLASS=0
> > > '
> > > NetworkManager: <debug> [1245870742.263205] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (1)
> > > NetworkManager: <debug> [1245870744.000128] nm_serial_debug(): Sending:
> > > 'ATZ E0 V1 &C1
> > > '
> > > NetworkManager: <debug> [1245870744.043202] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (2)
> > > NetworkManager: <debug> [1245870745.001327] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1 X4 &C1 +FCLASS=0
> > > '
> > > NetworkManager: <debug> [1245870745.073348] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (3)
> > > NetworkManager: <debug> [1245870746.001424] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1 &C1
> > > '
> > > NetworkManager: <debug> [1245870746.046530] nm_serial_debug(): Got: '
> > >
> > > ERROR
> > >
> > > '
> > > NetworkManager: <WARN> init_done(): Trying alternate modem
> > > initialization (4)
> > > NetworkManager: <debug> [1245870747.001170] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1
> > > '
> > > NetworkManager: <debug> [1245870747.036539] nm_serial_debug(): Got: '
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <debug> [1245870747.036647] nm_serial_debug(): Sending:
> > > 'AT+CPIN?
> > > '
> > > NetworkManager: <debug> [1245870747.066536] nm_serial_debug(): Got: '
> > >
> > > +CPIN: SIM PIN
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <debug> [1245870747.066661] nm_serial_debug(): Sending:
> > > 'AT+CPIN="6486"
> > > '
> > > NetworkManager: <debug> [1245870747.206678] nm_serial_debug(): Got: '
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <debug> [1245870747.206787] nm_serial_debug(): Sending:
> > > 'AT&F E0 V1
> > > '
> > > NetworkManager: <debug> [1245870747.239868] nm_serial_debug(): Got: '
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <info> (tts/USB2): powering up...
> > > NetworkManager: <debug> [1245870747.239981] nm_serial_debug(): Sending:
> > > 'AT+CFUN=1
> > > '
> > > NetworkManager: <debug> [1245870747.273203] nm_serial_debug(): Got: '
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <debug> [1245870747.273295] nm_serial_debug(): Sending:
> > > 'AT+CGMM
> > > '
> > > NetworkManager: <debug> [1245870747.303212] nm_serial_debug(): Got: '
> > >
> > > MF633
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <debug> [1245870747.303328] nm_serial_debug(): Sending:
> > > 'AT+CREG?
> > > '
> > > NetworkManager: <debug> [1245870747.333206] nm_serial_debug(): Got: '
> > >
> > > +CREG: 0,2
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <info> Searching for a network...
> > > NetworkManager: <debug> [1245870749.000070] nm_serial_debug(): Sending:
> > > 'AT+CREG?
> > > '
> > > NetworkManager: <debug> [1245870749.083204] nm_serial_debug(): Got: '
> > >
> > > +CREG: 0,2
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <info> Searching for a network...
> > > NetworkManager: <debug> [1245870750.001634] nm_serial_debug(): Sending:
> > > 'AT+CREG?
> > > '
> > > NetworkManager: <debug> [1245870750.023357] nm_serial_debug(): Got: '
> > >
> > > +ZDONR: "OMT",246,1,"CS_ONLY","ROAM_OFF"
> > >
> > >
> > >
> > > +ZPASR: "UMTS"
> > >
> > > '
> > > NetworkManager: <debug> [1245870750.036873] nm_serial_debug(): Got: '
> > >
> > > +ZDONR: "OMT",246,1,"CS_ONLY","ROAM_OFF"
> > >
> > >
> > >
> > > +ZPASR: "UMTS"
> > >
> > >
> > >
> > > +CREG: 0,1
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <info> Registered on Home network
> > > NetworkManager: <debug> [1245870750.037021] nm_serial_debug(): Sending:
> > > 'AT+COPS?
> > > '
> > > NetworkManager: <debug> [1245870750.066538] nm_serial_debug(): Got: '
> > >
> > > +COPS: 0,1,"OMT",2
> > >
> > >
> > >
> > > OK
> > >
> > > '
> > > NetworkManager: <info> Associated with network: +COPS: 0,1,"OMT",2
> > > NetworkManager: <debug> [1245870750.066685] nm_serial_debug(): Sending:
> > > 'ATDT*99#
> > > '
> > > NetworkManager: <debug> [1245870750.096538] nm_serial_debug(): Got: '
> > >
> > > CONNECT
> > >
> > > '
> > > NetworkManager: <info> Connected, Woo!
> > > NetworkManager: <info> Activation (tts/USB2) Stage 2 of 5 (Device
> > > Configure) scheduled...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 2 of 5 (Device
> > > Configure) starting...
> > > NetworkManager: <info> (tts/USB2): device state change: 4 -> 5
> > > NetworkManager: <info> Starting pppd connection
> > > NetworkManager: <debug> [1245870750.106860] nm_ppp_manager_start():
> > > Command line: /usr/sbin/pppd nodetach lock nodefaultroute tts/USB2
> > > noipdefault noauth refuse-eap refuse-pap refuse-chap refuse-mschap
> > > refuse-mschap-v2 usepeerdns lcp-echo-failure 0 lcp-echo-interval 0
> > > ipparam /org/freedesktop/NetworkManager/PPP/0
> > > plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so
> > > Plugin /usr/lib/pppd/2.4.4/nm-pppd-plugin.so loaded.
> > > NetworkManager: <debug> [1245870750.121755] nm_ppp_manager_start(): ppp
> > > started with pid 27105
> > > Using interface ppp0
> > > Connect: ppp0 <--> /dev/tts/USB2
> > > NetworkManager: <info> Activation (tts/USB2) Stage 2 of 5 (Device
> > > Configure) complete.
> > > NetworkManager: <info> (tts/USB2): device state change: 5 -> 6
> > > NetworkManager: <info> (tts/USB2): device state change: 6 -> 7
> > > Could not determine remote IP address: defaulting to 10.64.64.64
> > > Cannot determine ethernet address for proxy ARP
> > > local IP address 10.123.21.99
> > > remote IP address 10.64.64.64
> > > primary DNS address 10.11.12.13
> > > secondary DNS address 10.11.12.14
> > > NetworkManager: <info> PPP manager(IP Config Get) reply received.
> > > NetworkManager: <info> Activation (tts/USB2) Stage 4 of 5 (IP Configure
> > > Get) scheduled...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 4 of 5 (IP Configure
> > > Get) started...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 5 of 5 (IP Configure
> > > Commit) scheduled...
> > > NetworkManager: <info> Activation (tts/USB2) Stage 4 of 5 (IP Configure
> > > Get) complete.
> > > NetworkManager: <info> Activation (tts/USB2) Stage 5 of 5 (IP Configure
> > > Commit) started...
> > > NetworkManager: <info> (tts/USB2): device state change: 7 -> 8
> > > NetworkManager: <info> Policy set 'Omni Connect' (ppp0) as default for
> > > routing and DNS.
> > > NetworkManager: <info> Activation (tts/USB2) successful, device
> > > activated.
> > > NetworkManager: <info> Activation (tts/USB2) Stage 5 of 5 (IP Configure
> > > Commit) complete.
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > NetworkManager-list mailing list
> > > NetworkManager-list gnome org
> > > http://mail.gnome.org/mailman/listinfo/networkmanager-list
>
> _______________________________________________
> NetworkManager-list mailing list
> NetworkManager-list gnome org
> http://mail.gnome.org/mailman/listinfo/networkmanager-list
diff --git a/src/nm-cdma-device.c b/src/nm-cdma-device.c
index 0de39a7..c2340bb 100644
--- a/src/nm-cdma-device.c
+++ b/src/nm-cdma-device.c
@@ -465,6 +465,7 @@ device_state_changed (NMDeviceInterface *device,
case NM_DEVICE_STATE_UNAVAILABLE:
case NM_DEVICE_STATE_FAILED:
case NM_DEVICE_STATE_DISCONNECTED:
+ case NM_DEVICE_STATE_NEED_AUTH:
nm_serial_device_close (NM_SERIAL_DEVICE (self));
break;
default:
diff --git a/src/nm-gsm-device.c b/src/nm-gsm-device.c
index cc83d1a..156902c 100644
--- a/src/nm-gsm-device.c
+++ b/src/nm-gsm-device.c
@@ -1076,6 +1076,7 @@ device_state_changed (NMDeviceInterface *device,
case NM_DEVICE_STATE_UNAVAILABLE:
case NM_DEVICE_STATE_FAILED:
case NM_DEVICE_STATE_DISCONNECTED:
+ case NM_DEVICE_STATE_NEED_AUTH:
nm_serial_device_close (NM_SERIAL_DEVICE (self));
break;
default:
diff --git a/src/nm-serial-device.c b/src/nm-serial-device.c
index ad481d3..bc3663f 100644
--- a/src/nm-serial-device.c
+++ b/src/nm-serial-device.c
@@ -391,6 +391,12 @@ nm_serial_device_open (NMSerialDevice *device,
priv = NM_SERIAL_DEVICE_GET_PRIVATE (device);
iface = nm_device_get_iface (NM_DEVICE (device));
+ if (priv->fd >= 0) {
+ nm_debug ("(%s) bug: device already open", iface);
+ nm_serial_device_close (device);
+ priv->fd = -1;
+ }
+
nm_debug ("(%s) opening device...", iface);
path = g_build_filename ("/dev", iface, NULL);
@@ -447,7 +453,7 @@ nm_serial_device_close (NMSerialDevice *device)
tcsetattr (priv->fd, TCSANOW, &priv->old_t);
close (priv->fd);
- priv->fd = 0;
+ priv->fd = -1;
}
}
@@ -1133,6 +1139,8 @@ nm_serial_device_init (NMSerialDevice *self)
{
if (getenv ("NM_SERIAL_DEBUG"))
serial_debug = TRUE;
+
+ NM_SERIAL_DEVICE_GET_PRIVATE (self)->fd = -1;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]