]> git.sesse.net Git - mlt/blobdiff - src/miracle/miracle_connection.c
Merge ../mlt++
[mlt] / src / miracle / miracle_connection.c
index 51b1a0bb16af27c45893d6b491ab26f1b4b5025b..7f287e34194ef49bde4eb51247cc56385133184d 100644 (file)
@@ -129,12 +129,14 @@ static int connection_send( int fd, valerie_response response )
                }
 
                if ( ( code == 201 || code == 500 ) && strcmp( valerie_response_get_line( response, items - 1 ), "" ) )
-                       write( fd, "\r\n", 2 );
+                       if ( write( fd, "\r\n", 2 ) != 2 )
+                               miracle_log( LOG_ERR, "write(\"\\r\\n\") failed!" );
        }
        else
        {
-               char *message = "500 Empty Response\r\n\r\n";
-               write( fd, message, strlen( message ) );
+               const char *message = "500 Empty Response\r\n\r\n";
+               if ( write( fd, message, strlen( message ) ) != strlen( message ))
+                       miracle_log( LOG_ERR, "write(%s) failed!", message );
        }
 
        return error;
@@ -247,10 +249,19 @@ void *parser_thread( void *arg )
                                }
                                buffer[ bytes ] = '\0';
                                if ( bytes > 0 && total == bytes )
-                                       service = ( mlt_service )mlt_factory_producer( "westley-xml", buffer );
-                               mlt_events_fire( owner, "push-received", &response, command, service, NULL );
-                               if ( response == NULL )
-                                       response = valerie_parser_push( parser, command, service );
+                               {
+                                       if ( mlt_properties_get( owner, "push-parser-off" ) == 0 )
+                                       {
+                                               service = ( mlt_service )mlt_factory_producer( NULL, "westley-xml", buffer );
+                                               mlt_events_fire( owner, "push-received", &response, command, service, NULL );
+                                               if ( response == NULL )
+                                                       response = valerie_parser_push( parser, command, service );
+                                       }
+                                       else
+                                       {
+                                               response = valerie_parser_received( parser, command, buffer );
+                                       }
+                               }
                                error = connection_send( fd, response );
                                valerie_response_close( response );
                                mlt_service_close( service );