+
+ // BINARY_FOLLOWS mode
+ if (substr($talkback, 0, 1) == "6") {
+ $bytes = intval(substr($talkback, 4));
+ if (CITADEL_DEBUG_PROXY)
+ {
+ syslog(LOG_DEBUG, "reading ".$bytes." bytes from server");
+ }
+ $buf = fread($ctdlsock, $bytes);
+ if (CITADEL_DEBUG_PROXY)
+ {
+ syslog(LOG_DEBUG, "Read: ".$buf);
+ }
+ socket_write($msgsock, $buf, $bytes);
+ }
+
+ // LISTING_FOLLOWS mode
+ if (substr($talkback, 0, 1) == "1") do {
+ $buf = fgets($ctdlsock, 4096);
+ if (!$buf) {
+ $buf = "000\n" ;
+ }
+ else {
+ socket_write($msgsock, $buf,
+ strlen($buf));
+ }
+ } while ($buf != "000\n");
+
+ // SEND_LISTING mode
+ if (substr($talkback, 0, 1) == "4") do {
+ socket_clear_error($msgsock);
+ $buf = sock_gets($msgsock);
+ if (socket_last_error($msgsock)) {
+ $buf = "000" ;
+ }
+ if (!fwrite($ctdlsock, $buf . "\n")) {
+ fclose($ctdlsock);
+ socket_close($sock);
+ system("/bin/rm -f " . $sockname);
+ exit(11);
+ }
+ } while ($buf != "000");
+