From 79c6572256a01279d9e4f0b436d334f4fd739866 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 21 Oct 2010 23:31:41 +0200 Subject: 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 --- lib/tsocket/tsocket.h | 13 +++++++++---- lib/tsocket/tsocket_bsd.c | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'lib/tsocket') diff --git a/lib/tsocket/tsocket.h b/lib/tsocket/tsocket.h index 3dd96664ea..3aca536124 100644 --- a/lib/tsocket/tsocket.h +++ b/lib/tsocket/tsocket.h @@ -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 diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c index f544e8672e..019bf4266b 100644 --- a/lib/tsocket/tsocket_bsd.c +++ b/lib/tsocket/tsocket_bsd.c @@ -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); } -- cgit