From 9cb94c0d0753a2250e15c1a7d3b1f598731d9ab2 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Fri, 29 Jan 2016 13:38:02 +0100
Subject: [PATCH] Return Raw() when an exception occurs in .dispatch_hook()

... if not conf.debug_dissector

Idea from @paaguti in pull request #10.
---
 scapy/base_classes.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/scapy/base_classes.py b/scapy/base_classes.py
index 1d499653..83f8bff1 100644
--- a/scapy/base_classes.py
+++ b/scapy/base_classes.py
@@ -210,7 +210,12 @@ class Packet_metaclass(type):
 
     def __call__(cls, *args, **kargs):
         if "dispatch_hook" in cls.__dict__:
-            cls =  cls.dispatch_hook(*args, **kargs)
+            try:
+                cls = cls.dispatch_hook(*args, **kargs)
+            except:
+                if conf.debug_dissector:
+                    raise
+                cls = Raw
         i = cls.__new__(cls, cls.__name__, cls.__bases__, cls.__dict__)
         i.__init__(*args, **kargs)
         return i
-- 
GitLab