Hey mon ami !!!!, toi aussi tu veux ton propre asterisk à la maison pour faire plein de loli choses ? Toi aussi tu tourne actuellement sur un OpenBSD 4.3-release ? haaaaa, et donc toi aussi tu as compte sip chez Free ?

Bah alors toi aussi tu te tape cette erreur dans la console asterisk ?

chan_sip.c:6705 determine_firstline_parts: Bad request protocol Packet

J'ai tout bon ?!

Bon bah pas de problème, voici un petit tipaize qui va te permettre de corriger cela, en passant par un petit patch.

Tout d'abord, tu auras besoin des ports que tu peux prendre ici: ftp://ftp.irisa.fr/pub/OpenBSD/4.3/ports.tar.gz

# tar zxf ports.tar.gz -C /usr

Vérifie ensuite que tu as bien le paquet xbase43.tgz, sinon télécharge et décompresse le

# tar zxf xbase43.tgz -C /

Bon maintenant, file dans /usr/ports/telephony/asterisk

c'est la que tout va se jouer, mais avant, quelques tips:

Travaillant sur une soekris avec un disque dur, je vais spécifier de ne pas construire toutes les dépendances, mais uniquement les installer via les paquets, pour cela:

# echo "FETCH_PACKAGES=yes" >> /etc/mk.conf

De plus, j'utilise un FS MFS ou tout le travail sera fait, on edit le fstab pour y ajouter la ligne suivante:

swap    /usr/obj mfs    rw,-s=2000000 0 0

puis

# echo WRKOBJDIR=/usr/obj/ports >> /etc/mk.conf

voila, c'est prêt, ya plus qu'à !

toujours depuis /usr/ports/telephony/asterisk:

# make extract

Cela va télécharger les sources d'asterisk et installer les dépendances pour sa futur compilation.

Ensuite on file dans le repertoire ou l'on va travailler les sources:

cd `make show=WRKSRC`

Tu devrais te retrouver quelque part par la: /usr/obj/ports/asterisk-1.4.18/asterisk-1.4.18

Tu colle ce qui suit dans un fichier (source de l'information: http://lists.digium.com/pipermail/asterisk-dev/2006-May/021033.html)

diff -r 574e1faffbed -r fc55abbddee7 channels/chan_sip.c
--- a/channels/chan_sip.c	Wed May 31 15:41:11 2006 +0200
+++ b/channels/chan_sip.c	Wed May 31 16:47:21 2006 +0200
@@ -5145,6 +5145,12 @@ static int determine_firstline_parts(str
 		if (*e)
 			*e++ = '\0';
 		e = ast_skip_blanks(e);
+		if (!strcasecmp(req->rlPart1, "Cirpack") &&
+		    !strcasecmp(req->rlPart2, "KeepAlive") &&
+		    !strcasecmp(e, "Packet")) {
+			/* Silently drop bogus Cirpack keepalive packets */
+			return -1;
+		}
 		if (strcasecmp(e, "SIP/2.0") ) {
 			ast_log(LOG_WARNING, "Bad request protocol %s\n", e);
 			return -1;

Donc comme tu sais lire, tu aura deviner qu'il faut patcher le fichier channels/chan_sip.c

On va tester ton patch, vérifier qu'il ne retourne aucune erreur:

patch -p1 -C < ton.patch

S'il n'y a rien à signaler, alors on patch pour de vrai !

patch -p1 < ton.patch

logiquement apres tu dois avoir un fichier channels/chan_sip.c.orig
tu retourne ensuite dans les ports: /usr/ports/telephony/asterisk et tu lance ceci:

make update-patches

tu pourras vérifier qu'un nouveau fichier est bien généré:

patches/patch-channels_chan_sip_c

Si c'est bien le cas, bah bravo, on peut donc compiler asterisk avec son patch ! Let's go

make clean && make

voila, apres tu aura un asterisk tout neuf patché pour ne plus afficher cette erreur, hé oui, on ne corrige rien en fait, on annule juste ce message :)

Avant d'installer ce nouveau paquet, bien supprimer l'ancien !

pkg_delete asterisk

et ensuite on install le notre:

make install

Merci Gaston pour le coup de main o
et DbD- pour le petit tips sur l'option FETCH_PACKAGES=yes dans /etc/mk.conf

openbsd/astrisk_sur_openbsd_4.3_passage_par_les_ports.txt · Last modified: 2010/01/12 13:29 (external edit)