All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* ANNOUNCE: libtirpc-1.0.1 released.
@ 2015-10-31 19:51 Steve Dickson
  2015-11-01 10:51 ` Andreas Radke
  0 siblings, 1 reply; 6+ messages in thread
From: Steve Dickson @ 2015-10-31 19:51 UTC (permalink / raw
  To: libtirpc; +Cc: Linux NFS Mailing list

Hello,

The 1.0.1 version of libtirpc has just been release.

In this release the SONAME has been changed to 3.0.0 to
reflect a number of changes in the API. Those changes 
were needed to make the Linux version of libtirpc 
more compatible with other implementations  

The is also a number of bug fixes including fixing 
several memory leaks. 

The tarball:
   http://sourceforge.net/projects/libtirpc/files/libtirpc/1.0.1/libtirpc-1.0.1.tar.bz2

Release notes:
    http://sourceforge.net/projects/libtirpc/files/libtirpc/1.0.1/Release-0.3.2.txt

The git tree is at:
   git://linux-nfs.org/~steved/libtirpc


steved.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ANNOUNCE: libtirpc-1.0.1 released.
  2015-10-31 19:51 ANNOUNCE: libtirpc-1.0.1 released Steve Dickson
@ 2015-11-01 10:51 ` Andreas Radke
  2015-11-01 17:57   ` [Libtirpc-devel] " Peter Rosin
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Radke @ 2015-11-01 10:51 UTC (permalink / raw
  To: Steve Dickson; +Cc: libtirpc, Linux NFS Mailing list

[-- Attachment #1: Type: text/plain, Size: 1728 bytes --]

Am Sat, 31 Oct 2015 15:51:54 -0400
schrieb Steve Dickson <SteveD@redhat.com>:

> Hello,
> 
> The 1.0.1 version of libtirpc has just been release.
> 
> In this release the SONAME has been changed to 3.0.0 to
> reflect a number of changes in the API. Those changes 
> were needed to make the Linux version of libtirpc 
> more compatible with other implementations  

This break rpcbind recompilation:

src/rpcb_svc_com.c: In function 'handle_reply':
src/rpcb_svc_com.c:1298:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
has no member named 'xp_auth' xprt->xp_auth = &svc_auth_none;
      ^
In file included from /usr/include/tirpc/rpc/rpc.h:62:0,
                 from src/rpcb_svc_com.c:48:
src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
                      ^
/usr/include/tirpc/rpc/svc_auth.h:63:7: note: in definition of macro
'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
       ^
src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
                      ^
/usr/include/tirpc/rpc/svc_auth.h:63:43: note: in definition of macro
'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
                                           ^
src/rpcb_svc_com.c:1301:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
has no member named 'xp_auth' xprt->xp_auth = NULL;
      ^
Makefile:481: recipe for target 'src/rpcb_svc_com.o' failed
make: *** [src/rpcb_svc_com.o] Error 1
make: *** Waiting for unfinished jobs....
==> ERROR: A failure occurred in build().

Do you have a fix?

-Andy
Arch Linux

[-- Attachment #2: Digitale Signatur von OpenPGP --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Libtirpc-devel] ANNOUNCE: libtirpc-1.0.1 released.
  2015-11-01 10:51 ` Andreas Radke
