}
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 ) );
+ if ( write( fd, message, strlen( message ) ) != strlen( message ))
+ miracle_log( LOG_ERR, "write(%s) failed!", message );
}
return error;
{
struct hostent *he;
connection_t *connection = arg;
+ mlt_properties owner = connection->owner;
char address[ 512 ];
char command[ 1024 ];
int fd = connection->fd;
while( !error && connection_read( fd, command, 1024 ) )
{
+ response = NULL;
+
if ( !strncmp( command, "PUSH ", 5 ) )
{
char temp[ 20 ];
}
buffer[ bytes ] = '\0';
if ( bytes > 0 && total == bytes )
- service = ( mlt_service )mlt_factory_producer( "westley-xml", buffer );
- 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 );
}
else if ( strncmp( command, "STATUS", 6 ) )
{
- response = valerie_parser_execute( parser, command );
+ mlt_events_fire( owner, "command-received", &response, command, NULL );
+ if ( response == NULL )
+ response = valerie_parser_execute( parser, command );
miracle_log( LOG_INFO, "%s \"%s\" %d", address, command, valerie_response_get_error_code( response ) );
error = connection_send( fd, response );
valerie_response_close( response );