]> git.sesse.net Git - cubemap/blobdiff - client.cpp
Tweak the MutexLock implementation slightly, so as to confuse Coverity less.
[cubemap] / client.cpp
index 5871da1ed70fb111a85db1bcf278735f64a6b62e..f6361f34ab47e62dc30ec1ebd6844ae73462d21a 100644 (file)
@@ -1,6 +1,6 @@
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
-#include <stdio.h>
+#include <stdint.h>
 #include <sys/socket.h>
 
 #include "client.h"
 #include <sys/socket.h>
 
 #include "client.h"
@@ -32,8 +32,19 @@ Client::Client(int sock)
        if (getpeername(sock, reinterpret_cast<sockaddr *>(&addr), &addr_len) == -1) {
                log_perror("getpeername");
                remote_addr = "";
        if (getpeername(sock, reinterpret_cast<sockaddr *>(&addr), &addr_len) == -1) {
                log_perror("getpeername");
                remote_addr = "";
+               return;
+       }
+
+       char buf[INET6_ADDRSTRLEN];
+       if (IN6_IS_ADDR_V4MAPPED(&addr.sin6_addr)) {
+               // IPv4 address, really.
+               if (inet_ntop(AF_INET, &addr.sin6_addr.s6_addr32[3], buf, sizeof(buf)) == NULL) {
+                       log_perror("inet_ntop");
+                       remote_addr = "";
+               } else {
+                       remote_addr = buf;
+               }
        } else {
        } else {
-               char buf[INET6_ADDRSTRLEN];
                if (inet_ntop(addr.sin6_family, &addr.sin6_addr, buf, sizeof(buf)) == NULL) {
                        log_perror("inet_ntop");
                        remote_addr = "";
                if (inet_ntop(addr.sin6_family, &addr.sin6_addr, buf, sizeof(buf)) == NULL) {
                        log_perror("inet_ntop");
                        remote_addr = "";
@@ -49,7 +60,7 @@ Client::Client(const ClientProto &serialized, Stream *stream)
          connect_time(serialized.connect_time()),
          state(State(serialized.state())),
          request(serialized.request()),
          connect_time(serialized.connect_time()),
          state(State(serialized.state())),
          request(serialized.request()),
-         stream_id(serialized.stream_id()),
+         url(serialized.url()),
          stream(stream),
          header_or_error(serialized.header_or_error()),
          header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()),
          stream(stream),
          header_or_error(serialized.header_or_error()),
          header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()),
@@ -79,7 +90,7 @@ ClientProto Client::serialize() const
        serialized.set_connect_time(connect_time);
        serialized.set_state(state);
        serialized.set_request(request);
        serialized.set_connect_time(connect_time);
        serialized.set_state(state);
        serialized.set_request(request);
-       serialized.set_stream_id(stream_id);
+       serialized.set_url(url);
        serialized.set_header_or_error(header_or_error);
        serialized.set_header_or_error_bytes_sent(serialized.header_or_error_bytes_sent());
        serialized.set_stream_pos(stream_pos);
        serialized.set_header_or_error(header_or_error);
        serialized.set_header_or_error_bytes_sent(serialized.header_or_error_bytes_sent());
        serialized.set_stream_pos(stream_pos);
@@ -92,7 +103,11 @@ ClientProto Client::serialize() const
 ClientStats Client::get_stats() const
 {
        ClientStats stats;
 ClientStats Client::get_stats() const
 {
        ClientStats stats;
-       stats.stream_id = stream_id;
+       if (url.empty()) {
+               stats.url = "-";
+       } else {
+               stats.url = url;
+       }
        stats.sock = sock;
        stats.fwmark = fwmark;
        stats.remote_addr = remote_addr;
        stats.sock = sock;
        stats.fwmark = fwmark;
        stats.remote_addr = remote_addr;