@ 2015-11-01 17:57   ` Peter Rosin
  2015-11-01 19:26     ` Chuck Lever
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Rosin @ 2015-11-01 17:57 UTC (permalink / raw
  To: Andreas Radke, Steve Dickson; +Cc: Linux NFS Mailing list, libtirpc


On 2015-11-01 11:51, Andreas Radke wrote:
> Am Sat, 31 Oct 2015 15:51:54 -0400
> schrieb Steve Dickson <SteveD@redhat.com>:
>
>> Hello,
>>
>> The 1.0.1 version of libtirpc has just been release.
>>
>> In this release the SONAME has been changed to 3.0.0 to
>> reflect a number of changes in the API. Those changes
>> were needed to make the Linux version of libtirpc
>> more compatible with other implementations
> This break rpcbind recompilation:
>
> src/rpcb_svc_com.c: In function 'handle_reply':
> src/rpcb_svc_com.c:1298:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
> has no member named 'xp_auth' xprt->xp_auth = &svc_auth_none;
>        ^
> In file included from /usr/include/tirpc/rpc/rpc.h:62:0,
>                   from src/rpcb_svc_com.c:48:
> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>                        ^
> /usr/include/tirpc/rpc/svc_auth.h:63:7: note: in definition of macro
> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>         ^
> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>                        ^
> /usr/include/tirpc/rpc/svc_auth.h:63:43: note: in definition of macro
> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>                                             ^
> src/rpcb_svc_com.c:1301:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
> has no member named 'xp_auth' xprt->xp_auth = NULL;
>        ^
> Makefile:481: recipe for target 'src/rpcb_svc_com.o' failed
> make: *** [src/rpcb_svc_com.o] Error 1
> make: *** Waiting for unfinished jobs....
> ==> ERROR: A failure occurred in build().
>
> Do you have a fix?
>

Should be as simple as (not even compile-tested):

diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
index 4ae93f1..38f163f 100644
--- a/src/rpcb_svc_com.c
+++ b/src/rpcb_svc_com.c
@@ -1295,10 +1295,8 @@ handle_reply(int fd, SVCXPRT *xprt)
      a.rmt_localvers = fi->versnum;

      xprt_set_caller(xprt, fi);
-    xprt->xp_auth = &svc_auth_none;
+    SVC_XP_AUTH(xprt) = svc_auth_none;
      svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
-    SVCAUTH_DESTROY(xprt->xp_auth);
-    xprt->xp_auth = NULL;
  done:
      if (buffer)
          free(buffer);

But that breaks compatibility with earlier libtirpc of course...

Cheers,
Peter


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Libtirpc-devel] ANNOUNCE: libtirpc-1.0.1 released.
  2015-11-01 17:57   ` [Libtirpc-devel] " Peter Rosin
@ 2015-11-01 19:26     ` Chuck Lever
  2015-11-01 21:53       ` Peter Rosin
  0 siblings, 1 reply; 6+ messages in thread
From: Chuck Lever @ 2015-11-01 19:26 UTC (permalink / raw
  To: Peter Rosin
  Cc: Andreas Radke, Steve Dickson, Linux NFS Mailing List,
	libtirpc List


> On Nov 1, 2015, at 12:57 PM, Peter Rosin <peda@lysator.liu.se> wrote:
> 
> 
> On 2015-11-01 11:51, Andreas Radke wrote:
>> Am Sat, 31 Oct 2015 15:51:54 -0400
>> schrieb Steve Dickson <SteveD@redhat.com>:
>> 
>>> Hello,
>>> 
>>> The 1.0.1 version of libtirpc has just been release.
>>> 
>>> In this release the SONAME has been changed to 3.0.0 to
>>> reflect a number of changes in the API. Those changes
>>> were needed to make the Linux version of libtirpc
>>> more compatible with other implementations
>> This break rpcbind recompilation:
>> 
>> src/rpcb_svc_com.c: In function 'handle_reply':
>> src/rpcb_svc_com.c:1298:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>> has no member named 'xp_auth' xprt->xp_auth = &svc_auth_none;
>>       ^
>> In file included from /usr/include/tirpc/rpc/rpc.h:62:0,
>>                  from src/rpcb_svc_com.c:48:
>> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>>                       ^
>> /usr/include/tirpc/rpc/svc_auth.h:63:7: note: in definition of macro
>> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>>        ^
>> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>>                       ^
>> /usr/include/tirpc/rpc/svc_auth.h:63:43: note: in definition of macro
>> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>>                                            ^
>> src/rpcb_svc_com.c:1301:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>> has no member named 'xp_auth' xprt->xp_auth = NULL;
>>       ^
>> Makefile:481: recipe for target 'src/rpcb_svc_com.o' failed
>> make: *** [src/rpcb_svc_com.o] Error 1
>> make: *** Waiting for unfinished jobs....
>> ==> ERROR: A failure occurred in build().
>> 
>> Do you have a fix?
>> 
> 
> Should be as simple as (not even compile-tested):
> 
> diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
> index 4ae93f1..38f163f 100644
> --- a/src/rpcb_svc_com.c
> +++ b/src/rpcb_svc_com.c
> @@ -1295,10 +1295,8 @@ handle_reply(int fd, SVCXPRT *xprt)
>      a.rmt_localvers = fi->versnum;
> 
>      xprt_set_caller(xprt, fi);
> -    xprt->xp_auth = &svc_auth_none;
> +    SVC_XP_AUTH(xprt) = svc_auth_none;
>      svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
> -    SVCAUTH_DESTROY(xprt->xp_auth);
> -    xprt->xp_auth = NULL;
>  done:
>      if (buffer)
>          free(buffer);
> 
> But that breaks compatibility with earlier libtirpc of course…
> 

#if defined(SVC_XP_AUTH)
SVC_XP_AUTH(xprt) = svc_auth_none;
#else

 . . .

#endif

But I wonder if that’s even necessary now. See rpcbind
commit 86036582c001.


--
Chuck Lever
chucklever@gmail.com




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Libtirpc-devel] ANNOUNCE: libtirpc-1.0.1 released.
  2015-11-01 19:26     ` Chuck Lever
