diff --git a/headers/os/net/HttpHeaders.h b/headers/os/net/HttpHeaders.h index aa80cfffe2..985d19e902 100644 --- a/headers/os/net/HttpHeaders.h +++ b/headers/os/net/HttpHeaders.h @@ -76,6 +76,7 @@ public: private: void _EraseData(); + bool _AddOrDeleteHeader(BHttpHeader* header); private: BList fHeaderList; diff --git a/src/kits/network/libnetapi/HttpHeaders.cpp b/src/kits/network/libnetapi/HttpHeaders.cpp index 60d83569a2..352f2c1c64 100644 --- a/src/kits/network/libnetapi/HttpHeaders.cpp +++ b/src/kits/network/libnetapi/HttpHeaders.cpp @@ -147,12 +147,11 @@ BHttpHeaders::BHttpHeaders() } -BHttpHeaders::BHttpHeaders(const BHttpHeaders& copy) +BHttpHeaders::BHttpHeaders(const BHttpHeaders& other) : fHeaderList() { - for (int32 i = 0; i < copy.CountHeaders(); i++) - AddHeader(copy.HeaderAt(i).Name(), copy.HeaderAt(i).Value()); + *this = other; } @@ -215,7 +214,7 @@ BHttpHeaders::HasHeader(const char* name) const return i; } - return B_ERROR; + return -1; } @@ -225,28 +224,14 @@ BHttpHeaders::HasHeader(const char* name) const bool BHttpHeaders::AddHeader(const char* line) { - BHttpHeader* heapHeader = new(std::nothrow) BHttpHeader(line); - - if (heapHeader != NULL) { - fHeaderList.AddItem(heapHeader); - return true; - } - - return false; + return _AddOrDeleteHeader(new(std::nothrow) BHttpHeader(line)); } bool BHttpHeaders::AddHeader(const char* name, const char* value) { - BHttpHeader* heapHeader = new(std::nothrow) BHttpHeader(name, value); - - if (heapHeader != NULL) { - fHeaderList.AddItem(heapHeader); - return true; - } - - return false; + return _AddOrDeleteHeader(new(std::nothrow) BHttpHeader(name, value)); } @@ -315,3 +300,15 @@ BHttpHeaders::_EraseData() delete header; } } + + +bool +BHttpHeaders::_AddOrDeleteHeader(BHttpHeader* header) +{ + if (header != NULL) { + if (fHeaderList.AddItem(header)) + return true; + delete header; + } + return false; +}