[GnomeMeeting-devel-list] [PATCH] Misuse of SetLocalUserName(), AddAliasName()



Hallo all,
  this is an email which is prepared for Damien, but I decided to send
this email to gnomemeeting-devel-list for review and discussion.

  Patch:

  http://www.linuxvoip.net/fayn/files/gnomemeeting/gnomemeeting-0.98.5-gatekeeper.patch


---

Hallo Damien,
  I'm using several VoIP telco providers and I had a big problem with
registering to their gatekeepers with your GnomeMeeting. I found "bug"
and I have to discuss it with you.

  Let's say that my details are ...

  Firstname:  Robert
  Lastname:   Vojta
  Gatekeeper: gkp.fayn.cz
  User name:  vojta
  Password :  pass

  When I try this with ohphone ...

  ohphone --gatekeeper gkp.fayn.cz --user vojta --password pass -l

  ... everything works fine. I decided to try your GnomeMeeting and it
doesn't work. So, I started ethereal and I found, that you are sending
"Robert Vojta" as user name to the gatekeeper, but you have to send
"vojta".

  OpenH323 library sends gatekeeper user name which is set by
SetLocalUserName(), not first alias added by AddAliasName(). You can
see this in ohphone source code for instance:

  if (args.HasOption('u')) {
    PStringArray aliases = args.GetOptionString('u').Lines();
    SetLocalUserName(aliases[0]);
    for (i = 1; i < aliases.GetSize(); i++)
      AddAliasName(aliases[i]);
  }

  As you can see, first --user argument is used for SetLocalUserName()
and remaining aliases are used for AddAliasName() function. That's
correct way.

  But, when I look into endpoint.cpp (your GnomeMeeting), you are
creating local_name variable from firstname, " ", lastname. So,
local_name variable is "Robert Vojta". That's OKay, but you can't use
it in SetLocalUserName() when you are working with gatekeeper, it's
correct for point to point calls without gatekeeper.

  So, you have to modify your code in this way ...

gatekeeper.cpp

  endpoint->SetUserNameAndAlias(registering_method);

endpoint.cpp

  void GMH323EndPoint::SetUserNameAndAlias (int registering_method)
  {
  ...
  if (alias && strcmp (alias, "")) {
    if (registering_method != 0)
    {
      SetLocalUserName (alias);
      if (local_name != NULL)
      {
        AddAliasName (local_name);
        g_free (local_name);
      }
    else
      AddAliasName (alias);
    g_free (alias);
  }

  Final result will be ...

  a) if user wants to use gatekeeper, "vojta" will be used for
     SetLocalUserName() and "Robert Vojta" will be used as an alias

  b) if user do not want to use gatekeeper, "Robert Vojta" will be
     used for SetLocalUserName() and "vojta" will be used as an alias

  Without this, you are not able to work with most of gatekeepers over
the whole world.

-- 
Robert Vojta



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]