体验新版 GitCode,发现更多精彩内容 >>
commit d68c96cf53f188030452aadec466aa6389e81511 Author: Henning Rogge <hrogge@gmail.com> Date: Tue May 13 21:23:36 2014 +0200 Hotfix for much too long http headers diff --git a/lib/txtinfo/src/olsrd_txtinfo.c b/lib/txtinfo/src/olsrd_txtinfo.c index b56545d..2bcce41 100644 --- a/lib/txtinfo/src/olsrd_txtinfo.c +++ b/lib/txtinfo/src/olsrd_txtinfo.c @@ -301,8 +301,15 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att FD_ZERO(&rfds); FD_SET((unsigned int)ipc_connection, &rfds); /* Win32 needs the cast here */ if (0 <= select(ipc_connection + 1, &rfds, NULL, NULL, &tv)) { - char requ[128]; - ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ), 0); /* Win32 needs the cast here */ + char requ[1024]; + ssize_t s = recv(ipc_connection, (void *)&requ, sizeof(requ)-1, 0); /* Win32 needs the cast here */ + + if (s == sizeof(requ)-1) { + /* input was much too long, just skip the rest */ + char dummy[1024]; + + while (recv(ipc_connection, (void *)&dummy, sizeof(dummy), 0) == sizeof(dummy), 0); + } if (0 < s) { requ[s] = 0; /* To print out neighbours only on the Freifunk Status @@ -329,6 +336,7 @@ ipc_action(int fd, void *data __attribute__ ((unused)), unsigned int flags __att if (0 != strstr(requ, "/ver")) send_what |= SIW_VERSION; } } + if ( send_what == 0 ) send_what = SIW_ALL; }