Bugs item #1692858, was opened at 2007-04-02 14:47
Message generated for change (Comment added) made by cbrody
You can respond by visiting: 

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Chris Brody (cbrody)
Assigned to: Nobody/Anonymous (nobody)
Summary: SIP/SIMPLE register/auth/message problems with Siemens

Initial Comment:
I have encountered several problems when connecting to a Siemens CSCF. I made 
some quick fixes to get this to work, as shown in the attached diff file.

Unfortunately, I did not yet succeed to get the presence information (PUBLISH) 
to work with the Siemens CSCF. I will try again at some other point.

So far, I have got the basic registration and a simple MESSAGE to work.

I am now testing some other functionality with the Siemens CSCF for the next 
1-2 months. If these problems are fixed and committed before I am done, I will 
be happy to try the new version as well.

I will try to make a complete list, as concise as I can:

1. The Siemens CSCF uses abbreviated headers, such as l:0 for Content-Length: 
0. These abbreviated headers are valid according to RFC 3261, but they are not 
supported in the current SIMPLE protocol library.

2. simple.c: in the "auth" HTTP Digest authentication (auth->type == 1), upon 
receiving the WWW-Authenticate:Digest in a challenge response (401 
Unauthorized) to the first REGISTER request, the client must put in a CNONCE 
value, and of course use it in gaim_cipher_http_digest_calculate_session_key() 
& gaim_cipher_http_digest_calculate_response().

3. simple.c: in addition, the qop ("auth" for Siemens) must be used in 

4. Some of the WWW-Authenticate parameters from the Siemens CSCF are separated 
by "," only, no space between them. In fill_auth(), the 2nd g_strsplit() 
function call should be replaced by: parts = g_strsplit_set(hdr, ", ", 0);

5. In send_sip_request(), it is only in the REGISTER message for which the 
Request URI & authentication URI should have been the same. For others such as 
MESSAGE, even though the Request URI has the end-username, the auth URI was 
still sip:servername.

6. To submit a MESSAGE (as well as any other request beyond registration), the 
Proxy-Authorization: must be included using the authorization from the 
successful REGISTER transaction. To fix send_sip_request() for MESSAGE, I put 
the following lines right before if(sip->proxy.type && strcmp(method, 
        if(sip->registrar.type && !strcmp(method, "MESSAGE")) {
                buf = auth_header(sip, &sip->registrar, method, auth_uri);
                auth = g_strdup_printf("Proxy-Authorization: %s", buf);
                gaim_debug(GAIM_DEBUG_MISC, "simple", "header %s", auth);

At this point, my fixes are in rough form. If some fixes are committed, I will 
be happy to try them again assuming that I still have access.



>Comment By: Chris Brody (cbrody)
Date: 2007-04-02 14:49

Logged In: YES 
Originator: YES

File Added: Siemens-message1.zip


You can respond by visiting: 

Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
Gaim-bugs mailing list

Reply via email to