combine writes to a single system call.

This commit is contained in:
Nikos Mavrogiannopoulos
2013-03-15 18:49:54 +01:00
parent 3883e930c7
commit 72e086be00
2 changed files with 11 additions and 2 deletions

View File

@@ -36,6 +36,7 @@
#include <syslog.h>
#include <vpn.h>
#include <tlslib.h>
#include <sys/uio.h>
#include <gnutls/gnutls.h>
#include <gnutls/abstract.h>
@@ -158,6 +159,7 @@ unsigned key_size = config->key_size;
struct pin_st pins;
gnutls_datum_t data, out;
uint16_t length;
struct iovec iov[2];
signal(SIGHUP, SIG_IGN);
signal(SIGINT, SIG_DFL);
@@ -254,8 +256,14 @@ uint16_t length;
/* write reply */
length = out.size;
force_write(cfd, &length, 2);
force_write(cfd, out.data, out.size);
iov[0].iov_base = &length;
iov[0].iov_len = 2;
iov[1].iov_base = out.data;
iov[1].iov_len = out.size;
writev(cfd, iov, 2);
gnutls_free(out.data);
cont:
close(cfd);

View File

@@ -38,6 +38,7 @@
#include <main.h>
#include <worker.h>
#include <sys/un.h>
#include <sys/uio.h>
ssize_t tls_send(gnutls_session_t session, const void *data,