@ 2015-11-01 21:53       ` Peter Rosin
  2015-11-01 22:00         ` Chuck Lever
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Rosin @ 2015-11-01 21:53 UTC (permalink / raw
  To: Chuck Lever
  Cc: Andreas Radke, Steve Dickson, Linux NFS Mailing List,
	libtirpc List


On 2015-11-01 20:26, Chuck Lever wrote:
>> On Nov 1, 2015, at 12:57 PM, Peter Rosin <peda@lysator.liu.se> wrote:
>>
>>
>> On 2015-11-01 11:51, Andreas Radke wrote:
>>> Am Sat, 31 Oct 2015 15:51:54 -0400
>>> schrieb Steve Dickson <SteveD@redhat.com>:
>>>
>>>> Hello,
>>>>
>>>> The 1.0.1 version of libtirpc has just been release.
>>>>
>>>> In this release the SONAME has been changed to 3.0.0 to
>>>> reflect a number of changes in the API. Those changes
>>>> were needed to make the Linux version of libtirpc
>>>> more compatible with other implementations
>>> This break rpcbind recompilation:
>>>
>>> src/rpcb_svc_com.c: In function 'handle_reply':
>>> src/rpcb_svc_com.c:1298:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>> has no member named 'xp_auth' xprt->xp_auth = &svc_auth_none;
>>>       ^
>>> In file included from /usr/include/tirpc/rpc/rpc.h:62:0,
>>>                  from src/rpcb_svc_com.c:48:
>>> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>>>                       ^
>>> /usr/include/tirpc/rpc/svc_auth.h:63:7: note: in definition of macro
>>> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>>>        ^
>>> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>>>                       ^
>>> /usr/include/tirpc/rpc/svc_auth.h:63:43: note: in definition of macro
>>> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>>>                                            ^
>>> src/rpcb_svc_com.c:1301:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>> has no member named 'xp_auth' xprt->xp_auth = NULL;
>>>       ^
>>> Makefile:481: recipe for target 'src/rpcb_svc_com.o' failed
>>> make: *** [src/rpcb_svc_com.o] Error 1
>>> make: *** Waiting for unfinished jobs....
>>> ==> ERROR: A failure occurred in build().
>>>
>>> Do you have a fix?
>>>
>> Should be as simple as (not even compile-tested):
>>
>> diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
>> index 4ae93f1..38f163f 100644
>> --- a/src/rpcb_svc_com.c
>> +++ b/src/rpcb_svc_com.c
>> @@ -1295,10 +1295,8 @@ handle_reply(int fd, SVCXPRT *xprt)
>>      a.rmt_localvers = fi->versnum;
>>
>>      xprt_set_caller(xprt, fi);
>> -    xprt->xp_auth = &svc_auth_none;
>> +    SVC_XP_AUTH(xprt) = svc_auth_none;
>>      svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
>> -    SVCAUTH_DESTROY(xprt->xp_auth);
>> -    xprt->xp_auth = NULL;
>>  done:
>>      if (buffer)
>>          free(buffer);
>>
>> But that breaks compatibility with earlier libtirpc of course…
>>
> #if defined(SVC_XP_AUTH)
> SVC_XP_AUTH(xprt) = svc_auth_none;
> #else
>
>  . . .
>
> #endif
>
> But I wonder if that’s even necessary now. See rpcbind
> commit 86036582c001.
>
Yes, it is fishy to clobber the server auth stuff, so it is probably best to just zap
the svc_auth_none assignment altogether. However, the core initializes the
server auth to svc_auth_none at the beginning of handling each separate call,
so if you somehow use a xprt to send replies before it has taken a call (is that
even possible?), there will be no server auth. In that very dubious case, the
assignment is essential.

I have not looked at the rpcbind code in any depth whatsoever and don't know
anything about the semantics of this "handle_reply" function. But, since it is
a "reply", there will presumably have been a preceding "call", presumably on
the same transport, in which case the server auth have been initialized. So, it
is safe to drop the svc_auth_none assignment.           Presumably. :-)

Cheers,
Peter

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Libtirpc-devel] ANNOUNCE: libtirpc-1.0.1 released.
  2015-11-01 21:53       ` Peter Rosin
@ 2015-11-01 22:00         ` Chuck Lever
  0 siblings, 0 replies; 6+ messages in thread
