87c555c3fd1c6088a65840fec3fa8cfc06dc1e04
[sip-router] / data_lump_rpl.c
1 /*
2  * $Id$
3  *
4  */
5
6 #include <string.h>
7 #include "dprint.h"
8 #include "mem/mem.h"
9 #include "data_lump_rpl.h"
10
11
12 struct lump_rpl* build_lump_rpl( char* text, int len )
13 {
14         struct lump_rpl *lump = 0;
15
16         lump = (struct lump_rpl*) pkg_malloc(sizeof(struct lump_rpl));
17         if (!lump)
18         {
19                 LOG(L_ERR,"ERROR:build_lump_rpl : no free memory (struct)!\n");
20                 goto error;
21         }
22
23         lump->text.s = pkg_malloc( len );
24         if (!lump->text.s)
25         {
26                 LOG(L_ERR,"ERROR:build_lump_rpl : no free memory (%d)!\n", len );
27                 goto error;
28         }
29
30         memcpy(lump->text.s,text,len);
31         lump->text.len = len;
32         lump->next = 0;
33
34         return lump;
35
36 error:
37         if (lump) pkg_free(lump);
38         return 0;
39 }
40
41
42
43 void add_lump_rpl(struct sip_msg * msg, struct lump_rpl* lump)
44 {
45         struct lump_rpl *foo;
46
47         if (!msg->reply_lump)
48         {
49                 msg->reply_lump = lump;
50         }else{
51                 for(foo=msg->reply_lump;foo->next;foo=foo->next);
52                 foo->next = lump;
53         }
54 }
55
56
57
58 void free_lump_rpl(struct lump_rpl* lump)
59 {
60         if (lump && lump->text.s)  pkg_free(lump->text.s);
61         if (lump) pkg_free(lump);
62 }
63
64
65