From 83baf33a429395ce5490de09b5b5462b4798d734 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Sat, 20 Dec 2014 12:53:54 +0100
Subject: [PATCH] Fix Padding() packet class (broken after pull request #18)

--HG--
branch : fix-padding-after-pull-request-18
---
 scapy/packet.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/scapy/packet.py b/scapy/packet.py
index 1c530ba4..6c2094f2 100644
--- a/scapy/packet.py
+++ b/scapy/packet.py
@@ -296,6 +296,8 @@ class Packet(BasePacket):
     def __len__(self):
         return len(self.__str__())
     def self_build(self, field_pos_list=None):
+        if self.raw_packet_cache is not None:
+            return self.raw_packet_cache
         p=""
         for f in self.fields_desc:
             val = self.getfieldval(f.name)
@@ -314,10 +316,7 @@ class Packet(BasePacket):
     def do_build(self):
         if not self.explicit:
             self = self.__iter__().next()
-        if self.raw_packet_cache is None:
-            pkt = self.self_build()
-        else:
-            pkt = self.raw_packet_cache
+        pkt = self.self_build()
         for t in self.post_transforms:
             pkt = t(pkt)
         pay = self.do_build_payload()
@@ -1148,7 +1147,8 @@ class Padding(Raw):
     def self_build(self):
         return ""
     def build_padding(self):
-        return self.load+self.payload.build_padding()
+        return (self.load if self.raw_packet_cache is None
+                else self.raw_packet_cache) + self.payload.build_padding()
 
 conf.raw_layer = Raw
 conf.padding_layer = Padding
-- 
GitLab