lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 13 Jul 2011 16:28:11 -0600 From: Chris Friesen <chris.friesen@...band.com> To: Rick Jones <rick.jones2@...com> CC: Eric Dumazet <eric.dumazet@...il.com>, netdev@...r.kernel.org Subject: Re: any way to let host act as TCP server OR client on same IP/port? On 07/13/2011 02:36 PM, Rick Jones wrote: >>> >>> I was thinking the same thing, but it appears to not work under: >> >> <snip> >> >>> if (bind(listener, >>> (struct sockaddr *)&me, >>> sizeof(me))< 0) { >>> perror("bind listener"); >>> exit(-1); >>> } >>> >>> if (listen(listener,128)< 0) { >>> perror("listen listener"); >>> exit(-1); >>> } >>> >>> /* connect something to it */ >>> if (connect(client,(struct sockaddr *)&me,sizeof(me))< 0) { >>> perror("connect client"); >>> exit(-1); >> >> In our case we don't need to actually be connected, just be listening >> and ready to either accept() a connection or connect() to someone else. > > If one calls listen() against a socket, TCP connections can be > established at any time, before the accept() calls are made. As for what > might happen when one calls connect() on a listen socket when there are > queued connections awaiting accept() I've no idea. In Linux at least it appears that you aren't allowed to call listen() and then connect(). See below, however. > If your application's sematics are OK with pending connections being > dumped, and there is no issue with something else binding to IP,port and > putting it into the LISTEN state, and if I've read between the lines of > what you've written correctly, you could simply close() the listen > socket and create a fresh socket with which to do the connect()? Ah, of course. It actually looks like a shutdown() might be sufficient to reset the state of the socket enough to allow me to then call connect() without needing to create a new socket and bind it. I'll see what the application guys say. Thanks, Chris -- Chris Friesen Software Developer GENBAND chris.friesen@...band.com www.genband.com -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists