X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=ctdlphp%2Fsessionproxy.php;h=d9977a636a44bfe3cf7521607d2eea8829f93d37;hb=82b5392b71d56d75b84e76599004391dd7f16d39;hp=5c5ee40c37ca817d1a9e2fce7ed53c8650670c6d;hpb=366f73b6f6273b9f3b337ac2a2cbcf10a5fceb14;p=citadel.git diff --git a/ctdlphp/sessionproxy.php b/ctdlphp/sessionproxy.php index 5c5ee40c3..d9977a636 100755 --- a/ctdlphp/sessionproxy.php +++ b/ctdlphp/sessionproxy.php @@ -60,18 +60,21 @@ system("/bin/rm -f " . $sockname); $sock = socket_create(AF_UNIX, SOCK_STREAM, 0); if ($sock < 0) { echo "socket_create() failed: ", socket_strerror($sock), "\n"; + system("/bin/rm -f " . $sockname); exit(2); } $ret = socket_bind($sock, $sockname); if ($ret < 0) { echo "socket_bind() failed: ", socket_strerror($ret), "\n"; + system("/bin/rm -f " . $sockname); exit(3); } $ret = socket_listen($sock, 5); if ($ret < 0) { echo "socket_listen() failed: ", socket_strerror($ret), "\n"; + system("/bin/rm -f " . $sockname); exit(4); } @@ -85,20 +88,23 @@ if (!$ctdlsock) { exit(5); } -echo "Connected to Citadel server.\n"; -$buf = fgets($ctdlsock, 4096); -echo $buf, "\n"; +// Read the greeting from the Citadel server. +if (!$buf = fgets($ctdlsock, 4096)) { + socket_close ($sock); + system("/bin/rm -f " . $sockname); + exit(6); +} + +// Make sure the server is allowing logins. +if (substr($buf, 0, 1) != "2") { + socket_close ($sock); + system("/bin/rm -f " . $sockname); + exit(7); +} do { $msgsock = socket_accept($sock); - if ($msgsock < 0) { - echo "socket_accept() failed: ", - socket_strerror($msgsock), "\n"; - break; - } - - do { - echo "Reading a line...\n"; + if ($msgsock >= 0) do { $buf = sock_gets($msgsock); if ($buf !== false) { fwrite($ctdlsock, $buf . "\n", (strlen($buf)+1) ); @@ -107,13 +113,12 @@ do { } } while($buf !== false); - echo "Closing socket.\n"; - socket_close ($msgsock); } while (true); -socket_close ($sock); +socket_close($sock); +socket_close($ctdlsock); system("/bin/rm -f " . $sockname); exit(0);