minissdpd: unlink unix socket before binding
see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644510
This commit is contained in:
parent
e667e962ac
commit
fd96a3ddcd
|
@ -1,5 +1,8 @@
|
||||||
$Id: Changelog.txt,v 1.19 2011/07/30 13:16:22 nanard Exp $
|
$Id: Changelog.txt,v 1.19 2011/07/30 13:16:22 nanard Exp $
|
||||||
|
|
||||||
|
2011/10/07:
|
||||||
|
unlink unix socket before binding.
|
||||||
|
|
||||||
VERSION 1.1:
|
VERSION 1.1:
|
||||||
|
|
||||||
2011/07/30:
|
2011/07/30:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: minissdpd.c,v 1.24 2011/07/30 13:10:05 nanard Exp $ */
|
/* $Id: minissdpd.c,v 1.25 2011/10/07 09:13:25 nanard Exp $ */
|
||||||
/* MiniUPnP project
|
/* MiniUPnP project
|
||||||
* (c) 2007-2011 Thomas Bernard
|
* (c) 2007-2011 Thomas Bernard
|
||||||
* website : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
* website : http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
||||||
|
@ -462,12 +462,21 @@ OpenUnixSocket(const char * path)
|
||||||
{
|
{
|
||||||
struct sockaddr_un addr;
|
struct sockaddr_un addr;
|
||||||
int s;
|
int s;
|
||||||
|
int rv;
|
||||||
s = socket(AF_UNIX, SOCK_STREAM, 0);
|
s = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if(s < 0)
|
if(s < 0)
|
||||||
{
|
{
|
||||||
syslog(LOG_ERR, "socket(AF_UNIX): %m");
|
syslog(LOG_ERR, "socket(AF_UNIX): %m");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/* unlink the socket pseudo file before binding */
|
||||||
|
rv = unlink(path);
|
||||||
|
if(rv < 0 && errno != ENOENT)
|
||||||
|
{
|
||||||
|
syslog(LOG_ERR, "unlink(unixsocket, \"%s\"): %m", path);
|
||||||
|
close(s);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
addr.sun_family = AF_UNIX;
|
addr.sun_family = AF_UNIX;
|
||||||
strncpy(addr.sun_path, path, sizeof(addr.sun_path));
|
strncpy(addr.sun_path, path, sizeof(addr.sun_path));
|
||||||
if(bind(s, (struct sockaddr *)&addr,
|
if(bind(s, (struct sockaddr *)&addr,
|
||||||
|
|
Loading…
Reference in New Issue