This is an automated email from the ASF dual-hosted git repository.

maskit pushed a commit to branch quic-05
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/quic-05 by this push:
     new cfdb638  Remove QUICNetVConnection from the map when the connection 
has been freed
cfdb638 is described below

commit cfdb638edff615633cb303e67134154e37481dd8
Author: Masakazu Kitajo <mas...@apache.org>
AuthorDate: Sat Sep 30 22:01:18 2017 +0900

    Remove QUICNetVConnection from the map when the connection has been freed
    
    (cherry picked from commit 0551bfdb9673b71cbfd64c5fb59c502c82ee60b4)
---
 iocore/net/P_QUICNetVConnection.h | 1 +
 iocore/net/P_QUICPacketHandler.h  | 1 +
 iocore/net/QUICNetVConnection.cc  | 8 ++++++++
 iocore/net/QUICPacketHandler.cc   | 6 ++++++
 iocore/net/quic/Mock.h            | 7 +++++++
 iocore/net/quic/QUICConnection.h  | 2 ++
 6 files changed, 25 insertions(+)

diff --git a/iocore/net/P_QUICNetVConnection.h 
b/iocore/net/P_QUICNetVConnection.h
index 7db4cd8..82b89fc 100644
--- a/iocore/net/P_QUICNetVConnection.h
+++ b/iocore/net/P_QUICNetVConnection.h
@@ -170,6 +170,7 @@ public:
   void registerNextProtocolSet(SSLNextProtocolSet *s);
 
   // QUICConnection
+  QUICConnectionId connection_id() override;
   uint32_t maximum_quic_packet_size() override;
   uint32_t minimum_quic_packet_size() override;
   uint32_t maximum_stream_frame_data_size() override;
diff --git a/iocore/net/P_QUICPacketHandler.h b/iocore/net/P_QUICPacketHandler.h
index e1ea3fb..113a31c 100644
--- a/iocore/net/P_QUICPacketHandler.h
+++ b/iocore/net/P_QUICPacketHandler.h
@@ -42,6 +42,7 @@ public:
   void init_accept(EThread *t) override;
   void send_packet(const QUICPacket &packet, QUICNetVConnection *vc);
   void send_packet(const QUICPacket &packet, UDPConnection *udp_con, 
IpEndpoint &addr, uint32_t pmtu);
+  void forget(QUICNetVConnection *vc);
 
 private:
   void _recv_packet(int event, UDPPacket *udpPacket);
diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index c0b2848..39ad79c 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -123,6 +123,8 @@ QUICNetVConnection::free(EThread *t)
 {
   DebugQUICCon("Free connection");
 
+  this->_packet_handler->forget(this);
+
   this->_udp_con        = nullptr;
   this->_packet_handler = nullptr;
 
@@ -151,6 +153,12 @@ QUICNetVConnection::reenable(VIO *vio)
   return;
 }
 
+QUICConnectionId
+QUICNetVConnection::connection_id()
+{
+  return this->_quic_connection_id;
+}
+
 uint32_t
 QUICNetVConnection::pmtu()
 {
diff --git a/iocore/net/QUICPacketHandler.cc b/iocore/net/QUICPacketHandler.cc
index 7dee08c..641dba2 100644
--- a/iocore/net/QUICPacketHandler.cc
+++ b/iocore/net/QUICPacketHandler.cc
@@ -199,3 +199,9 @@ QUICPacketHandler::send_packet(const QUICPacket &packet, 
UDPConnection *udp_con,
 
   udp_con->send(this, udpPkt);
 }
+
+void
+QUICPacketHandler::forget(QUICNetVConnection *vc)
+{
+  this->_connections.put(vc->connection_id(), nullptr);
+}
diff --git a/iocore/net/quic/Mock.h b/iocore/net/quic/Mock.h
index ea5163f..41d5390 100644
--- a/iocore/net/quic/Mock.h
+++ b/iocore/net/quic/Mock.h
@@ -144,6 +144,13 @@ public:
   {
     this->_mutex = new_ProxyMutex();
   };
+
+  QUICConnectionId
+  connection_id() override
+  {
+    return 0;
+  }
+
   void
   transmit_packet(QUICPacketUPtr packet) override
   {
diff --git a/iocore/net/quic/QUICConnection.h b/iocore/net/quic/QUICConnection.h
index e0bb194..93634ad 100644
--- a/iocore/net/quic/QUICConnection.h
+++ b/iocore/net/quic/QUICConnection.h
@@ -35,6 +35,8 @@ class SSLNextProtocolSet;
 class QUICConnection : public QUICPacketTransmitter, public 
QUICFrameTransmitter, public QUICFrameHandler
 {
 public:
+  virtual QUICConnectionId connection_id() = 0;
+
   /*
    * Retruns the maximum packet size at the time called
    *

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <commits@trafficserver.apache.org>'].

Reply via email to