improve checking of sent and received http messages
authorAndreas Steffen <andreas.steffen@strongswan.org>
Mon, 1 Apr 2013 20:31:44 +0000 (22:31 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Tue, 2 Apr 2013 06:55:40 +0000 (08:55 +0200)
src/libcharon/plugins/tnc_ifmap/tnc_ifmap_soap_msg.c

index 8afd6ff..eaa8351 100644 (file)
@@ -66,7 +66,7 @@ static bool http_post(private_tnc_ifmap_soap_msg_t *this, chunk_t out,
 {
        char *host, *path, *request, buf[2048];
        chunk_t line, http, parameter;
-       int len, code, content_len = 0;
+       int len, written, code, content_len = 0;
 
        /* Duplicate host[/path] string since we are going to manipulate it */
        len = strlen(this->uri) + 2;
@@ -111,12 +111,16 @@ static bool http_post(private_tnc_ifmap_soap_msg_t *this, chunk_t out,
        http = chunk_create(request, len);
        DBG3(DBG_TLS, "%B", &http);
 
-       this->tls->write(this->tls, request, len);
+       written = this->tls->write(this->tls, request, len);
        free(request);
+       if (written != len)
+       {
+               return FALSE;
+       }
 
        /* Read HTTP response */
        len = this->tls->read(this->tls, buf, sizeof(buf), TRUE);
-       if (len == -1)
+       if (len <= 0)
        {
                return FALSE;
        }