endpoint_name needs to be reentrant and stack-safe

This commit is contained in:
Tony Garnock-Jones 2010-12-27 18:50:58 -05:00
parent 0a895ac5c0
commit 63ee4ecea3
2 changed files with 3 additions and 5 deletions

6
net.c
View File

@ -38,12 +38,10 @@ void get_addr_name(char *namebuf, size_t buflen, struct sockaddr_in const *sin)
}
}
char const *endpoint_name(struct sockaddr_in const *peername) {
void endpoint_name(struct sockaddr_in const *peername, cmsg_bytes_t result) {
char name[256];
static char result[256];
get_addr_name(name, sizeof(name), peername);
snprintf(result, sizeof(result), "%s:%d", name, ntohs(peername->sin_port));
return result;
snprintf(result.bytes, result.len, "%s:%d", name, ntohs(peername->sin_port));
}
static void accept_connection(int servfd, short what, void *arg) {

2
net.h
View File

@ -2,7 +2,7 @@
#define cmsg_net_h
extern void get_addr_name(char *namebuf, size_t buflen, struct sockaddr_in const *sin);
extern char const *endpoint_name(struct sockaddr_in const *peername);
extern void endpoint_name(struct sockaddr_in const *peername, cmsg_bytes_t result);
extern void start_net(int listen_port);