summaryrefslogtreecommitdiffstats
path: root/03_exercise/srv/shell.c
diff options
context:
space:
mode:
Diffstat (limited to '03_exercise/srv/shell.c')
-rw-r--r--03_exercise/srv/shell.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/03_exercise/srv/shell.c b/03_exercise/srv/shell.c
index c7155c6..74c492b 100644
--- a/03_exercise/srv/shell.c
+++ b/03_exercise/srv/shell.c
@@ -100,6 +100,13 @@ void send_file(int client_fd, char *path) {
return;
}
+ int flag = 1;
+ // force flush
+ flag = 1;
+ setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
+ flag = 0;
+ setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
+
int length = snprintf(NULL, 0, "%ld", sz);
sprintf(buffer, "<<!%ld!", sz);
sprintf(&(buffer[3 + length + 1]), "%s!\n", path);
@@ -109,10 +116,10 @@ void send_file(int client_fd, char *path) {
return;
}
- int flag = 1;
- // force flush
+ flag = 1;
setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
flag = 0;
+ setsockopt(client_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
usleep(150);