From a9fe8f28a4a9aaf1d9b84dbc6907849ace87f66e Mon Sep 17 00:00:00 2001 From: Fritz Elfert Date: Tue, 6 Feb 2001 01:01:46 +0000 Subject: - Added KDE2 PropsDialog Plugin (incomplete) - Fixed some KDE related autoconf stuff - Added PlpDrive class for returning results from rfsv:devinfo - Added auto-watch in ppsocket and finally got rid of the nasty SIGPIPE bug. Now it's no more necessary to ignore SIGPIPE in applications. - Made constructors of rfsv16, rfsv32, rpcs16 and rpcs32 private to enforce use of the factories. - Removed error output in the factories and replaced that by error codes which can be retrieved and evaluated by an application. --- ncpd/main.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'ncpd/main.cc') diff --git a/ncpd/main.cc b/ncpd/main.cc index 76d0bb2..d8a28ed 100644 --- a/ncpd/main.cc +++ b/ncpd/main.cc @@ -63,7 +63,7 @@ int_handler(int) }; void -checkForNewSocketConnection(ppsocket & skt, int &numScp, socketChan ** scp, ncp * a, IOWatch & iow) +checkForNewSocketConnection(ppsocket & skt, int &numScp, socketChan ** scp, ncp * a, IOWatch &iow) { string peer; ppsocket *next = skt.accept(&peer); @@ -73,11 +73,17 @@ checkForNewSocketConnection(ppsocket & skt, int &numScp, socketChan ** scp, ncp cout << "New socket connection from " << peer << endl; if ((numScp == 7) || (!a->gotLinkChannel())) { bufferStore a; + + // Give the client time to send it's version request. + next->dataToGet(1,0); + next->getBufferStore(a, false); + + a.init(); a.addStringT("No Psion Connected\n"); next->sendBufferStore(a); next->closeSocket(); } else - scp[numScp++] = new socketChan(next, a, iow); + scp[numScp++] = new socketChan(next, a); } } @@ -126,7 +132,6 @@ main(int argc, char **argv) sockNum = ntohs(se->s_port); // Command line parameter processing - signal(SIGPIPE, SIG_IGN); for (int i = 1; i < argc; i++) { if (!strcmp(argv[i], "-p") && i + 1 < argc) { sockNum = atoi(argv[++i]); @@ -187,6 +192,7 @@ main(int argc, char **argv) case 0: signal(SIGTERM, term_handler); signal(SIGINT, int_handler); + skt.setWatch(&iow); if (!skt.listen("127.0.0.1", sockNum)) cerr << "listen on port " << sockNum << ": " << strerror(errno) << endl; else { @@ -209,7 +215,6 @@ main(int argc, char **argv) a->setVerbose(nverbose); a->setLinkVerbose(lverbose); a->setPktVerbose(pverbose); - iow.addIO(skt.socket()); while (active) { // sockets pollSocketConnections(numScp, scp); -- cgit v1.2.3