]> git.sesse.net Git - cubemap/blobdiff - client.cpp
Fix a crash on re-exec if a client was not in SENDING_DATA.
[cubemap] / client.cpp
index c74209d8e0f4b22ef9fef07572397a4800dceec7..f2d60a62653ea13abad4ff9366e8a2e5fa55ca97 100644 (file)
@@ -17,7 +17,7 @@ Client::Client(int sock)
          state(Client::READING_REQUEST),
          stream(NULL),
          header_or_error_bytes_sent(0),
-         bytes_sent(0)
+         stream_pos(0)
 {
        request.reserve(1024);
 
@@ -49,9 +49,9 @@ Client::Client(const ClientProto &serialized, Stream *stream)
          stream(stream),
          header_or_error(serialized.header_or_error()),
          header_or_error_bytes_sent(serialized.header_or_error_bytes_sent()),
-         bytes_sent(serialized.bytes_sent())
+         stream_pos(serialized.stream_pos())
 {
-       if (stream->mark_pool != NULL) {
+       if (stream != NULL && stream->mark_pool != NULL) {
                fwmark = stream->mark_pool->get_mark();
        } else {
                fwmark = 0;  // No mark.
@@ -74,7 +74,7 @@ ClientProto Client::serialize() const
        serialized.set_stream_id(stream_id);
        serialized.set_header_or_error(header_or_error);
        serialized.set_header_or_error_bytes_sent(serialized.header_or_error_bytes_sent());
-       serialized.set_bytes_sent(bytes_sent);
+       serialized.set_stream_pos(stream_pos);
        return serialized;
 }
        
@@ -84,6 +84,6 @@ ClientStats Client::get_stats() const
        stats.stream_id = stream_id;
        stats.remote_addr = remote_addr;
        stats.connect_time = connect_time;
-       stats.bytes_sent = bytes_sent;
+       stats.bytes_sent = stream_pos;
        return stats;
 }