various changes

- added silent_mode for benchmarking
- fixed compiler errors
- moved variables to globals.h
This commit is contained in:
Godmar Back 2018-04-23 22:32:12 -04:00
parent 36f9faebfe
commit 94c94ca6de
7 changed files with 32 additions and 16 deletions

View File

@ -2,7 +2,7 @@ DEP_BASE_DIR=../deps
DEP_INCLUDE_DIR=$(DEP_BASE_DIR)/include DEP_INCLUDE_DIR=$(DEP_BASE_DIR)/include
DEP_LIB_DIR=$(abspath $(DEP_BASE_DIR)/lib) DEP_LIB_DIR=$(abspath $(DEP_BASE_DIR)/lib)
CFLAGS=-g -pthread -std=gnu11 -Wall -Werror -Wmissing-prototypes -I$(DEP_INCLUDE_DIR) CFLAGS=-g -O2 -pthread -std=gnu11 -Wall -Werror -Wmissing-prototypes -I$(DEP_INCLUDE_DIR)
# include lib directory into runtime path to facilitate dynamic linking # include lib directory into runtime path to facilitate dynamic linking
LDFLAGS=-pthread -Wl,-rpath -Wl,$(DEP_LIB_DIR) LDFLAGS=-pthread -Wl,-rpath -Wl,$(DEP_LIB_DIR)

View File

@ -30,7 +30,8 @@ struct bufio {
buffer_t buf; // holds data that was received buffer_t buf; // holds data that was received
}; };
static const int BUFSIZE = 1536; static const int BUFSIZE = 8192;
static const int READSIZE = 2048;
static int min(int a, int b) { return a < b ? a : b; } static int min(int a, int b) { return a < b ? a : b; }
/* Create a new bufio object from a socket. */ /* Create a new bufio object from a socket. */
@ -95,8 +96,8 @@ void bufio_truncate(struct bufio * self)
static ssize_t static ssize_t
read_more(struct bufio *self) read_more(struct bufio *self)
{ {
char * buf = buffer_ensure_capacity(&self->buf, BUFSIZE); char * buf = buffer_ensure_capacity(&self->buf, READSIZE);
int bread = recv(self->socket, buf, BUFSIZE, MSG_NOSIGNAL); int bread = recv(self->socket, buf, READSIZE, MSG_NOSIGNAL);
if (bread < 1) if (bread < 1)
return bread; return bread;

7
src/globals.h Normal file
View File

@ -0,0 +1,7 @@
/*
* Declarations of various global variables.
*/
#include <stdbool.h>
extern char *server_root;
extern bool silent_mode;

View File

@ -348,7 +348,7 @@ http_handle_transaction(struct http_client *self)
http_add_header(&ta.resp_headers, "Server", "CS3214-Personal-Server"); http_add_header(&ta.resp_headers, "Server", "CS3214-Personal-Server");
buffer_init(&ta.resp_body, 0); buffer_init(&ta.resp_body, 0);
bool rc; bool rc = false;
char *req_path = bufio_offset2ptr(ta.client->bufio, ta.req_path); char *req_path = bufio_offset2ptr(ta.client->bufio, ta.req_path);
if (STARTS_WITH(req_path, "/api")) { if (STARTS_WITH(req_path, "/api")) {
rc = handle_api(&ta); rc = handle_api(&ta);

View File

@ -56,6 +56,4 @@ void http_setup_client(struct http_client *, struct bufio *bufio);
bool http_handle_transaction(struct http_client *); bool http_handle_transaction(struct http_client *);
void http_add_header(buffer_t * resp, char* key, char* fmt, ...); void http_add_header(buffer_t * resp, char* key, char* fmt, ...);
extern char *server_root;
#endif /* _HTTP_H */ #endif /* _HTTP_H */

View File

@ -13,6 +13,9 @@
#include "http.h" #include "http.h"
#include "socket.h" #include "socket.h"
#include "bufio.h" #include "bufio.h"
#include "globals.h"
bool silent_mode = false;
/* /*
* A non-concurrent, iterative server that serves one client at a time. * A non-concurrent, iterative server that serves one client at a time.
@ -47,12 +50,16 @@ main(int ac, char *av[])
{ {
int opt; int opt;
char *port_string = NULL; char *port_string = NULL;
while ((opt = getopt(ac, av, "hp:R:")) != -1) { while ((opt = getopt(ac, av, "hp:R:s")) != -1) {
switch (opt) { switch (opt) {
case 'p': case 'p':
port_string = optarg; port_string = optarg;
break; break;
case 's':
silent_mode = true;
break;
case 'R': case 'R':
server_root = optarg; server_root = optarg;
break; break;

View File

@ -21,6 +21,7 @@
#include <assert.h> #include <assert.h>
#include "socket.h" #include "socket.h"
#include "globals.h"
/* /*
* Find a suitable IPv4 address to bind to, create a socket, bind it, * Find a suitable IPv4 address to bind to, create a socket, bind it,
@ -124,6 +125,7 @@ socket_accept_client(int accepting_socket)
/* The following will help with debugging your server. /* The following will help with debugging your server.
* Adjust and/or remove as you see fit. * Adjust and/or remove as you see fit.
*/ */
if (!silent_mode) {
char peer_addr[1024], peer_port[10]; char peer_addr[1024], peer_port[10];
int rc = getnameinfo(&peer, peersize, int rc = getnameinfo(&peer, peersize,
peer_addr, sizeof peer_addr, peer_port, sizeof peer_port, peer_addr, sizeof peer_addr, peer_port, sizeof peer_port,
@ -133,6 +135,7 @@ socket_accept_client(int accepting_socket)
return -1; return -1;
} }
fprintf(stderr, "Accepted connection from %s:%s\n", peer_addr, peer_port); fprintf(stderr, "Accepted connection from %s:%s\n", peer_addr, peer_port);
}
return client; return client;
} }