flush();
echo "Writing...<BR>\n";
flush();
- fwrite($clientsocket, $command, strlen($command));
+ // fwrite($clientsocket, $command, strlen($command));
+ fwrite($clientsocket, $command);
echo "Reading...<BR>\n";
flush();
$response = fgets($clientsocket, 4096);
echo "Connected. Performing echo tests.<BR>\n";
flush();
$cmd = "ECHO test echo string upon connection\n";
- fwrite($clientsocket, $cmd, strlen($cmd));
+ fwrite($clientsocket, $cmd);
$response = fgets($clientsocket, 4096);
echo "Response is: ", $response, "<BR>\n";
flush();
$cmd = "ECHO second test for echo\n";
- fwrite($clientsocket, $cmd, strlen($cmd));
+ fwrite($clientsocket, $cmd);
$response = fgets($clientsocket, 4096);
echo "Response is: ", $response, "<BR>\n";
flush();
}
+//
+// Clear out both our Citadel session and our PHP session. We're done.
+//
function ctdl_end_session() {
global $clientsocket, $session;
- session_destroy();
+ // Tell the Citadel server to terminate our connection.
+ fwrite($clientsocket, "QUIT\n");
+ fclose($clientsocket);
unset($clientsocket);
- unset($session);
- echo "Session destroyed.<BR>\n";
-
+ // Now clear our PHP session.
+ unset($session);
+ session_destroy();
}
?>
$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);
}
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) );
}
} 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);