Index: src/django_gheat/gheat/dataimport/__init__.py
===================================================================
--- src/django_gheat/gheat/dataimport/__init__.py	(revision 9667)
+++ src/django_gheat/gheat/dataimport/__init__.py	(revision 9668)
@@ -162,16 +162,24 @@
     }
 
+  if os.path.getsize(filename) == 0:
+    logger.error("Cannot parse empty files")
+    return counters
+    
   fh = open_file(filename)
-  if 'ns1' in filename:
-    (counters, ap_pool, client_pool, meting_pool) = netstumbler.process_ns1(fh, counters)
-  elif 'gpsxml' in filename:
-    (counters, ap_pool, client_pool, meting_pool) = kismet.process_gpsxml(fh, counters)
-  elif 'netxml' in filename:
-    (counters, ap_pool, client_pool, meting_pool) = kismet.process_netxml(fh, counters)
-  elif 'ScanResult' in filename:
-    (counters, ap_pool, client_pool, meting_pool) = droidstumbler.process_csv(fh, counters)
-  else:
-    (ap_pool, client_pool, meting_pool) = (None, None, None)
-    logger.error("file '%s' format not recognized")
+  try:
+    if 'ns1' in filename:
+      (counters, ap_pool, client_pool, meting_pool) = netstumbler.process_ns1(fh, counters)
+    elif 'gpsxml' in filename:
+      (counters, ap_pool, client_pool, meting_pool) = kismet.process_gpsxml(fh, counters)
+    elif 'netxml' in filename:
+      (counters, ap_pool, client_pool, meting_pool) = kismet.process_netxml(fh, counters)
+    elif 'ScanResult' in filename:
+      (counters, ap_pool, client_pool, meting_pool) = droidstumbler.process_csv(fh, counters)
+    else:
+      (ap_pool, client_pool, meting_pool) = (None, None, None)
+      logger.error("file '%s' format not recognized")
+  except IOError, e:
+    logger.error("File invalid: %s", e)
+    return counters
 
   if ap_pool:
Index: src/django_gheat/gheat/dataimport/kismet.py
===================================================================
--- src/django_gheat/gheat/dataimport/kismet.py	(revision 9667)
+++ src/django_gheat/gheat/dataimport/kismet.py	(revision 9668)
@@ -12,5 +12,8 @@
 
 def process_netxml(fh,counters):
-  netxml_doc = etree.parse(fh)
+  try:
+    netxml_doc = etree.parse(fh)
+  except etree.XMLSyntaxError, e:
+    raise IOError(e)
 
   # Prepare new accespoints and measurements
@@ -45,5 +48,8 @@
 
 def process_gpsxml(fh,counters):
-  gpsxml_doc = etree.parse(fh)
+  try:
+    gpsxml_doc = etree.parse(fh)
+  except etree.XMLSyntaxError, e:
+    raise IOError(e)
 
   bssid_failed = defaultdict(int)
