flush_socket now flushes data through the xml stream parser to prevent the destorying...
authorerickson <erickson@9efc2488-bf62-4759-914b-345cdb29e865>
Wed, 3 Jun 2009 15:58:20 +0000 (15:58 +0000)
committererickson <erickson@9efc2488-bf62-4759-914b-345cdb29e865>
Wed, 3 Jun 2009 15:58:20 +0000 (15:58 +0000)
git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1712 9efc2488-bf62-4759-914b-345cdb29e865

src/perl/lib/OpenSRF/AppSession.pm
src/perl/lib/OpenSRF/DomainObject/oilsMessage.pm
src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm

index bf2fb43..851f02c 100644 (file)
@@ -947,11 +947,14 @@ sub status {
        $self->session->send( 'STATUS',$msg, $self->threadTrace );
 }
 
        $self->session->send( 'STATUS',$msg, $self->threadTrace );
 }
 
-sub stream_push {
-       my $self = shift;
-       my $msg = shift;
-       $self->respond( $msg );
-}
+# TODO stream_push only works when server sessions can accept RESULT 
+# messages, which is no longer supported.  Create a new OpenSRF message
+# type to support client-to-server streams.
+#sub stream_push {
+#      my $self = shift;
+#      my $msg = shift;
+#      $self->respond( $msg );
+#}
 
 sub respond {
        my $self = shift;
 
 sub respond {
        my $self = shift;
index 240089f..ad7ed3b 100644 (file)
@@ -221,11 +221,11 @@ sub handler {
 sub do_server {
        my( $self, $session, $mtype, $api_level, $tT ) = @_;
 
 sub do_server {
        my( $self, $session, $mtype, $api_level, $tT ) = @_;
 
-       # A Server should never receive STATUS messages.  If so, we drop them.
-       # This is to keep STATUS's from dead client sessions from creating new server
+       # A Server should never receive STATUS or RESULT messages.  If so, we drop them.
+       # This is to keep STATUS/RESULT's from dead client sessions from creating new server
        # sessions which send mangled session exceptions to backends for messages 
        # that they are not aware of any more.
        # sessions which send mangled session exceptions to backends for messages 
        # that they are not aware of any more.
-       if( $mtype eq 'STATUS' ) { return 0; }
+    if( $mtype eq 'STATUS' or $mtype eq 'RESULT' ) { return 0; }
 
        
        if ($mtype eq 'DISCONNECT') {
 
        
        if ($mtype eq 'DISCONNECT') {
index 1e60f70..7630635 100644 (file)
@@ -321,32 +321,22 @@ sub end_element {
     }
 }
 
     }
 }
 
+
+# read all the data on the jabber socket through the 
+# parser and drop the resulting message
 sub flush_socket {
        my $self = shift;
 sub flush_socket {
        my $self = shift;
-       my $socket = $self->socket;
-    return 0 unless $socket and $socket->connected;
-
-    my $flags = fcntl($socket, F_GETFL, 0);
-    fcntl($socket, F_SETFL, $flags | O_NONBLOCK);
+    return 0 unless $self->connected;
 
 
-    while( my $n = sysread( $socket, my $buf, 8192 ) ) {
-        $logger->debug("flush_socket dropped $n bytes of data");
-        $logger->error("flush_socket dropped data on disconnected socket: $buf")
-            unless($socket->connected);
+    while ($self->wait(0)) {
+        # TODO remove this log line
+        $logger->info("flushing data from socket...");
     }
 
     }
 
-    fcntl($socket, F_SETFL, $flags);
-    return 0 unless $socket->connected;
-    return 1;
+    return $self->connected;
 }
 
 
 
 }
 
 
 
-
-
 1;
 
 1;
 
-
-
-
-