Verbesserte Fehlerbehandlung für DeviceScanner-Initialisierung [PATCH]

View: New views
2 Messages — Rating Filter:   Alert me  

Verbesserte Fehlerbehandlung für DeviceScanner-Initialisierung [PATCH]

by Micha Lenk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Martin,

wenn der HAL-Daemon nicht läuft, kommt es beim Starten und Beenden des
chipcardd4 Daemons zu komischen Fehlermeldungen (vgl. Debian Bug
http://bugs.debian.org/524320), die daher rühren, dass der Fall, dass
die *Scanner_new()-Funktionen auch NULL zurück liefern können, nicht
abgefangen wird. Der angehängte Patch (applizierbar auf SVN-Trunk mit
"patch -p1 < datei") behebt das Problem (und ist im Debian-Paket
libchipcard 4.2.7-2 enthalten).

Schöne Grüße
  Micha

#! /bin/sh /usr/share/dpatch/dpatch-run
## 40_scanner_init_improved_error_handling.dpatch by Micha Lenk <micha@...>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Fix error handling for device scanners failing to initialize
## DP: Fix for Debian Bug #524320

@DPATCH@

--- a/src/lib/server/server/devicemanager/devicemanager.c (Revision 520)
+++ b/src/lib/server/server/devicemanager/devicemanager.c (Arbeitskopie)
@@ -248,32 +248,42 @@
 #ifdef USE_HAL
     DBG_INFO(0, "Adding HAL scanner");
     scanner=LC_HalScanner_new();
-    LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-    scanners++;
+    if (scanner) {
+      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+      scanners++;
+    }
 #else
     if (dm->disablePciScan==0) {
       DBG_INFO(0, "Adding PCI bus scanner");
       scanner=LC_PciScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
     if (dm->disablePcmciaScan==0) {
       DBG_INFO(0, "Adding PCMCIA bus scanner");
       scanner=LC_PcmciaScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
     if (dm->disableUsbRawScan==0) {
       DBG_INFO(0, "Adding USB bus scanner");
       scanner=LC_UsbRawScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
     if (dm->disableUsbTtyScan==0) {
       DBG_INFO(0, "Adding USB TTY bus scanner");
       scanner=LC_UsbTtyScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
 #endif
     dm->lastHardwareScan=0;
--- a/src/lib/server/common/halscanner.c (Revision 520)
+++ b/src/lib/server/common/halscanner.c (Arbeitskopie)
@@ -83,7 +83,10 @@
   DBG_INFO(0, "Closing HAL scanner");
 
   dbus_error_free(&(xsc->dbus_error));
-  dbus_connection_unref(xsc->dbus_conn);
+  if (xsc->dbus_conn) {
+    dbus_connection_unref(xsc->dbus_conn);
+    xsc->dbus_conn = NULL;
+  }
   /*libhal_ctx_shutdown(ctx, NULL);*/
   libhal_ctx_free(xsc->ctx);
 


------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today.
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
Libchipcard-devel mailing list
Libchipcard-devel@...
https://lists.sourceforge.net/lists/listinfo/libchipcard-devel

signature.asc (268 bytes) Download Attachment

Re: Verbesserte Fehlerbehandlung für DeviceScanner-Initialisierung [PATCH]

by Micha Lenk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hallo Martin,

Micha Lenk schrieb:
> wenn der HAL-Daemon nicht läuft, kommt es beim Starten und Beenden des
> chipcardd4 Daemons zu komischen Fehlermeldungen (vgl. Debian Bug
> http://bugs.debian.org/524320), die daher rühren, dass der Fall, dass
> die *Scanner_new()-Funktionen auch NULL zurück liefern können, nicht
> abgefangen wird. Der angehängte Patch (applizierbar auf SVN-Trunk mit
> "patch -p1 < datei") behebt das Problem (und ist im Debian-Paket
> libchipcard 4.2.7-2 enthalten).

Ich würde mich freuen, wenn der Patch ins SVN übernommen wird.

Schöne Grüße
  Micha

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Libchipcard-devel mailing list
Libchipcard-devel@...
https://lists.sourceforge.net/lists/listinfo/libchipcard-devel