⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msg_read.c

📁 libosip-0.9.7源码
💻 C
📖 第 1 页 / 共 2 页
字号:
  i = strcat_simple_header (dest, &malloc_size, &message,			    sip->from, "From: ", 6,			    ((int (*)(void *, char **)) &from_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i = strcat_simple_header (dest, &malloc_size, &message,			    sip->to, "To: ", 4,			    ((int (*)(void *, char **)) &to_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i = strcat_simple_header (dest, &malloc_size, &message,			    sip->call_id, "Call-ID: ", 9,			    ((int (*)(void *, char **)) &call_id_2char),			    &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i = strcat_simple_header (dest, &malloc_size, &message,			    sip->cseq, "CSeq: ", 6,			    ((int (*)(void *, char **)) &cseq_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message, sip->contacts,				 "Contact: ", 9,				 ((int (*)(void *, char **)) &contact_2char),				 &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i = strcat_headers_one_per_line (dest, &malloc_size, &message,				   sip->authorizations, "Authorization: ", 15,				   ((int (*)(void *, char **))				    &authorization_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message,				 sip->www_authenticates, "WWW-Authenticate: ",				 18,				 ((int (*)(void *, char **))				  &www_authenticate_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message,				 sip->proxy_authenticates,				 "Proxy-Authenticate: ", 20,				 ((int (*)(void *, char **))				  &www_authenticate_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message,				 sip->proxy_authorizations,				 "Proxy-Authorization: ", 21,				 ((int (*)(void *, char **))				  &authorization_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  pos = 0;  while (!list_eol (sip->headers, pos))    {      header_t *header;      header = (header_t *) list_get (sip->headers, pos);      i = header_2char (header, &tmp);      if (i == -1)	{	  sfree (*dest);	  *dest = NULL;	  return -1;	}      sstrncpy (message, tmp, strlen (tmp));      sfree (tmp);      message = message + strlen (message);      sstrncpy (message, CRLF, 2);      message = message + 2;      pos++;    }  i =    strcat_headers_all_on_one_line (dest, &malloc_size, &message, sip->allows,				    "Allow: ", 7,				    ((int (*)(void *, char **))				     &content_length_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i = strcat_simple_header (dest, &malloc_size, &message,			    sip->content_type, "Content-Type: ", 14,			    ((int (*)(void *, char **)) &content_type_2char),			    &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_all_on_one_line (dest, &malloc_size, &message,				    sip->content_encodings,				    "Content-Encoding: ", 18,				    ((int (*)(void *, char **))				     &content_length_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i = strcat_simple_header (dest, &malloc_size, &message,			    sip->mime_version, "Mime-Version: ", 14,			    ((int (*)(void *, char **))			     &content_length_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message,				 sip->call_infos, "Call-Info: ", 11,				 ((int (*)(void *, char **))				  &call_info_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message,				 sip->alert_infos, "Alert-Info: ", 12,				 ((int (*)(void *, char **))				  &call_info_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_one_per_line (dest, &malloc_size, &message,				 sip->error_infos, "Error-Info: ", 12,				 ((int (*)(void *, char **))				  &call_info_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_all_on_one_line (dest, &malloc_size, &message,				    sip->accepts, "Accept: ", 8,				    ((int (*)(void *, char **))				     &content_type_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_all_on_one_line (dest, &malloc_size, &message,				    sip->accept_encodings,				    "Accept-Encoding: ", 17,				    ((int (*)(void *, char **))				     &accept_encoding_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  i =    strcat_headers_all_on_one_line (dest, &malloc_size, &message,				    sip->accept_languages,				    "Accept-Language: ", 17,				    ((int (*)(void *, char **))				     &accept_encoding_2char), &next);  if (i != 0)    {      sfree (*dest);      *dest = NULL;      return -1;    }  message = next;  /* we have to create the body before adding the contentlength */  sstrncpy (message, "Content-Length: ", 16);  message = message + strlen (message);  /* SIPit Day1     ALWAYS RECALCULATE?     if (sip->contentlength!=NULL)     {     i = content_length_2char(sip->contentlength, &tmp);     if (i==-1) {     sfree(*dest);     *dest = NULL;     return -1;     }     sstrncpy(message,tmp,strlen(tmp));     sfree(tmp);     }     else     { */  if (list_eol (sip->bodies, 0))	/* no body */    sstrncpy (message, "0", 1);  else    {      /* BUG: p130 (rfc2543bis-04)         "No SP after last token or quoted string"         In fact, if extra spaces exist: the stack can't be used         to make user-agent that wants to make authentication...         This should be changed...       */      sstrncpy (message, "     ", 5);      content_length_to_modify = message;    }  /*  } */  message = message + strlen (message);  sstrncpy (message, CRLF, 2);  message = message + 2;  /* end of headers */  sstrncpy (message, CRLF, 2);  message = message + 2;  if (list_eol (sip->bodies, 0))    {#ifdef USE_TMP_BUFFER      /* same remark as at the beginning of the method */      sip->message_property = 1;      sip->message = sgetcopy (*dest);#endif      return 0;			/* it's all done */    }  start_of_bodies = message;  pos = 0;  while (!list_eol (sip->bodies, pos))    {      body_t *body;      body = (body_t *) list_get (sip->bodies, pos);      if (sip->mime_version != NULL)	{	  sstrncpy (message, "--++", strlen ("--++"));	  message = message + strlen (message);	  sstrncpy (message, CRLF, 2);	  message = message + 2;	}      i = body_2char (body, &tmp);      if (i != 0)	{	  sfree (*dest);	  *dest = NULL;	  return -1;	}      sstrncpy (message, tmp, strlen (tmp));      sfree (tmp);      message = message + strlen (message);      pos++;    }  if (sip->mime_version != NULL)    {      sstrncpy (message, "--++--", strlen ("--++--"));      message = message + strlen (message);      sstrncpy (message, CRLF, 2);      message = message + 2;      /* ADDED at SIPit day1:  Is this needed for MIME type?         sstrncpy(message,CRLF,2);         message = message + 2;         strncpy(message,"\0",1); */    }  if (content_length_to_modify == NULL)    {      sfree (*dest);      *dest = NULL;      return -1;    }  /* we NOW have the length of bodies: */  {    int size = strlen (start_of_bodies);    /* replace xxxxx by size */    tmp = (char *) smalloc (15);    /* to be improved? !!!could be an issue for authentication!!! */#ifdef OLD_CODE    sprintf (tmp, "%i     ", size);    /* do not use sstrncpy here! */    strncpy (content_length_to_modify, tmp, 5);#else    sprintf (tmp, "%i", size);    strncpy (content_length_to_modify+5-strlen(tmp), tmp, strlen(tmp));#endif    sfree (tmp);  }#ifdef USE_TMP_BUFFER  /* same remark as at the beginning of the method */  sip->message_property = 1;  sip->message = sgetcopy (*dest);#endif  return 0;}#ifdef ENABLE_TRACE#ifdef _WIN32_WCEvoid msg_logrequest (sip_t * sip, char *fmt) {}void msg_logresponse (sip_t * sip, char *fmt) {}#elsevoidmsg_logresponse (sip_t * sip, char *fmt){  char *tmp1;  char *tmp2;  int i;  if (1 == is_trace_level_activate (TRACE_LEVEL4))    {      i = msg_2char (sip, &tmp1);      if (i != -1)	{	  osip_trace (__FILE__, __LINE__, TRACE_LEVEL4, stdout,		      "MESSAGE :\n%s\n", tmp1);	  sfree (tmp1);	}      else	osip_trace (__FILE__, __LINE__, TRACE_LEVEL4, stdout,		    "MESSAGE : Could not make a string of message!!!!\n");    }  if (1 == is_trace_level_activate (TRACE_LEVEL0))    {      i = from_2char (sip->from, &tmp1);      if (i == -1)	return;      i = to_2char (sip->to, &tmp2);      if (i == -1)	return;      osip_trace (__FILE__, __LINE__, TRACE_LEVEL0, NULL, fmt,		  sip->strtline->statuscode, sip->strtline->reasonphrase,		  sip->cseq->method, tmp1, tmp2, sip->cseq->number,		  sip->call_id->number);      sfree (tmp1);      sfree (tmp2);    }}voidmsg_logrequest (sip_t * sip, char *fmt){  char *tmp1;  char *tmp2;  int i;  if (1 == is_trace_level_activate (TRACE_LEVEL4))    {      i = msg_2char (sip, &tmp1);      if (i != -1)	{	  osip_trace (__FILE__, __LINE__, TRACE_LEVEL4, stdout,		      "<app.c> MESSAGE :\n%s\n", tmp1);	  sfree (tmp1);	}      else	osip_trace (__FILE__, __LINE__, TRACE_LEVEL4, stdout,		    "<app.c> MESSAGE :\n Could not make a string of message\n");    }  if (1 == is_trace_level_activate (TRACE_LEVEL0))    {      i = from_2char (sip->from, &tmp1);      if (i == -1)	return;      i = to_2char (sip->to, &tmp2);      if (i == -1)	return;      osip_trace (__FILE__, __LINE__, TRACE_LEVEL0, NULL, fmt,		  sip->cseq->method, tmp1, tmp2, sip->cseq->number,		  sip->call_id->number);      sfree (tmp1);      sfree (tmp2);    }}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -