diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-07-13 06:35:07 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-07-13 06:35:07 +0000 |
commit | 85bdd43ea13f717c749c842d477d41e7518fffc1 (patch) | |
tree | a2f312460f7563a711530830dd4129f5541125ab | |
parent | a6b0a0ad6031b533b16a87b58969e48bbac28f26 (diff) | |
download | gnutls-85bdd43ea13f717c749c842d477d41e7518fffc1.tar.gz |
Added gnutls_transport_set_ptr2() which accepts two pointers.
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | lib/gnutls.h.in.in | 6 | ||||
-rw-r--r-- | lib/gnutls_buffers.c | 4 | ||||
-rw-r--r-- | lib/gnutls_int.h | 3 | ||||
-rw-r--r-- | lib/gnutls_record.c | 46 |
5 files changed, 56 insertions, 6 deletions
@@ -2,6 +2,9 @@ Version 0.5.? - Corrected the m4 macros which used <gnutls.h> instead of <gnutls/gnutls.h> - Documentation fixes +- Added gnutls_transport_set_ptr2() function, which accepts two + different pointers, to be used while receiving, and + while sending data. Version 0.5.0 (6/07/2002) - Added X.509 certificate tests in tests/ directory diff --git a/lib/gnutls.h.in.in b/lib/gnutls.h.in.in index 9ba7923e9d..b29140f2cd 100644 --- a/lib/gnutls.h.in.in +++ b/lib/gnutls.h.in.in @@ -294,7 +294,13 @@ int gnutls_dh_params_generate( gnutls_datum* prime, gnutls_datum* generator, int typedef ssize_t (*GNUTLS_PULL_FUNC)(GNUTLS_TRANSPORT_PTR, void*, size_t); typedef ssize_t (*GNUTLS_PUSH_FUNC)(GNUTLS_TRANSPORT_PTR, const void*, size_t); void gnutls_transport_set_ptr(GNUTLS_STATE state, GNUTLS_TRANSPORT_PTR ptr); +void gnutls_transport_set_ptr2(GNUTLS_STATE state, GNUTLS_TRANSPORT_PTR recv_ptr, + GNUTLS_TRANSPORT_PTR send_ptr); + GNUTLS_TRANSPORT_PTR gnutls_transport_get_ptr(GNUTLS_STATE state); +void gnutls_transport_get_ptr2(GNUTLS_STATE state, + GNUTLS_TRANSPORT_PTR *recv_ptr, + GNUTLS_TRANSPORT_PTR *send_ptr); void gnutls_transport_set_lowat( GNUTLS_STATE state, int num); diff --git a/lib/gnutls_buffers.c b/lib/gnutls_buffers.c index eba4ae7bc8..728db7aa59 100644 --- a/lib/gnutls_buffers.c +++ b/lib/gnutls_buffers.c @@ -205,7 +205,7 @@ static ssize_t _gnutls_read( GNUTLS_STATE state, void *iptr, size_t sizeOfPtr, i #ifdef READ_DEBUG int j,x, sum=0; #endif - GNUTLS_TRANSPORT_PTR fd = state->gnutls_internals.transport_ptr; + GNUTLS_TRANSPORT_PTR fd = state->gnutls_internals.transport_recv_ptr; left = sizeOfPtr; while (left > 0) { @@ -522,7 +522,7 @@ ssize_t _gnutls_io_write_buffered( GNUTLS_STATE state, const void *iptr, size_t ssize_t retval, i; const opaque * ptr; int ret; - GNUTLS_TRANSPORT_PTR fd = state->gnutls_internals.transport_ptr; + GNUTLS_TRANSPORT_PTR fd = state->gnutls_internals.transport_send_ptr; ptr = iptr; diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index f5a72719ad..a8faa0465d 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -518,7 +518,8 @@ typedef struct { /* Holds the first argument of PUSH and PULL * functions; */ - int transport_ptr; + int transport_recv_ptr; + int transport_send_ptr; /* STORE & RETRIEVE functions. Only used if other * backend than gdbm is used. diff --git a/lib/gnutls_record.c b/lib/gnutls_record.c index 72fb582331..473ca7e050 100644 --- a/lib/gnutls_record.c +++ b/lib/gnutls_record.c @@ -85,8 +85,29 @@ void gnutls_transport_set_lowat(GNUTLS_STATE state, int num) { * handle. * **/ -void gnutls_transport_set_ptr(GNUTLS_STATE state, GNUTLS_TRANSPORT_PTR ptr) { - state->gnutls_internals.transport_ptr = ptr; +void gnutls_transport_set_ptr(GNUTLS_STATE state, GNUTLS_TRANSPORT_PTR ptr) +{ + state->gnutls_internals.transport_recv_ptr = ptr; + state->gnutls_internals.transport_send_ptr = ptr; +} + + +/** + * gnutls_transport_set_ptr2 - Used to set first argument of the transport functions + * @state: is a &GNUTLS_STATE structure. + * @recv_ptr: is the value for the pull function + * @send_ptr: is the value for the push function + * + * Used to set the first argument of the transport function (like PUSH and + * PULL). In berkeley style sockets this function will set the connection + * handle. With this function you can use two different pointers for + * receiving and sending. + * + **/ +void gnutls_transport_set_ptr2(GNUTLS_STATE state, GNUTLS_TRANSPORT_PTR recv_ptr, + GNUTLS_TRANSPORT_PTR send_ptr) { + state->gnutls_internals.transport_send_ptr = send_ptr; + state->gnutls_internals.transport_recv_ptr = recv_ptr; } /** @@ -98,7 +119,26 @@ void gnutls_transport_set_ptr(GNUTLS_STATE state, GNUTLS_TRANSPORT_PTR ptr) { * **/ GNUTLS_TRANSPORT_PTR gnutls_transport_get_ptr(GNUTLS_STATE state) { - return state->gnutls_internals.transport_ptr; + return state->gnutls_internals.transport_recv_ptr; +} + +/** + * gnutls_transport_get_ptr2 - Used to return the first argument of the transport functions + * @state: is a &GNUTLS_STATE structure. + * @recv_ptr: will hold the value for the pull function + * @send_ptr: will hold the value for the push function + * + * Used to get the first argument of the transport function (like PUSH and + * PULL). This must have been set using gnutls_transport_set_ptr(). + * + **/ +void gnutls_transport_get_ptr2(GNUTLS_STATE state, + GNUTLS_TRANSPORT_PTR *recv_ptr, + GNUTLS_TRANSPORT_PTR *send_ptr) +{ + + *recv_ptr = state->gnutls_internals.transport_recv_ptr; + *send_ptr = state->gnutls_internals.transport_send_ptr; } /** |