- Joined
- Jan 3, 2009
- Messages
- 11
- Reaction score
- 0
I'm using 3CX 7.9.4249.0.
I'm using some Linksys SPA-3102's (5.1.7(GW) and 3.3.6(GW) firmware) and am getting "Error 400: BAD REQUEST (multiple values in single-value header) FROM" responses from my PBX.
According to packets grabbed by Wireshark, the INVITE from the SPA3102 goes out with the following FROM field:
From: MACKEY, RON E <sip:[email protected]>;tag=b9c8ff5d2616dc03o1
The ASCII version:
0000 46 72 6f 6d 3a 20 4d 41 43 4b 45 59 2c 20 52 4f From: MACKEY, RO
0010 4e 20 45 20 3c 73 69 70 3a 36 33 30 33 35 37 38 N E <sip:6303578
0020 31 33 35 40 31 39 32 2e 31 36 38 2e 32 2e 31 33 [email protected]
0030 32 3e 3b 74 61 67 3d 62 39 63 38 66 66 35 64 32 2>;tag=b9c8ff5d2
0040 36 31 36 64 63 30 33 6f 31 0d 0a 616dc03o1..
My reading of the SIP RFC (and it's been a long time since I read an RFC) says that a display-name containing a comma must be enclosed in quotes (""). This would seem to be confirmed by the bad request response from the IP-PBX.
Some questions:
1. Is this an error in the SPA3102?
2. If so, is there any way to prevent the SPA3102 from sending the display-name without disabling caller id altogether?
3. Is this an incorrect interpretation of the RFC by me and 3CX? In other words is the SPA3102 okay in passing an unquoted caller ID display name?
4. I've always ascribed to the theory that you should be liberal in what you accept and conservative in what you send. Even if this is an error by the SPA3102, would the 3CX be best in accepting the packet since it's pretty clear what the correct behavior should be?
I'm running firmware 5.1.7(GW), but the problem also occurs with the 3.3.6(GW) firmware.
Additional information...
The SPA3102 has a field called "Escape Display Name" under the SIP parameters that I would guess should quote the display name, but setting it to "Yes" does nothing.
If I disable passing the PSTN caller-ID, then the SPA3102 uses the Display Name out of the Subscriber information as the Display info it passes on the INVITE. In this case, the "Escape Display Name" will quote the display name if the field is set to "Yes" and will not quote the display name if the field is set to "No", so I'm absolutely sure I'm getting the field set appropriately. However, quoting the field that I statically entered in another place isn't overly interesting. I need it to quote the incoming caller id name as passed in from the telephone company.
In fact, as I tried to figure this out, I tried to use the PSTN CID Name Prefix (under the PSTN tab) as a way to get it to quote the CID Name. What I found is that you can enter any special characters you'd like (commas, quotes, etc.) and it will happily generate an illegally formatted INVITE packet on it's own by pre-pending these characters to the passed name. I'm actually a little shocked that you can get it to generate illegal frames so easily.
This is killing me, as my only recourse seems to be to disable incoming Caller-ID altogether. Since incoming call flow is a big reason I want to convert to an IP-PBX, it makes the SPA3102's worthless if I can't resolve this issue. I didn't have much luck on the Linksys forum (the only suggestion there was to not use commas)
I used Wireshark to sniff the network to verify that the SIP packet generated by the SPA3102 is improperly formatted.
According to packets grabbed by wireshark, the INVITE from the SPA3102 goes out with the following FROM field:
From: MACKEY, RON E <sip:[email protected]>;tag=b9c8ff5d2616dc0 3o1
The ASCII version:
0000 46 72 6f 6d 3a 20 4d 41 43 4b 45 59 2c 20 52 4f From: MACKEY, RO
0010 4e 20 45 20 3c 73 69 70 3a 36 33 30 33 35 37 38 N E <sip:6303578
0020 31 33 35 40 31 39 32 2e 31 36 38 2e 32 2e 31 33 [email protected]
0030 32 3e 3b 74 61 67 3d 62 39 63 38 66 66 35 64 32 2>;tag=b9c8ff5d2
0040 36 31 36 64 63 30 33 6f 31 0d 0a 616dc03o1..
Does anyone know how to get the Caller ID NAME quoted properly as it's passed from the PSTN to the VOIP gateway, or at least is there any way to pass the incoming Caller ID from the PSTN but NOT pass the Caller ID Name? As long as I can get the ID, I can work around not getting the name.
Best regards,
scruffy-bob
I'm using some Linksys SPA-3102's (5.1.7(GW) and 3.3.6(GW) firmware) and am getting "Error 400: BAD REQUEST (multiple values in single-value header) FROM" responses from my PBX.
According to packets grabbed by Wireshark, the INVITE from the SPA3102 goes out with the following FROM field:
From: MACKEY, RON E <sip:[email protected]>;tag=b9c8ff5d2616dc03o1
The ASCII version:
0000 46 72 6f 6d 3a 20 4d 41 43 4b 45 59 2c 20 52 4f From: MACKEY, RO
0010 4e 20 45 20 3c 73 69 70 3a 36 33 30 33 35 37 38 N E <sip:6303578
0020 31 33 35 40 31 39 32 2e 31 36 38 2e 32 2e 31 33 [email protected]
0030 32 3e 3b 74 61 67 3d 62 39 63 38 66 66 35 64 32 2>;tag=b9c8ff5d2
0040 36 31 36 64 63 30 33 6f 31 0d 0a 616dc03o1..
My reading of the SIP RFC (and it's been a long time since I read an RFC) says that a display-name containing a comma must be enclosed in quotes (""). This would seem to be confirmed by the bad request response from the IP-PBX.
Some questions:
1. Is this an error in the SPA3102?
2. If so, is there any way to prevent the SPA3102 from sending the display-name without disabling caller id altogether?
3. Is this an incorrect interpretation of the RFC by me and 3CX? In other words is the SPA3102 okay in passing an unquoted caller ID display name?
4. I've always ascribed to the theory that you should be liberal in what you accept and conservative in what you send. Even if this is an error by the SPA3102, would the 3CX be best in accepting the packet since it's pretty clear what the correct behavior should be?
I'm running firmware 5.1.7(GW), but the problem also occurs with the 3.3.6(GW) firmware.
Additional information...
The SPA3102 has a field called "Escape Display Name" under the SIP parameters that I would guess should quote the display name, but setting it to "Yes" does nothing.
If I disable passing the PSTN caller-ID, then the SPA3102 uses the Display Name out of the Subscriber information as the Display info it passes on the INVITE. In this case, the "Escape Display Name" will quote the display name if the field is set to "Yes" and will not quote the display name if the field is set to "No", so I'm absolutely sure I'm getting the field set appropriately. However, quoting the field that I statically entered in another place isn't overly interesting. I need it to quote the incoming caller id name as passed in from the telephone company.
In fact, as I tried to figure this out, I tried to use the PSTN CID Name Prefix (under the PSTN tab) as a way to get it to quote the CID Name. What I found is that you can enter any special characters you'd like (commas, quotes, etc.) and it will happily generate an illegally formatted INVITE packet on it's own by pre-pending these characters to the passed name. I'm actually a little shocked that you can get it to generate illegal frames so easily.
This is killing me, as my only recourse seems to be to disable incoming Caller-ID altogether. Since incoming call flow is a big reason I want to convert to an IP-PBX, it makes the SPA3102's worthless if I can't resolve this issue. I didn't have much luck on the Linksys forum (the only suggestion there was to not use commas)
I used Wireshark to sniff the network to verify that the SIP packet generated by the SPA3102 is improperly formatted.
According to packets grabbed by wireshark, the INVITE from the SPA3102 goes out with the following FROM field:
From: MACKEY, RON E <sip:[email protected]>;tag=b9c8ff5d2616dc0 3o1
The ASCII version:
0000 46 72 6f 6d 3a 20 4d 41 43 4b 45 59 2c 20 52 4f From: MACKEY, RO
0010 4e 20 45 20 3c 73 69 70 3a 36 33 30 33 35 37 38 N E <sip:6303578
0020 31 33 35 40 31 39 32 2e 31 36 38 2e 32 2e 31 33 [email protected]
0030 32 3e 3b 74 61 67 3d 62 39 63 38 66 66 35 64 32 2>;tag=b9c8ff5d2
0040 36 31 36 64 63 30 33 6f 31 0d 0a 616dc03o1..
Does anyone know how to get the Caller ID NAME quoted properly as it's passed from the PSTN to the VOIP gateway, or at least is there any way to pass the incoming Caller ID from the PSTN but NOT pass the Caller ID Name? As long as I can get the ID, I can work around not getting the name.
Best regards,
scruffy-bob