$FreeBSD$

--- modules/tm/t_msgbuilder.c	2004/06/29 19:22:35	1.1
+++ modules/tm/t_msgbuilder.c	2004/06/29 19:56:19
@@ -124,7 +124,7 @@
 
 	/* User Agent */
 	if (server_signature) {
-		*len += USER_AGENT_LEN + CRLF_LEN;
+		*len += USER_AGENT_LEN + CRLF_LEN + (server_name ? strlen(server_name) : UA_NAME_LEN);
 	}
 	/* Content Length, EoM */
 	*len+=CONTENT_LENGTH_LEN+1 + CRLF_LEN + CRLF_LEN;
@@ -164,7 +164,13 @@
 
 	/* User Agent header */
 	if (server_signature) {
-		append_mem_block(p,USER_AGENT CRLF, USER_AGENT_LEN+CRLF_LEN );
+		append_mem_block(p, USER_AGENT, USER_AGENT_LEN);
+		if (server_name) {
+			append_mem_block(p, server_name, strlen(server_name));
+		} else {
+			append_mem_block(p, UA_NAME, UA_NAME_LEN);
+		}
+		append_mem_block(p, CRLF, CRLF_LEN);
 	}
 	/* Content Length, EoM */
 	append_mem_block(p, CONTENT_LENGTH "0" CRLF CRLF ,
@@ -397,7 +403,7 @@
 	*len += CSEQ_LEN + cseq.len + 1 + method->len + CRLF_LEN;                                    /* CSeq */
 	*len += calculate_routeset_length(dialog);                                                   /* Route set */
 	*len += (body ? (CONTENT_LENGTH_LEN + content_length.len + CRLF_LEN) : 0);                   /* Content-Length */
-	*len += (server_signature ? (USER_AGENT_LEN + CRLF_LEN) : 0);                                /* Signature */
+	*len += (server_signature ? (USER_AGENT_LEN + CRLF_LEN + (server_name ? strlen(server_name) : UA_NAME_LEN)) : 0);/* Signature */
 	*len += (headers ? headers->len : 0);                                                        /* Additional headers */
 	*len += (body ? body->len : 0);                                                              /* Message body */
 	*len += CRLF_LEN;                                                                            /* End of Header */
@@ -426,7 +432,15 @@
 	}
 	
 	     /* Server signature */
-	if (server_signature) memapp(w, USER_AGENT CRLF, USER_AGENT_LEN + CRLF_LEN);
+	if (server_signature) {
+		memapp(w, USER_AGENT, USER_AGENT_LEN);
+		if (server_name) {
+			memapp(w, server_name, strlen(server_name));
+		} else {
+			memapp(w, UA_NAME, UA_NAME_LEN);
+		}
+		memapp(w, CRLF, CRLF_LEN);
+	}
 	if (headers) memapp(w, headers->s, headers->len);
 	memapp(w, CRLF, CRLF_LEN);
      	if (body) memapp(w, body->s, body->len);