From 2bd3e5bb069ce6d8493af36347506dfe91c05502 Mon Sep 17 00:00:00 2001
From: Matt Strapp <strap012@umn.edu>
Date: Tue, 17 Nov 2020 21:48:38 -0600
Subject: Finish prelim?

---
 P3/.vscode/launch.json |  2 +-
 P3/server.c            | 24 +++++++++++++++++++-----
 2 files changed, 20 insertions(+), 6 deletions(-)

(limited to 'P3')

diff --git a/P3/.vscode/launch.json b/P3/.vscode/launch.json
index 4f832a7..7efdc59 100644
--- a/P3/.vscode/launch.json
+++ b/P3/.vscode/launch.json
@@ -9,7 +9,7 @@
         "type": "cppdbg",
         "request": "launch",
         "program": "${workspaceFolder}/web_server",
-        "args": ["1025", "testing", "1", "1", "0", "26", "0"],
+        "args": ["9000", "testing", "10", "10", "0", "26", "0"],
         "stopAtEntry": false,
         
         "cwd": "${workspaceFolder}",
diff --git a/P3/server.c b/P3/server.c
index d6bfe43..65ccc15 100644
--- a/P3/server.c
+++ b/P3/server.c
@@ -112,6 +112,8 @@ unsigned long getFileSize(char *file) {
   char* temp = malloc(BUFF_SIZE);
   sprintf(temp, ".%s", file);
   FILE *f = fopen(temp, "r");
+  if (f == NULL)
+    return 0;
   fseek(f, 0, SEEK_END);
   unsigned long len = (unsigned long)ftell(f);
   fclose(f);
@@ -196,22 +198,34 @@ void * worker(void *arg) {
     request->request = Q->request;
     Q = Q->next;
     pthread_mutex_unlock(&Qlock);
+
     // TODO! Get the data from the disk or the cache (extra credit B)
+    numbytes = getFileSize(request->request);
+    char *workerBuf = (char *)calloc(numbytes, sizeof(char));
+    char *bytesError = malloc(BUFF_SIZE); 
+    if (numbytes != 0) {
+      //SUCC
+      sprintf(bytesError, "%ld", numbytes);
+    } else {
+      //ERR
+      sprintf(bytesError, "%s", strerror(errno));
+    }
 
     // Log the request into the file and terminal
     pthread_mutex_lock(&logLock);
     FILE* log = fopen("../webserver_log", "a");
-    fprintf(log, "[%d][%lld][%d][%s][%s][%s]\n", id, ++numReqs, request->fd, request->request, "Bytes/Error", "CACHE");
-    printf("[%d][%lld][%d][%s][%s][%s]\n", id, numReqs, request->fd, request->request, "Bytes/Error", "CACHE");
+    fprintf(log, "[%d][%lld][%d][%s][%s][%s]\n", id, ++numReqs, request->fd, request->request, bytesError, "CACHE");
+    printf("[%d][%lld][%d][%s][%s][%s]\n", id, numReqs, request->fd, request->request, bytesError, "CACHE");
     fclose(log);
     pthread_mutex_unlock(&logLock);
-    
+    free(bytesError);
+
     // Return the result
-    numbytes = getFileSize(request->request);
-    char *workerBuf = (char *) calloc(numbytes, sizeof(char));
     if (readFromDisk(request->request, workerBuf, numbytes) != 0) {
+      //ERR
       return_error(request->fd, request->request);
     } else {
+      //SUCC
       return_result(request->fd, getContentType(request->request), workerBuf, numbytes);
     }
     free(request);
-- 
cgit v1.2.3