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:
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})
 
@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.
 
@chaos2000 : Aber der 2. Teil meines Post hilft ja vielleicht ;)

Wie gesagt hatte damit noch nie Schwierigkeiten.
 
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:
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:
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.
 
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
 
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:

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,197
Beiträge
2,247,888
Mitglieder
373,755
Neuestes Mitglied
grdex
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.