From f4616332be5a808a2609f608731b40d1b73ec502 Mon Sep 17 00:00:00 2001 From: "psyc://psyced.org/~lynX" <@> Date: Sun, 13 Sep 2009 11:23:52 +0200 Subject: [PATCH] 444 --- CHANGESTODO | 27 +++++++++++++++++++++++++++ world/net/psyc/edit.i | 17 +++++++++++++---- world/net/sockets.c | 9 +++++---- world/net/user.c | 2 ++ 4 files changed, 47 insertions(+), 8 deletions(-) diff --git a/CHANGESTODO b/CHANGESTODO index 2d588e3..f0ce4b8 100644 --- a/CHANGESTODO +++ b/CHANGESTODO @@ -68,6 +68,29 @@ ________________________________________________________________________ tgX sagt: on reconnect i didn't get any _echo_place_enter_login's from this room, then no response for _request_do_enter, and after a _request_do_leave i get replies for enter/leave but instead of _echo_place_enter/leave i get _notice_place_enter/leave ? should /load inform that errors go to the console? + +________________________________________________________________________ +:_group psyc://psyced.org/@welcome +:_source_identification psyc://xxx.no-ip.org/~xxx + +:_tag msg_406 +_request_do_message +bug! +. + +:_source_relay psyc://xxx.no-ip.org/~0 +:_context psyc://psyced.org/@welcome + +:_nick_place psyc://psyced.org/@welcome +:_nick xxx +:_time_INTERNAL 1245932297 +_message_echo_public +bug! +. + +In welcome spricht «psyc://xxx.no-ip.org/~0» xxx: the bug in the scratchpad. why psyced echoes packets to "~0" instead of my real account? the same thing is for echo_private +In welcome spricht «psyc://xxx.no-ip.org/~0» xxx: it should either ignore first packet (if psyced is sure that i'm not authorized with password) or return echo to that account instead of misterious "0" + ________________________________________________________________________ == psyced 1.0 ========================================================== ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ @@ -1537,6 +1560,10 @@ ________________________________________________________________________ - place and v("place") aren't in sync (new changes for psyc clients) +- when forwarding _message_echo_private from a remote server to a local + client, newlines get replaced by mere spaces. where does that happen + and how can it be avoided? + + if newbie: directly show register dialog (lynx should add _status_unregistered or so) diff --git a/world/net/psyc/edit.i b/world/net/psyc/edit.i index 62c9bc5..5824241 100644 --- a/world/net/psyc/edit.i +++ b/world/net/psyc/edit.i @@ -177,19 +177,28 @@ static varargs string psyc_render(mixed source, string mc, mixed data, data = data? to_string(data): ""; #endif } - else if (data == S_GLYPH_PACKET_DELIMITER || (strlen(data) > 1 && + else if (data == S_GLYPH_PACKET_DELIMITER || +# ifdef SPYC + // just some random limit that makes us prefer _length + // over scanning data for illegal characters + strlen(data) > 444 || +# endif + (strlen(data) > 1 && data[0] == C_GLYPH_PACKET_DELIMITER && data[1] == '\n') || strstr(data, "\n" S_GLYPH_PACKET_DELIMITER "\n") != -1) { - // this check shouldn't be necessary here: we should check what - // people are typing in usercmd + // we could check what people are typing in usercmd.. then + // again, "illegal" data may also come in from XMPP, and + // anything should be legal in PSYC.. so let's handle it here. # ifdef SPYC needLen++; # else + // old psyc syntax has no clean solution to this problem, + // so we just censor the message. use the new syntax! P1(("%O: %O tried to send %O via psyc. censored.\n", previous_object() || ME, vars["_nick"] || vars, data)) data = "*** censored message ***"; return 0; -# endif +# endif # ifndef NEW_LINE } else # ifdef SPYC diff --git a/world/net/sockets.c b/world/net/sockets.c index 74cf3b0..9fb59e7 100644 --- a/world/net/sockets.c +++ b/world/net/sockets.c @@ -108,11 +108,12 @@ list_sockets(guy, flags) { #endif #if __EFUN_DEFINED__(tls_query_connection_info) tls ? intp(tls[TLS_PROT]) ? - TLS_PROT_NAME(tls[TLS_PROT]) : - tls[TLS_PROT] : "", + TLS_PROT_NAME(tls[TLS_PROT]) || + to_string(tls[TLS_PROT]) : tls[TLS_PROT] : "", tls ? intp(tls[TLS_CIPHER]) ? - TLS_CIPHER_NAME(tls[TLS_CIPHER]) : - tls[TLS_CIPHER] : "" + TLS_CIPHER_NAME(tls[TLS_CIPHER]) + || to_string(tls[TLS_CIPHER]) + : tls[TLS_CIPHER] : "" #else "", "" #endif diff --git a/world/net/user.c b/world/net/user.c index 9f5a420..595f2fa 100644 --- a/world/net/user.c +++ b/world/net/user.c @@ -435,8 +435,10 @@ msg(source, mc, data, mapping vars, showingLog) { && abbrev(SERVER_UNIFORM +"~", source)) #endif ) { +#ifdef PRO_PATH if (data && index(data, '\n') != -1) data = replace(data, "\n", " "); +#endif #ifdef USE_THE_NICK if (t != source) { if (objectp(source)) {