Re-arrange code to quiet Coverity
authorAlan T. DeKok <aland@freeradius.org>
Sun, 27 Apr 2014 12:50:42 +0000 (08:50 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 2 May 2014 13:57:46 +0000 (14:57 +0100)
src/main/tls_listen.c

index a6d8a2e..120a60c 100644 (file)
@@ -503,7 +503,7 @@ int dual_tls_send(rad_listen_t *listener, REQUEST *request)
  *
  *     Called with the mutex held.
  */
-static int proxy_tls_read(rad_listen_t *listener)
+static ssize_t proxy_tls_read(rad_listen_t *listener)
 {
        int rcode;
        size_t length;
@@ -605,26 +605,27 @@ static int proxy_tls_read(rad_listen_t *listener)
                return 0;
        }
 
-       return 1;
+       sock->partial = 0;      /* we've now read the packet */
+       return length;
 }
 
 
 int proxy_tls_recv(rad_listen_t *listener)
 {
-       int rcode;
        listen_socket_t *sock = listener->data;
        char buffer[256];
        RADIUS_PACKET *packet;
        uint8_t *data;
+       ssize_t data_len;
 
        if (listener->status != RAD_LISTEN_STATUS_KNOWN) return 0;
 
        DEBUG3("Proxy SSL socket has data to read");
        PTHREAD_MUTEX_LOCK(&sock->mutex);
-       rcode = proxy_tls_read(listener);
+       data_len = proxy_tls_read(listener);
        PTHREAD_MUTEX_UNLOCK(&sock->mutex);
 
-       if (rcode < 0) {
+       if (data_len < 0) {
                DEBUG("Closing TLS socket to home server");
                PTHREAD_MUTEX_LOCK(&sock->mutex);
                tls_socket_close(listener);
@@ -632,10 +633,9 @@ int proxy_tls_recv(rad_listen_t *listener)
                return 0;
        }
 
-       if (rcode == 0) return 0; /* no data to read */
+       if (data_len == 0) return 0; /* not done yet */
 
        data = sock->data;
-       sock->partial = 0;      /* we've now read the packet */
 
        packet = rad_alloc(sock, 0);
        packet->sockfd = listener->fd;
@@ -645,7 +645,7 @@ int proxy_tls_recv(rad_listen_t *listener)
        packet->dst_port = sock->my_port;
        packet->code = data[0];
        packet->id = data[1];
-       packet->data_len = (data[2] << 8) | data[3];
+       packet->data_len = data_len;
        packet->data = talloc_array(packet, uint8_t, packet->data_len);
        memcpy(packet->data, data, packet->data_len);
        memcpy(packet->vector, packet->data + 4, 16);