Browse Source

[2312] Swap the custom option buffers when all initialized.

Marcin Siodelski 12 years ago
parent
commit
c02e37894d
1 changed files with 6 additions and 3 deletions
  1. 6 3
      src/lib/dhcp/option_custom.cc

+ 6 - 3
src/lib/dhcp/option_custom.cc

@@ -80,7 +80,7 @@ OptionCustom::createBuffers() {
             if (data_size == 0) {
                 isc_throw(OutOfRange, "option buffer truncated");
             }
-            buffers_.push_back(OptionBuffer(data, data + data_size));
+            buffers.push_back(OptionBuffer(data, data + data_size));
             data += data_size;
         }
     } else {
@@ -103,16 +103,17 @@ OptionCustom::createBuffers() {
             // have checked this already.
             assert(data_size > 0);
             do {
-                buffers_.push_back(OptionBuffer(data, data + data_size));
+                buffers.push_back(OptionBuffer(data, data + data_size));
                 data += data_size;
             } while (std::distance(data, data_.end()) >= data_size);
         } else {
             if (data_size == 0) {
                 data_size = std::distance(data, data_.end());
             }
-            buffers_.push_back(OptionBuffer(data, data + data_size));
+            buffers.push_back(OptionBuffer(data, data + data_size));
         }
     }
+    std::swap(buffers_, buffers);
 }
 
 void
@@ -232,6 +233,8 @@ void OptionCustom::setData(const OptionBufferConstIter first,
     // We will copy entire option buffer, so we have to resize data_.
     data_.resize(std::distance(first, last));
     std::copy(first, last, data_.begin());
+
+    createBuffers();
 }
 
 } // end of isc::dhcp namespace