SYN/ACK delays and 139/445

tridge at tridge at
Fri Oct 28 01:52:52 GMT 2005


 > Replying to myself, I've chosen some defaults: flags = 0, only stream
 > sockets and no name resolution. Attached find the untested
 > lib/socket/connect_multi.c proposal.

yep, I think you are right about making it specific to stream
sockets. I'd even be happy to make it specific to ipv4, and expand it
to other domains if/when the need arises.

If you want to keep the domain, then maybe call it 'socket_domain'
instead of 'name' ? When I started reading your code I wondered what
the 'name' argument was in socket_connect_multi_send(), and only
worked it out by seeing it passed to socket_create(). I know you were
just being consistent with what socket_create() uses as its argument,
but perhaps we should change that as well :-)

Other comments: (mostly minor!)

 - using a NULL context in the talloc_zero() at the start of
   socket_connect_multi_send() should be avoided. That means we'll
   need a mem_ctx argument to socket_connect_multi_send().

 - if you are using talloc_zero() to create the ctx, then why do?
	result->async.fn = NULL;

 - the socket_create() and socket_connect() code in
   socket_connect_multi_send() is really just a duplicate of
   connect_multi_fire_next(). Why not just call
   connect_multi_fire_next() from within socket_connect_multi_send()
   to set off the first connect? You could either pass a NULL 'te', or
   pull the core out of connect_multi_fire_next() into a separate
   function that takes the state instead of the void*.

 - why pre-declare prototypes for connect_multi_connect_handler() and
   connect_multi_fire_next()? Might be better to just put the _send()
   and _recv() functions at the bottom of the file.

Cheers, Tridge

More information about the samba-technical mailing list