* move some more vars from the session context to strbuf (the use of StrBufAppendTemp...
[citadel.git] / webcit / paging.c
index 502f9c069a1ff1a28a58de88e98b271d291a4717..d3319f127f3bebaf891ed073eb5d92ef6a099e82 100644 (file)
@@ -35,6 +35,7 @@ void display_page(void)
 
        wprintf("<FORM METHOD=\"POST\" action=\"page_user\">\n");
        wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
+       wprintf("<input type=\"hidden\" name=\"template\" value=\"who\">\n");
 
        wprintf("<TABLE border=0 width=100%%><TR><TD>\n");
 
@@ -93,7 +94,7 @@ void page_user(void)
                }
        }
 
-       who();
+       url_do_template();
 }
 
 
@@ -106,10 +107,13 @@ void do_chat(void)
        char buf[SIZ];
 
        /** First, check to make sure we're still allowed in this room. */
-       serv_printf("GOTO %s", WC->wc_roomname);
+       serv_printf("GOTO %s", ChrPtr(WC->wc_roomname));
        serv_getln(buf, sizeof buf);
        if (buf[0] != '2') {
-               smart_goto("_BASEROOM_");
+               StrBuf *Buf;
+               Buf = NewStrBufPlain(HKEY("_BASEROOM_"));
+               smart_goto(Buf);
+               FreeStrBuf(&Buf);
                return;
        }
 
@@ -128,7 +132,7 @@ void do_chat(void)
         * output by begin_ajax_response() happen to be the ones we need.)
         */
        begin_ajax_response();
-       do_template("chatframeset");
+       do_template("chatframeset", NULL);
        end_ajax_response();
        return;
 }
@@ -141,6 +145,7 @@ void do_chat(void)
  */
 void page_popup(void)
 {
+       int len;
        char buf[SIZ];
 
        /** JavaScript function to alert the user that popups are probably blocked */
@@ -157,8 +162,8 @@ void page_popup(void)
 
        /** First, do the check as part of our page load. */
        serv_puts("NOOP");
-       serv_getln(buf, sizeof buf);
-       if (buf[3] == '*') {
+       len = serv_getln(buf, sizeof buf);
+       if ((len >= 3) && (buf[3] == '*')) {
                if ((time(NULL) - WC->last_pager_check) > 60) {
                        wprintf("<script type=\"text/javascript\">"
                                " var oWin = window.open('static/instant_messenger.html', "
@@ -227,13 +232,13 @@ int setup_chat_socket(void) {
 
                serv_getln(buf, sizeof buf);
                if (buf[0] == '2') {
-                       serv_printf("USER %s", WC->wc_username);
+                       serv_printf("USER %s", ChrPtr(WC->wc_username));
                        serv_getln(buf, sizeof buf);
                        if (buf[0] == '3') {
-                               serv_printf("PASS %s", WC->wc_password);
+                               serv_printf("PASS %s", ChrPtr(WC->wc_password));
                                serv_getln(buf, sizeof buf);
                                if (buf[0] == '2') {
-                                       serv_printf("GOTO %s", WC->wc_roomname);
+                                       serv_printf("GOTO %s", ChrPtr(WC->wc_roomname));
                                        serv_getln(buf, sizeof buf);
                                        if (buf[0] == '2') {
                                                serv_puts("CHAT");
@@ -302,7 +307,7 @@ void chat_recv(void) {
                pf.fd = WC->chat_sock;
                pf.events = POLLIN;
                pf.revents = 0;
-               if (poll(&pf, 1, 1) > 0) if (pf.revents & POLLIN) {
+               if ((poll(&pf, 1, 1) > 0) && (pf.revents & POLLIN)) {
                        ++got_data;
 
                        /** Temporarily swap the serv and chat sockets during chat talk */
@@ -380,7 +385,7 @@ void chat_recv(void) {
                                if (strcasecmp(cl_user, WC->last_chat_user)) {
                                        wprintf("<B>");
        
-                                       if (!strcasecmp(cl_user, WC->wc_fullname)) {
+                                       if (!strcasecmp(cl_user, ChrPtr(WC->wc_fullname))) {
                                                wprintf("<FONT COLOR=&quot;#FF0000&quot;>");
                                        }
                                        else {