diff options
author | Niklas Halle <niklas@niklashalle.net> | 2020-06-08 14:56:34 +0200 |
---|---|---|
committer | Niklas Halle <niklas@niklashalle.net> | 2020-06-08 14:56:34 +0200 |
commit | 5cc93f9b21f26b204dba4b496ccc0f732b268c3f (patch) | |
tree | 7598ae57084016c119a2ca80ab1f6c4c2499187d | |
parent | d849d98cc5e630c2df9f07b306e724adc8580c81 (diff) | |
download | betriebssysteme-5cc93f9b21f26b204dba4b496ccc0f732b268c3f.tar.gz betriebssysteme-5cc93f9b21f26b204dba4b496ccc0f732b268c3f.zip |
force flush after header write
-rw-r--r-- | 03_exercise/srv/shell.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/03_exercise/srv/shell.c b/03_exercise/srv/shell.c index 0419f35..95c9982 100644 --- a/03_exercise/srv/shell.c +++ b/03_exercise/srv/shell.c @@ -6,6 +6,9 @@ #include <stdbool.h> #include <wait.h> #include <errno.h> +#include <ares_build.h> +#include <netinet/in.h> +#include <netinet/tcp.h> #include "array.h" #include "process.h" @@ -123,7 +126,12 @@ void send_file(int client_fd, char *path) { return; } - usleep(250); + int flag = 1; + // force flush + setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); + flag = 0; + + usleep(150); memset(buffer, 0, BUF_SIZE); @@ -156,16 +164,16 @@ void signal_handler(int signal) { bool check_put(char *buffer, int sock) { // "<<!bytecount!name" - char cmd[4]; - char rest[BUF_SIZE - 3]; - size_t file_size; + char cmd[4]; memcpy(cmd, buffer, 3); cmd[3] = 0; if (strcmp(cmd, "<<!") == 0) { - int offset = 3; - int i = offset; + char rest[BUF_SIZE - 3]; + size_t file_size; + int offset = 3; + int i = offset; for (; i < BUF_SIZE; ++i) { if (buffer[i] == '!') break; |