1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

tsocket: let tstream_inet_tcp_connect_recv() optionally return the used local address

tstream_inet_tcp_connect_send() usually only gets no local port number
and it may use the wildcard address '0.0.0.0' or '::'.

tstream_inet_tcp_connect_recv() provides the used local address and port
which are used on the wire.

metze
This commit is contained in:
Stefan Metzmacher 2010-10-21 23:31:41 +02:00
parent d2c653629c
commit 79c6572256
3 changed files with 12 additions and 6 deletions

View File

@ -724,23 +724,28 @@ struct tevent_req *tstream_inet_tcp_connect_send(TALLOC_CTX *mem_ctx,
*
* @param[in] mem_ctx The talloc memory context to use.
*
* @param[in] stream A tstream_context pointer to setup the tcp communication
* @param[out] stream A tstream_context pointer to setup the tcp communication
* on. This function will allocate the memory.
*
* @param[out] local The real 'inet' tsocket_address of the local endpoint.
* This parameter is optional and can be NULL.
*
* @return 0 on success, -1 on error with perrno set.
*/
int tstream_inet_tcp_connect_recv(struct tevent_req *req,
int *perrno,
TALLOC_CTX *mem_ctx,
struct tstream_context **stream);
struct tstream_context **stream,
struct tsocket_address **local)
#else
int _tstream_inet_tcp_connect_recv(struct tevent_req *req,
int *perrno,
TALLOC_CTX *mem_ctx,
struct tstream_context **stream,
struct tsocket_address **local,
const char *location);
#define tstream_inet_tcp_connect_recv(req, perrno, mem_ctx, stream) \
_tstream_inet_tcp_connect_recv(req, perrno, mem_ctx, stream, \
#define tstream_inet_tcp_connect_recv(req, perrno, mem_ctx, stream, local) \
_tstream_inet_tcp_connect_recv(req, perrno, mem_ctx, stream, local, \
__location__)
#endif

View File

@ -2302,10 +2302,11 @@ int _tstream_inet_tcp_connect_recv(struct tevent_req *req,
int *perrno,
TALLOC_CTX *mem_ctx,
struct tstream_context **stream,
struct tsocket_address **local,
const char *location)
{
return tstream_bsd_connect_recv(req, perrno,
mem_ctx, stream, NULL,
mem_ctx, stream, local,
location);
}

View File

@ -248,7 +248,7 @@ static void wrepl_connect_done(struct tevent_req *subreq)
int sys_errno;
ret = tstream_inet_tcp_connect_recv(subreq, &sys_errno,
state, &state->stream);
state, &state->stream, NULL);
if (ret != 0) {
NTSTATUS status = map_nt_error_from_unix(sys_errno);
tevent_req_nterror(req, status);