From bc59e5d3b498a155ac91a70e104cd895bb5fd6e6 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 10 Nov 2006 19:10:32 +0000 Subject: [PATCH] Handle bind() failure better. --- src/xpdev/xp_syslog.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/xpdev/xp_syslog.c b/src/xpdev/xp_syslog.c index a03669b829..55c4d53937 100644 --- a/src/xpdev/xp_syslog.c +++ b/src/xpdev/xp_syslog.c @@ -62,12 +62,13 @@ void xp_openlog(const char *ident, int logopt, int facility) syslog_sock=socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); if(syslog_sock==INVALID_SOCKET) return; - /* - * If the bind() fails, that's OK... we're just trying to set the source port to - * 514 here as reccomended by the RFC. This isn't REQUIRED though. - */ - bind(syslog_sock, (struct sockaddr *)&syslog_addr, sizeof(syslog_addr)); + if(bind(syslog_sock, (struct sockaddr *)&syslog_addr, sizeof(syslog_addr))) { + syslog_addr.sin_port=0; + if(bind(syslog_sock, (struct sockaddr *)&syslog_addr, sizeof(syslog_addr))) + return; + } syslog_addr.sin_addr.s_addr=resolve_ip(log_host); + syslog_addr.sin_port=htons(SYSLOG_PORT); if(connect(syslog_sock, (struct sockaddr *)&syslog_addr, sizeof(syslog_addr))) { closesocket(syslog_sock); syslog_sock=INVALID_SOCKET; -- GitLab