Browse Source

need ReMutex to avoid deadlock

David Rose 18 years ago
parent
commit
4c3bbe70c8
2 changed files with 9 additions and 9 deletions
  1. 7 7
      panda/src/net/connection.cxx
  2. 2 2
      panda/src/net/connection.h

+ 7 - 7
panda/src/net/connection.cxx

@@ -25,7 +25,7 @@
 #include "config_express.h" // for collect_tcp
 #include "trueClock.h"
 #include "pnotify.h"
-#include "mutexHolder.h"
+#include "reMutexHolder.h"
 #include "socket_ip.h"
 #include "socket_tcp.h"
 #include "socket_udp.h"
@@ -177,7 +177,7 @@ get_collect_tcp_interval() const {
 ////////////////////////////////////////////////////////////////////
 bool Connection::
 consider_flush() {
-  MutexHolder holder(_write_mutex);
+  ReMutexHolder holder(_write_mutex);
 
   if (!_collect_tcp) {
     return do_flush();
@@ -204,7 +204,7 @@ consider_flush() {
 ////////////////////////////////////////////////////////////////////
 bool Connection::
 flush() {
-  MutexHolder holder(_write_mutex);
+  ReMutexHolder holder(_write_mutex);
   return do_flush();
 }
 
@@ -352,7 +352,7 @@ send_datagram(const NetDatagram &datagram, int tcp_header_size) {
     Socket_UDP *udp;
     DCAST_INTO_R(udp, _socket, false);
 
-    MutexHolder holder(_write_mutex);
+    ReMutexHolder holder(_write_mutex);
     DatagramUDPHeader header(datagram);
     string data;
     data += header.get_header();
@@ -386,7 +386,7 @@ send_datagram(const NetDatagram &datagram, int tcp_header_size) {
 
   DatagramTCPHeader header(datagram, tcp_header_size);
 
-  MutexHolder holder(_write_mutex);
+  ReMutexHolder holder(_write_mutex);
   _queued_data += header.get_header();
   _queued_data += datagram.get_message();
   _queued_count++;
@@ -421,7 +421,7 @@ send_raw_datagram(const NetDatagram &datagram) {
 
     string data = datagram.get_message();
 
-    MutexHolder holder(_write_mutex);
+    ReMutexHolder holder(_write_mutex);
     bool okflag = udp->SendTo(data, datagram.get_address().get_addr());
     
     if (net_cat.is_spam()) {
@@ -435,7 +435,7 @@ send_raw_datagram(const NetDatagram &datagram) {
   }
 
   // We might queue up TCP packets for later sending.
-  MutexHolder holder(_write_mutex);
+  ReMutexHolder holder(_write_mutex);
   _queued_data += datagram.get_message();
   _queued_count++;
 

+ 2 - 2
panda/src/net/connection.h

@@ -22,7 +22,7 @@
 #include "pandabase.h"
 #include "referenceCount.h"
 #include "netAddress.h"
-#include "pmutex.h"
+#include "reMutex.h"
 
 class Socket_IP;
 class ConnectionManager;
@@ -71,7 +71,7 @@ private:
 
   ConnectionManager *_manager;
   Socket_IP *_socket;
-  Mutex _write_mutex;
+  ReMutex _write_mutex;
 
   bool _collect_tcp;
   double _collect_tcp_interval;