on strange tcp error; log local port number and socket type

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13449 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2004-03-07 14:54:49 +00:00
parent 601d343b4d
commit 9fe5dfb67c

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997-2003 Kungliga Tekniska H<>gskolan * Copyright (c) 1997-2004 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -195,6 +195,7 @@ parse_ports(const char *str)
struct descr { struct descr {
int s; int s;
int type; int type;
int port;
unsigned char *buf; unsigned char *buf;
size_t size; size_t size;
size_t len; size_t len;
@@ -264,6 +265,7 @@ init_socket(struct descr *d, krb5_address *a, int family, int type, int port)
} }
#endif #endif
d->type = type; d->type = type;
d->port = port;
if(bind(d->s, sa, sa_size) < 0){ if(bind(d->s, sa, sa_size) < 0){
char a_str[256]; char a_str[256];
@@ -344,6 +346,20 @@ init_sockets(struct descr **desc)
return num; return num;
} }
/*
*
*/
static const char *
descr_type(struct descr *d)
{
if (d->type == SOCK_DGRAM)
return "udp";
else if (d->type == SOCK_STREAM)
return "tcp";
return "unknown";
}
/* /*
* handle the request in `buf, len', from `addr' (or `from' as a string), * handle the request in `buf, len', from `addr' (or `from' as a string),
* sending a reply in `reply'. * sending a reply in `reply'.
@@ -706,7 +722,9 @@ handle_tcp(struct descr *d, int index, int min_free)
return; return;
} else if (n == 0) { } else if (n == 0) {
krb5_warnx(context, "connection closed before end of data after %d " krb5_warnx(context, "connection closed before end of data after %d "
"bytes from %s", d[index].len, d[index].addr_string); "bytes from %s to %s/%d", d[index].len,
d[index].addr_string, descr_type(d + index),
ntohs(d[index].port));
clear_descr (d + index); clear_descr (d + index);
return; return;
} }
@@ -725,7 +743,10 @@ handle_tcp(struct descr *d, int index, int min_free)
if (ret < 0) if (ret < 0)
clear_descr (d + index); clear_descr (d + index);
} else if (d[index].len > 4) { } else if (d[index].len > 4) {
kdc_log (0, "TCP data of strange type from %s", d[index].addr_string); kdc_log (0, "TCP data of strange type from %s to %s/%d",
d[index].addr_string, descr_type(d + index),
ntohs(d[index].port));
clear_descr(d + index);
return; return;
} }
if (ret < 0) if (ret < 0)