39 lines
922 B
C
39 lines
922 B
C
|
--- netstate.c.orig Tue Aug 26 10:54:09 2003
|
||
|
+++ netstate.c Thu Nov 2 13:35:27 2006
|
||
|
@@ -128,7 +128,7 @@
|
||
|
memset(&sin, 0, sizeof(sin));
|
||
|
sin.sin_family = AF_INET;
|
||
|
sin.sin_port = htons(cf->ns_port);
|
||
|
- sin.sin_addr.s_addr = INADDR_ANY;
|
||
|
+ sin.sin_addr = cf->ns_ip_addr;
|
||
|
if (bind(netstate_sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
|
||
|
report(LOG_ERR, "bind port %d: %m", ntohs(sin.sin_port));
|
||
|
close(netstate_sock);
|
||
|
@@ -405,6 +405,14 @@
|
||
|
_exit(1);
|
||
|
}
|
||
|
#endif
|
||
|
+int
|
||
|
+iskoi8(unsigned char ch)
|
||
|
+{
|
||
|
+ if ( ch == 163 ) return 1;
|
||
|
+ if ( ch == 179 ) return 1;
|
||
|
+ if ( ch >= 192 ) return 1;
|
||
|
+ return 0;
|
||
|
+}
|
||
|
|
||
|
void *
|
||
|
netstate_serve(arg)
|
||
|
@@ -505,9 +513,9 @@
|
||
|
set_timer(0, interrupt);
|
||
|
#endif
|
||
|
if (!cp) break;
|
||
|
- while (isprint(*cp)) cp++;
|
||
|
+ while ( iskoi8(*cp) || isprint(*cp) ) cp++;
|
||
|
*cp = '\0';
|
||
|
-
|
||
|
+
|
||
|
next = input;
|
||
|
if ((cp = my_strsep(&next, " ")) == NULL) {
|
||
|
bad_input++;
|