Local communication working
[iotcloud.git] / version2 / src / server / iotquery.cpp
index 64639b39785885bbaf200734180ea317d1b1e178..1e046a365593d32434ea77573802bdf5545acee9 100644 (file)
@@ -208,35 +208,19 @@ void IoTQuery::getSlot() {
 /**
  * The method setSalt handles a setSalt request from the client.
  */
-
 void IoTQuery::setSalt() {
        /* Write the slot data we received to a SLOT file */
        char *filename = getSaltFileName();
-       char * response = new char[1];
-
-       if (access(filename, F_OK) == 0)
-       {
-               /* Already Exists */
-               response[0] = 1;
-       }
-       else
-       {
-               /* Does not exist so create it */
-               int saltfd = open(filename, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
-               doWrite(saltfd, data, length);
-               close(saltfd);
-               response[0] = 0;
-       }
-
-
-       sendResponse(response, 1);
-
+       int saltfd = open(filename, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
+       doWrite(saltfd, data, length);
+       char response[0];
+       sendResponse(response, 0);
+       close(saltfd);
        delete filename;
-       delete response;
 }
 
 /**
- * The method getSalt handles a setSalt request from the client.
+ * The method getSalt handles a getSalt request from the client.
  */
 
 void IoTQuery::getSalt() {
@@ -247,6 +231,8 @@ void IoTQuery::getSalt() {
        if (stat(filename, &st) == 0) {
                filesize = st.st_size;
        } else {
+               char response[0];
+               sendResponse(response, 0);
                delete filename;
                return;
        }
@@ -306,6 +292,7 @@ void IoTQuery::sendResponse(char * bytes, int len) {
             << "Content-Length: " << len << "\r\n"
             << "\r\n";
        cout.write(bytes, len);
+       cout << flush;
 }
 
 /**
@@ -359,8 +346,10 @@ void IoTQuery::removeOldestSlot() {
 void IoTQuery::processQuery() {
        getQuery();
        getDirectory();
+       // readData();
        if (!readData())
        {
+               cerr << "No Data Available" << endl;
                return;
        }
 
@@ -412,19 +401,20 @@ void IoTQuery::processQuery() {
  */
 
 bool IoTQuery::readData() {
-       if (length) {
+       if (length != 0) {
                data = new char[length + 1];
                memset(data, 0, length + 1);
                cin.read(data, length);
        }
+
        do {
                char dummy;
                cin >> dummy;
        } while (!cin.eof());
 
-       if (length)
+       if (length != 0)
        {
-               if (cin.fail())
+               if (cin.gcount() != length)
                {
                        return false;
                }