mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-09-16 16:30:26 +02:00
2024-05-29 Fred Gleason <fredg@paravelsystems.com>
* Changed the socket type from SOCK_STREAM to SOCK_SEQPACKET in the 'RDUnixServer' and 'RDUnixSocket' classes. * Removed the resynchronization code from the 'RDJsonFramer' class. * Fixed a bug in rdpadd(8) that could cause corruption when processing JSON updates. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
d422d12a5b
commit
c4e6914c29
@ -24785,3 +24785,9 @@
|
||||
2024-05-27 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a regression in the 'RDHPIPlayStream::play()' method that
|
||||
the 'play_length' setting to be ignored.
|
||||
2024-05-29 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Changed the socket type from SOCK_STREAM to SOCK_SEQPACKET in
|
||||
the 'RDUnixServer' and 'RDUnixSocket' classes.
|
||||
* Removed the resynchronization code from the 'RDJsonFramer' class.
|
||||
* Fixed a bug in rdpadd(8) that could cause corruption when processing
|
||||
JSON updates.
|
||||
|
@ -23,9 +23,6 @@
|
||||
RDJsonFramer::RDJsonFramer(QTcpSocket *in_sock,QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
d_escaped=false;
|
||||
d_quoted=false;
|
||||
d_level=0;
|
||||
d_socket=in_sock;
|
||||
connect(d_socket,SIGNAL(readyRead()),this,SLOT(readyReadData()));
|
||||
}
|
||||
@ -34,9 +31,6 @@ RDJsonFramer::RDJsonFramer(QTcpSocket *in_sock,QObject *parent)
|
||||
RDJsonFramer::RDJsonFramer(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
d_escaped=false;
|
||||
d_quoted=false;
|
||||
d_level=0;
|
||||
d_socket=NULL;
|
||||
}
|
||||
|
||||
@ -57,54 +51,13 @@ QByteArray RDJsonFramer::currentDocument() const
|
||||
|
||||
void RDJsonFramer::write(const QByteArray &data)
|
||||
{
|
||||
for(int i=0;i<data.size();i++) {
|
||||
QChar c=data.at(i);
|
||||
|
||||
d_data+=c;
|
||||
|
||||
if((c.cell()=='\\')&&(!d_escaped)) {
|
||||
d_escaped=true;
|
||||
}
|
||||
else {
|
||||
switch(c.cell()) {
|
||||
case '{':
|
||||
if(!d_quoted) {
|
||||
d_level++;
|
||||
}
|
||||
break;
|
||||
|
||||
case '}':
|
||||
if(!d_quoted) {
|
||||
if(--d_level==0) {
|
||||
d_current_document=d_data+"\n";
|
||||
d_escaped=false;
|
||||
d_quoted=false;
|
||||
d_level=0;
|
||||
d_data.clear();
|
||||
d_current_document=data;
|
||||
emit documentReceived(d_current_document);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case '"':
|
||||
if(!d_escaped) {
|
||||
d_quoted=!d_quoted;
|
||||
}
|
||||
break;
|
||||
}
|
||||
d_escaped=false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDJsonFramer::reset()
|
||||
{
|
||||
d_escaped=false;
|
||||
d_quoted=false;
|
||||
d_level=0;
|
||||
d_data.clear();
|
||||
|
||||
emit documentReset();
|
||||
}
|
||||
|
||||
|
@ -46,10 +46,6 @@ class RDJsonFramer : public QObject
|
||||
void readyReadData();
|
||||
|
||||
private:
|
||||
QByteArray d_data;
|
||||
bool d_escaped;
|
||||
bool d_quoted;
|
||||
int d_level;
|
||||
QByteArray d_current_document;
|
||||
QTcpSocket *d_socket;
|
||||
};
|
||||
|
@ -77,7 +77,7 @@ bool RDUnixServer::listenToPathname(const QString &pathname)
|
||||
{
|
||||
struct sockaddr_un sa;
|
||||
|
||||
if((unix_socket=socket(AF_UNIX,SOCK_STREAM,0))<0) {
|
||||
if((unix_socket=socket(AF_UNIX,SOCK_SEQPACKET,0))<0) {
|
||||
unix_error_string=QString("unable to create socket")+" ["+
|
||||
QString(strerror(errno))+"]";
|
||||
return false;
|
||||
@ -108,7 +108,7 @@ bool RDUnixServer::listenToAbstract(const QString &addr)
|
||||
{
|
||||
struct sockaddr_un sa;
|
||||
|
||||
if((unix_socket=socket(AF_UNIX,SOCK_STREAM,0))<0) {
|
||||
if((unix_socket=socket(AF_UNIX,SOCK_SEQPACKET,0))<0) {
|
||||
unix_error_string=QString("unable to create socket")+" ["+
|
||||
QString(strerror(errno))+"]";
|
||||
return false;
|
||||
|
@ -43,7 +43,7 @@ bool RDUnixSocket::connectToAbstract(const QString &addr,
|
||||
int sock;
|
||||
struct sockaddr_un sa;
|
||||
|
||||
if((sock=::socket(AF_UNIX,SOCK_STREAM,0))<0) {
|
||||
if((sock=::socket(AF_UNIX,SOCK_SEQPACKET,0))<0) {
|
||||
return false;
|
||||
}
|
||||
memset(&sa,0,sizeof(sa));
|
||||
|
Loading…
x
Reference in New Issue
Block a user