On Wed, 2010-12-15 at 16:19 +0200, Ivan Boyadzhiev wrote:
Bingo! This above is the exact problem. I cleaned all the folders. Then I started new x2goclient session. While the session was starting, I've created symbolic folder without "\" symbol, in the next moment when the folder with "\" appeared. As result I had 2 folders in ~/.x2go/ - the one with "\" and symlink without "\". Then the 3 files .pulse-cookie; .pulse-client.conf and cmdoutput appeared, as well as the sound in my client! That is the problem then. Can you, please, provide fix?
Hi hi, although this issue is happening on the server side (located in Ubuntu x2goserver), the code is actually sending from the client - reverse ssh.
I'm using x2goclient 3.01-13 on my Windows 7, as 3.01-14 doesn't work properly. Still I've tested x2goclient 3.01-14 on VMWare Ubuntu, and it doesn't solve this issue, infact, it doesn't have sound at all. I couldn't find x2goclient 3.01-13 sources, but I have found 3.01-14 sources, so I made my investigations there.
Before we start dig in the source:
- We have problem with creating 3 files (.pulse-cookie; .pulse-client.conf, cmdoutput)
- We have problem with not properly set environment (PULSE_CLIENTCONFIG) All these errors are because:
- These files are located in non-existing folder (without "\")
- This environment is pointing to non-existing folder (without "\")
We have 2 solutions: to use everywhere DOMAIN\user, or DOMAINuser. I think using everywhere DOMAIN\user is better, but it is complete up to you as development to decide.
Another problem: I've checked, and because of very same problem, sshfs can't map local folder with remote folder, because of non-existing /tmp/DOMAINuser_media folder.
Deep in the code: All sources are in the file: onmainwindow.cpp. Searching for .pulse-cookie and PULSE_CLIENTCONFIG lead us to the first places
row 3,227: if ( sndSystem==PULSE ) { startSoundServer=false; QString scmd; if ( !sshSndTunnel ) scmd="echo \"default-server=
echo " "$SSH_CLIENT | awk '{print $1}'
:"+ sndPort+ "\"> ~/.x2go/C-"+ resumingSession.sessionId+ "/.pulse-client.conf" ";echo \"cookie-file=.x2go/C-"+ resumingSession.sessionId+ "/.pulse-cookie"+ "\">> ~/.x2go/C-"+ resumingSession.sessionId+ "/.pulse-client.conf";row 4,274: cmd="PULSE_CLIENTCONFIG=~/.x2go/C-"+ resumingSession.sessionId+ "/.pulse-client.conf "+cmd;
Note: same variable: resumingSession.sessionId
Where is resumingSession initialise?
row 3,203: if ( newSession ) { QString sString=output.trimmed(); sString.replace ( '\n','|' ); host=resumingSession.server; resumingSession=getNewSessionFromString ( sString );
getNewSessionFromString and sString:
row 4,160: x2goSession ONMainWindow::getNewSessionFromString ( const QString& string ) { QStringList lst=string.split ( '|' ); x2goSession s; s.display=lst[0]; s.cookie=lst[1]; s.agentPid=lst[2]; s.sessionId=lst[3];
row 3,205: sString comes from: output.trimmed();
Here is not possible for QT function trimmed() to remove "\" because this howto: http://doc.qt.nokia.com/4.7-snapshot/qstring.html#trimmed
Then where is output coming from? - From the Method, which is:
row 3,089: void ONMainWindow::slot_retResumeSess ( bool result, QString output, sshProcess* proc )
Where is slot_retResumeSess called from? Various places, but I think it is from here:
row 2,724: connect ( proc,SIGNAL ( sshFinished ( bool, QString,sshProcess* ) ), this,SLOT ( slot_retResumeSess ( bool, QString, sshProcess* ) ) );
Still there is NO parameter given for second variable, which should come as output?!
Still working on ...
<snip> Thank you, Ivan, for all the detailed work you are doing to troubleshoot this - John