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