projects
/
citadel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix default landing mechanism
[citadel.git]
/
webcit
/
roomops.c
diff --git
a/webcit/roomops.c
b/webcit/roomops.c
index 8720aecbc4e782b46d8c8c7c08898f289358aa1f..cf0b370bb43db8734a57716ce67bb8afe66d917a 100644
(file)
--- a/
webcit/roomops.c
+++ b/
webcit/roomops.c
@@
-127,8
+127,10
@@
void dotgoto(void) {
* goto next room
*/
void smart_goto(const StrBuf *next_room) {
* goto next room
*/
void smart_goto(const StrBuf *next_room) {
- gotoroom(next_room);
- readloop(readnew, eUseDefault);
+ if (gotoroom(next_room) == 2)
+ readloop(readnew, eUseDefault);
+ else
+ do_404();
}
/*
}
/*
@@
-182,6
+184,10
@@
long gotoroom(const StrBuf *gname)
long err = 0;
int room_name_supplied = 0;
int is_baseroom = 0;
long err = 0;
int room_name_supplied = 0;
int is_baseroom = 0;
+ int failvisibly;
+
+ /* on fail, should we fallback to _BASEROOM_? */
+ failvisibly = ibstr("failvisibly");
/* store ungoto information */
if (StrLength(gname) > 0) {
/* store ungoto information */
if (StrLength(gname) > 0) {
@@
-206,6
+212,10
@@
long gotoroom(const StrBuf *gname)
}
StrBuf_ServGetln(Buf);
if (GetServerStatus(Buf, &err) != 2) {
}
StrBuf_ServGetln(Buf);
if (GetServerStatus(Buf, &err) != 2) {
+ if (failvisibly) {
+ FreeStrBuf(&Buf);
+ return err;
+ }
serv_puts("GOTO _BASEROOM_");
StrBuf_ServGetln(Buf);
/*
serv_puts("GOTO _BASEROOM_");
StrBuf_ServGetln(Buf);
/*