gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/rtmp r9814: read a Buffer, not a shared_pt


From: rob
Subject: [Gnash-commit] /srv/bzr/gnash/rtmp r9814: read a Buffer, not a shared_ptr of a Buffer.
Date: Sun, 30 Nov 2008 18:17:41 -0700
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9814
committer: address@hidden
branch nick: rtmp
timestamp: Sun 2008-11-30 18:17:41 -0700
message:
  read a Buffer, not a shared_ptr of a Buffer.
modified:
  libnet/network.cpp
  libnet/network.h
=== modified file 'libnet/network.cpp'
--- a/libnet/network.cpp        2008-11-29 20:25:32 +0000
+++ b/libnet/network.cpp        2008-12-01 01:17:41 +0000
@@ -320,6 +320,11 @@
            int sig;
            sigwait(&blockset, &sig);
        }
+       if (sigismember(&pending, SIGPIPE)) {
+           log_debug("Have a pending SIGPIPE interupt waiting!");
+           int sig;
+           sigwait(&blockset, &sig);
+       }
 #else
         tval.tv_sec = 1;
         tval.tv_usec = 0;
@@ -734,30 +739,28 @@
 Network::readNet()
 {
 //    GNASH_REPORT_FUNCTION;
-
     boost::shared_ptr<amf::Buffer> buffer(new amf::Buffer);
-    int ret = readNet(buffer);
+    int ret = readNet(*buffer);
     if (ret > 0) {
        buffer->resize(ret);
     }
-
     return buffer;
 }
 
 // Read from the connection
 int
-Network::readNet(int fd, boost::shared_ptr<amf::Buffer> buffer)
+Network::readNet(int fd, amf::Buffer &buffer)
 {
-    int ret = readNet(fd, buffer->reference(), buffer->size(), _timeout);
+    int ret = readNet(fd, buffer.reference(), buffer.size(), _timeout);
     if (ret > 0) {
-       buffer->resize(ret);
+       buffer.resize(ret);
     }
 
     return ret;
 }
 
 int
-Network::readNet(boost::shared_ptr<amf::Buffer> buffer)
+Network::readNet(amf::Buffer &buffer)
 {
 //    GNASH_REPORT_FUNCTION;
     int ret = readNet(_sockfd, buffer, _timeout);
@@ -766,25 +769,27 @@
 }
 
 int
-Network::readNet(boost::shared_ptr<amf::Buffer> buffer, int timeout)
+Network::readNet(amf::Buffer &buffer, int timeout)
 {
 //    GNASH_REPORT_FUNCTION;
-    int ret = readNet(_sockfd, buffer->reference(), buffer->size(), timeout);
+    int ret = readNet(_sockfd, buffer.reference(), buffer.size(), timeout);
     if (ret > 0) {
-       buffer->resize(ret);
+       buffer.resize(ret);     // FIXME: why does this corrupt
     }
 
     return ret;
 }
 
 int
-Network::readNet(int fd, boost::shared_ptr<amf::Buffer> buffer, int timeout)
+Network::readNet(int fd, amf::Buffer &buffer, int timeout)
 {
-    int ret = readNet(fd, buffer->reference(), buffer->size(), timeout);
+    int ret = readNet(fd, buffer.reference(), buffer.size(), timeout);
+#if 0
     if (ret > 0) {
-       buffer->resize(ret);
+       buffer.resize(ret);     // FIXME: why does this corrupt
     }
-
+#endif
+    
     return ret;
 }
 
@@ -837,6 +842,7 @@
        sigset_t pending, blockset;
        sigemptyset(&blockset);        
         // sigaddset(&blockset, SIGINT); /* Block SIGINT */
+//        sigaddset(&blockset, SIGPIPE); /* Block SIGPIPE */
         sigprocmask(SIG_BLOCK, &blockset, NULL);
 
        // Trap ^C (SIGINT) so we can kill all the threads
@@ -866,6 +872,12 @@
                sigwait(&blockset, &sig);
                cntrlc_handler(SIGINT);
            }
+           if (sigismember(&pending, SIGPIPE)) {
+               log_debug("Have a pending SIGPIPE interupt waiting!");
+               int sig;
+               sigwait(&blockset, &sig);
+               cntrlc_handler(SIGINT);
+           }
 #else
            tval.tv_sec = timeout;
            tval.tv_usec = 0;
@@ -915,14 +927,14 @@
 int
 Network::writeNet(amf::Buffer *buffer)
 {
-    GNASH_REPORT_FUNCTION;
+//    GNASH_REPORT_FUNCTION;
     return writeNet(buffer->reference(), buffer->allocated());
 };
 
 int
 Network::writeNet(int fd, amf::Buffer *buffer)
 {
-    GNASH_REPORT_FUNCTION;
+//    GNASH_REPORT_FUNCTION;
     return writeNet(fd, buffer->reference(), buffer->allocated());
 };
 
@@ -930,7 +942,7 @@
 int
 Network::writeNet(amf::Buffer &buffer)
 {
-    GNASH_REPORT_FUNCTION;
+//    GNASH_REPORT_FUNCTION;
     return writeNet(buffer.reference(), buffer.allocated());
 };
 
@@ -938,7 +950,7 @@
 int
 Network::writeNet(int fd, amf::Buffer &buffer)
 {
-    GNASH_REPORT_FUNCTION;
+//    GNASH_REPORT_FUNCTION;
     return writeNet(fd, buffer.reference(), buffer.allocated());
 };
 
@@ -1108,7 +1120,7 @@
        struct timespec tval;
        sigset_t pending, emptyset, blockset;
        sigemptyset(&blockset);         /* Block SIGINT */
-        sigaddset(&blockset, SIGINT);
+//        sigaddset(&blockset, SIGINT);
 //        sigaddset(&blockset, SIGPIPE);
         sigprocmask(SIG_BLOCK, &blockset, NULL);
 
@@ -1235,6 +1247,11 @@
        int sig;
        sigwait(&sigmask, &sig);
     }
+    if (sigismember(&pending, SIGPIPE)) {
+       log_debug("Have a pending SIGPIPE interupt waiting!");
+       int sig;
+       sigwait(&sigmask, &sig);
+    }
 #else
     struct timeval        tval;
     tval.tv_sec = timeout;

=== modified file 'libnet/network.h'
--- a/libnet/network.h  2008-11-26 22:57:44 +0000
+++ b/libnet/network.h  2008-12-01 01:17:41 +0000
@@ -149,10 +149,10 @@
     ///
     /// @return The number of bytes read.
     boost::shared_ptr<amf::Buffer> readNet();
-    int readNet(boost::shared_ptr<amf::Buffer> buffer);
-    int readNet(int fd, boost::shared_ptr<amf::Buffer> buffer);
-    int readNet(boost::shared_ptr<amf::Buffer> buffer, int timeout);
-    int readNet(int fd, boost::shared_ptr<amf::Buffer> buffer, int timeout);
+    int readNet(amf::Buffer &buffer);
+    int readNet(int fd, amf::Buffer &buffer);
+    int readNet(amf::Buffer &buffer, int timeout);
+    int readNet(int fd, amf::Buffer &buffer, int timeout);
     int readNet(byte_t *data, int nbytes);
     int readNet(byte_t *data, int nbytes, int timeout);
     int readNet(int fd, byte_t *data, int nbytes);


reply via email to

[Prev in Thread] Current Thread [Next in Thread]