aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngelo Mantellini <manangel@cisco.com>2019-03-15 18:41:01 +0100
committerAngelo Mantellini <manangel@cisco.com>2019-03-15 18:41:01 +0100
commit1a501cd9146907e187899287d49ac57b90d36245 (patch)
treefe188e41d26cd455697f7b0c29d458c6d1edb9a9
parenta1e949253043fe1a644f71cef0572ede30b752be (diff)
[HICN-119] Error when hicn-http-test tries to create tree of folders
Change-Id: Iab3f9d03296c4185467ae08aa2fa4c35a19b6708 Signed-off-by: Angelo Mantellini <manangel@cisco.com>
-rw-r--r--apps/src/http-server/http-server.cc32
-rw-r--r--apps/src/http-server/http-server/http_server.cc4
2 files changed, 32 insertions, 4 deletions
diff --git a/apps/src/http-server/http-server.cc b/apps/src/http-server/http-server.cc
index 7f6f8a3e8..0a224088d 100644
--- a/apps/src/http-server/http-server.cc
+++ b/apps/src/http-server/http-server.cc
@@ -56,6 +56,35 @@ string getFileName(const string &strPath) {
#endif
}
+int _mkdir(const char *dir) {
+ std::cout << dir << std::endl;
+ char tmp[PATH_MAX];
+ char *p = NULL;
+ size_t len;
+
+ snprintf(tmp, sizeof(tmp), "%s", dir);
+ len = strlen(tmp);
+ if (tmp[len - 1] == '/')
+ tmp[len - 1] = 0;
+ for (p = tmp + 1; *p; p++) {
+ if (*p == '/') {
+ *p = 0;
+ if (!(std::ifstream(tmp).good())) {
+ if (mkdir(tmp, S_IRWXU) == -1)
+ return -1;
+ }
+ *p = '/';
+ }
+ }
+
+ if (!(std::ifstream(tmp).good())) {
+ if (mkdir(tmp, S_IRWXU) == -1)
+ return -1;
+ }
+
+ return 0;
+}
+
string getExtension(const string &strPath) {
size_t iLastSeparator = 0;
return strPath.substr((iLastSeparator = strPath.find_last_of(".")) !=
@@ -157,8 +186,7 @@ int main(int argc, char **argv) {
}
}
if (!(std::ifstream(root_folder).good())) {
- if (mkdir(root_folder.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) ==
- -1) {
+ if (_mkdir(root_folder.c_str()) == -1) {
std::cerr << "The web root folder " << root_folder
<< " does not exist and its creation failed. Exiting.."
<< std::endl;
diff --git a/apps/src/http-server/http-server/http_server.cc b/apps/src/http-server/http-server/http_server.cc
index 911656f7a..8c8bea60a 100644
--- a/apps/src/http-server/http-server/http_server.cc
+++ b/apps/src/http-server/http-server/http_server.cc
@@ -226,8 +226,8 @@ void HttpServer::read_request_and_content(std::shared_ptr<socket_type> socket) {
if (!ec) {
// request->streambuf.size() is not necessarily the same as
// bytes_transferred, from Asio-docs: "After a successful
- //async_read_until operation, the streambuf may contain additional
- //data beyond the delimiter" The chosen solution is to extract lines
+ // async_read_until operation, the streambuf may contain additional
+ // data beyond the delimiter" The chosen solution is to extract lines
// from the stream directly when parsing the header. What is left of
// the streambuf (maybe some bytes of the content) is appended to in
// the async_read-function below (for retrieving content).