From: Chuck Lever @ 2015-11-01 22:00 UTC (permalink / raw
  To: Peter Rosin
  Cc: Andreas Radke, Steve Dickson, Linux NFS Mailing List,
	libtirpc List


> On Nov 1, 2015, at 4:53 PM, Peter Rosin <peda@lysator.liu.se> wrote:
> 
> 
> On 2015-11-01 20:26, Chuck Lever wrote:
>>> On Nov 1, 2015, at 12:57 PM, Peter Rosin <peda@lysator.liu.se> wrote:
>>> 
>>> 
>>> On 2015-11-01 11:51, Andreas Radke wrote:
>>>> Am Sat, 31 Oct 2015 15:51:54 -0400
>>>> schrieb Steve Dickson <SteveD@redhat.com>:
>>>> 
>>>>> Hello,
>>>>> 
>>>>> The 1.0.1 version of libtirpc has just been release.
>>>>> 
>>>>> In this release the SONAME has been changed to 3.0.0 to
>>>>> reflect a number of changes in the API. Those changes
>>>>> were needed to make the Linux version of libtirpc
>>>>> more compatible with other implementations
>>>> This break rpcbind recompilation:
>>>> 
>>>> src/rpcb_svc_com.c: In function 'handle_reply':
>>>> src/rpcb_svc_com.c:1298:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>>> has no member named 'xp_auth' xprt->xp_auth = &svc_auth_none;
>>>>      ^
>>>> In file included from /usr/include/tirpc/rpc/rpc.h:62:0,
>>>>                 from src/rpcb_svc_com.c:48:
>>>> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>>> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>>>>                      ^
>>>> /usr/include/tirpc/rpc/svc_auth.h:63:7: note: in definition of macro
>>>> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>>>>       ^
>>>> src/rpcb_svc_com.c:1300:22: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>>> has no member named 'xp_auth' SVCAUTH_DESTROY(xprt->xp_auth);
>>>>                      ^
>>>> /usr/include/tirpc/rpc/svc_auth.h:63:43: note: in definition of macro
>>>> 'SVCAUTH_DESTROY' ((*((auth)->svc_ah_ops->svc_ah_destroy))(auth))
>>>>                                           ^
>>>> src/rpcb_svc_com.c:1301:6: error: 'SVCXPRT {aka struct __rpc_svcxprt}'
>>>> has no member named 'xp_auth' xprt->xp_auth = NULL;
>>>>      ^
>>>> Makefile:481: recipe for target 'src/rpcb_svc_com.o' failed
>>>> make: *** [src/rpcb_svc_com.o] Error 1
>>>> make: *** Waiting for unfinished jobs....
>>>> ==> ERROR: A failure occurred in build().
>>>> 
>>>> Do you have a fix?
>>>> 
>>> Should be as simple as (not even compile-tested):
>>> 
>>> diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
>>> index 4ae93f1..38f163f 100644
>>> --- a/src/rpcb_svc_com.c
>>> +++ b/src/rpcb_svc_com.c
>>> @@ -1295,10 +1295,8 @@ handle_reply(int fd, SVCXPRT *xprt)
>>>     a.rmt_localvers = fi->versnum;
>>> 
>>>     xprt_set_caller(xprt, fi);
>>> -    xprt->xp_auth = &svc_auth_none;
>>> +    SVC_XP_AUTH(xprt) = svc_auth_none;
>>>     svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
>>> -    SVCAUTH_DESTROY(xprt->xp_auth);
>>> -    xprt->xp_auth = NULL;
>>> done:
>>>     if (buffer)
>>>         free(buffer);
>>> 
>>> But that breaks compatibility with earlier libtirpc of course…
>>> 
>> #if defined(SVC_XP_AUTH)
>> SVC_XP_AUTH(xprt) = svc_auth_none;
>> #else
>> 
>> . . .
>> 
>> #endif
>> 
>> But I wonder if that’s even necessary now. See rpcbind
>> commit 86036582c001.
>> 
> Yes, it is fishy to clobber the server auth stuff, so it is probably best to just zap
> the svc_auth_none assignment altogether. However, the core initializes the
> server auth to svc_auth_none at the beginning of handling each separate call,
> so if you somehow use a xprt to send replies before it has taken a call (is that
> even possible?), there will be no server auth. In that very dubious case, the
> assignment is essential.
> 
> I have not looked at the rpcbind code in any depth whatsoever and don't know
> anything about the semantics of this "handle_reply" function. But, since it is
> a "reply", there will presumably have been a preceding "call", presumably on
> the same transport, in which case the server auth have been initialized. So, it
> is safe to drop the svc_auth_none assignment.           Presumably. :-)

The original 2012 rpcbind fix smells a little like a
workaround for a libtirpc bug. It would be nice if there
was a unit test somewhere to confirm that setting xp_auth
is no longer needed with the current libtirpc (or help us
ferret out the libtirpc bug if it still exists).


--
Chuck Lever
chucklever@gmail.com




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-11-01 22:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-31 19:51 ANNOUNCE: libtirpc-1.0.1 released Steve Dickson
2015-11-01 10:51 ` Andreas Radke
2015-11-01 17:57   ` [Libtirpc-devel] " Peter Rosin
2015-11-01 19:26     ` Chuck Lever
2015-11-01 21:53       ` Peter Rosin
2015-11-01 22:00         ` Chuck Lever

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.