1
0
Fork 0
mirror of git://git.psyced.org/git/psyced synced 2024-08-15 03:25:10 +00:00

unlink detection rewrite - please test this

This commit is contained in:
psyc://psyced.org/~lynX 2011-01-19 22:19:34 +01:00
parent 6b8e138eb4
commit b4867481f4
7 changed files with 70 additions and 36 deletions

View file

@ -1,6 +1,7 @@
// $Id: user.c,v 1.15 2008/12/09 19:27:32 lynx Exp $ // vim:syntax=lpc
//
// handler for PSYC clients
// should be a dummy user object since all user objects
// must be able to handle PSYC clients
#include "common.h"
#include <net.h>
@ -12,14 +13,19 @@ logon() {
#ifdef NO_EXTERNAL_LOGINS
return destruct(ME);
#endif
#if 0
// psyc users dont have their own socket, so the driver
// does not call disconnected() for them - this enables the
// psyc socket to do that
if (this_interactive()) this_interactive()->do_notify_on_disconnect(ME);
// basically a good idea, but the wrong place to do this. since we
// want to be notified about any of n possible psyc clients we need
// to do this in linkSet(). --lynX
if (this_interactive()) this_interactive()->register_link(ME);
// connection that is creating us, died while we got here.
// rare, but does indeed happen sometimes.
else return destruct(ME);
// i presume the else case is better handled by disconnected() --lynX
#endif
// no lang support here either
vSet("scheme", "psyc");
return ::logon();
@ -27,10 +33,10 @@ logon() {
// errors only, it says
pr(mc, fmt, a,b,c,d,e,f,g,h) {
#if 1 //def PRO_PATH
if (abbrev("_message",mc)) return;
if (v("location"))
sendmsg(v("location"), mc+"_print", sprintf(fmt, a,b,c,d,e,f,g,h) );
#if 1 //ndef DEVELOPMENT
//if (abbrev("_message",mc)) return;
foreach (string location : v("locations")[0])
sendmsg(location, mc+"_print", sprintf(fmt, a,b,c,d,e,f,g,h) );
#else
// checkVar() still calls pr() .... grmlblmblm TODO
raise_error("pr() called\n");