LDAPget stürzt ab unter 1.2 oder 1.4

cibi

Mitglied
Mitglied seit
6 Apr 2005
Beiträge
561
Punkte für Reaktionen
0
Punkte
0
Mein Asterisk 1.4 Test war schnell beendet, als LDAPget den Asterisk zum Coredump brachte.

Nach einem Tipp vom Programmier von LDAPget wechselte ich von


Variante I
Code:
config:
filter = (&(objectClass=*)(|(telephoneNumber=*%s)(mobile=*%s)(fax=*%s)(homePhone=*%s)(pager=*%s)))
extension.ael:
Set(CALLERID(name)=${CALLERIDNUM});
Set(clen=${LEN(${CALLERID(number)})});
// Nummer sollte nicht zu kurz sein, um falsche Suchergebnisse zu vermeiden
if (${clen} > 6 ) { // Achtung Klammer nicht versetzten
    Set(num=${CALLERID(number):1}); // Nummer um erste Null kuerzen, fuer internationle Anrufer mues
    LDAPget(CALLERIDNAME=cidname/${num},${num},${num},${num}); // "unscharfe" Suche nach CALLERID
}
zu
Variante II
Code:
config:
filter = (&(objectClass=*)(|(telephoneNumber=*${num})(mobile=*${num})(fax=*${num})(homePhone=*${num})(pager=*${num})))
extension.ael
...
LDAPget(CALLERIDNAME=cidname);  // "unscharfe" Suche nach CALLERID
...
Variante II funktioniert auch unter Asterisk 1.4, aber dafür stürzt damit 1.2 ab.

Hat jemand ebenfalls die Probleme auf seinem System?


Anhang:

Asterisk crashes when in function
Code:
static int ldap_exec (struct ast_channel *chan, void *data)
Code:
 if(keys && strstr(filter, "%s") != NULL) {
    filter = (char *)ast_realloc(filter,(strlen(filter)+strlen(keys)+1)*sizeof(char));
    while((key = strsep(&keys, "|")) != NULL) {
      if((tail = strstr(filter, "%s")) != NULL) {
           memmove(tail+strlen(key), tail+2, strlen(tail+2)+1);
           memcpy(tail, key, strlen(key));
      }
    }
  }
is called. to be exact: it's the realloc that causes the problem, but i
don't know why.

Test with Kubuntu 6.10, Asterisk 1.4, i386
Also tested on Debian etch, with Asterisk 1.4. svn branch (1 week ago,
more or less...)
appldap 2.0rc1 http://www.mezzo.net/asterisk/app_ldap.html

app_ldap 1.06rc6+Asterisk 1.2.13 works fine in the same environment
 
Zuletzt bearbeitet:

xtr|BasiX

Neuer User
Mitglied seit
20 Okt 2006
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Warum arbeitest du eigentlich mit der extensiuons.ael ?
Mit der extensions.conf laesst sich doch auch alles machen ?!?
Ich hab auch nen Asterisk 1.2.xxx Server und mit den unten Aufgelisteten Settings klappt es problemlos.


Auszug ldap.conf
filter =(&(objectClass=xxx)(telephoneNumber=%s))
attribute = cn

Auszug extensions.conf
exten = bla,blub,LDAPget(CIDNAME=cidname/${CALLERIDNUM})
exten = bla,blub+1,Set(CALLERID(name)=${CIDNAME})
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
@xtr|BasiX

sicher geht auch alles mit der conf; ael ist aber in einigen dingen eleganter.
Ausserdem hilft das nicht zur Beantwortung der Frage

@cibi

ich habe es z.Z. nur auf asterisk 1.2 installiert, werde aber den Test heute mal auf 1.4 machen.
 

xtr|BasiX

Neuer User
Mitglied seit
20 Okt 2006
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
@chaos2000 : Aber der 2. Teil meines Post hilft ja vielleicht ;)

Wie gesagt hatte damit noch nie Schwierigkeiten.
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
Stimmt da hast Du recht, muss ich überlesen haben.

Dann nehme ich alles zurück - sorry :)
Hast recht, ich habe es auch so
 
Zuletzt bearbeitet:

cibi

Mitglied
Mitglied seit
6 Apr 2005
Beiträge
561
Punkte für Reaktionen
0
Punkte
0
xtr|BasiX schrieb:
Auszug ldap.conf
filter =(&(objectClass=xxx)(telephoneNumber=%s))
(...)
Genau das verwende ich auch unter 1.2 ohne Probleme, nur mit 1.4 macht dies Probleme.
(s. BSP Variante I und II).

vollkommen OT:
xtr|BasiX schrieb:
Warum arbeitest du eigentlich mit (...)ael ?
Weil ich den Syntax viel besser und logischer finde (als C/C++ Kenner natürlich etwas voreingenommen...)

BTW: AEL v2 wird einfach in den .conf syntax konvertiert. man kann sich das sogar ausgeben lassen und als extensions.conf
(s. Signatur AEL)
 
Zuletzt bearbeitet:

cibi

Mitglied
Mitglied seit
6 Apr 2005
Beiträge
561
Punkte für Reaktionen
0
Punkte
0
Kurz:
(nochmal, da dank zweimaligem Copy&Paste nichts mehr stimmte...)

Variante I: Asterisk 1.2 keine Probleme
Variante II: Asterisk 1.4 -> coredump

Variante I: Asterisk 1.2 -> coredump
Variante II: Asterisk 1.4 keine Probleme


chaos2000 schrieb:
ich habe es z.Z. nur auf asterisk 1.2 installiert, werde aber den Test heute mal auf 1.4 machen.
Wäre nett (gilt auch für andere ;) , muss aber nicht unbedingt 1.4 sein, Variante II mit 1.2 würde mir auch langen.



chaos2000 schrieb:
@xtr|BasiX
Ausserdem hilft das nicht zur Beantwortung der Frage
(...)
Stimmt da hast Du recht, muss ich überlesen haben.
Deine erste Antwort war schon richtig, s. zweiter Beitrag von mir.
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
Die aktuelle Version (2.0rc1) lässt sich bei mir unter asterisk 1.2 nicht kompilieren.
Mit meiner installierten Version gibt es bei Variante II keine Abstürze, aber es funktioniert auch nicht
 

cibi

Mitglied
Mitglied seit
6 Apr 2005
Beiträge
561
Punkte für Reaktionen
0
Punkte
0
chaos2000 schrieb:
Die aktuelle Version (2.0rc1) lässt sich bei mir unter asterisk 1.2 nicht kompilieren.
Vermutlich nur für 1.4 (?)

chaos2000 schrieb:
Mit meiner installierten Version gibt es bei Variante II keine Abstürze, aber es funktioniert auch nicht
Danke für die Rückmeldung.

Ich hatte gestern ein paar Tests mit 1.4 gemacht (hints/pickup), und dazu die neuste 1.4 svn Version verwendet: gleicher Fehler.
(aber wie gesagt Variante II geht unter 1.4)

Update Dezember 2007: Mit der erwähnten Variante II läuft es jetzt schon seit knapp 10 Monaten ohne Probleme.
 
Zuletzt bearbeitet: