- sock_lists completely re-organized
[sip-router] / TODO
1 $Id$
2
3 ( - todo, x - done)
4
5 - fix aliases for tls_port (add_them?)
6 - fix check_sel_op -- add proto for uri proto checks
7 - add via alias for tcp port & infinite tcp conn life
8
9 - fix 2 different fixups for diff. no of parameter
10  (add no of params ot struct action?) -- linked to var. no. of params
11 - alias support fot tcp/tls port numbers
12 - warning builder set_advertised address support
13 - grep parse_uri & replace with parse_sip_msg_uri (e.g do_action!)
14 x update AUTHORS, debian/copyright, ser.8, ser.cfg.5 from stable
15 x update Makefile*  from stable
16 x update all package specs from stable
17 - add BUG checks for  fd > 0 && fd <= maxfd to all selects?
18 x tcp_main_loop: BUG cases should "conitnue;"
19 x change len_gt into and expr (e.g msg:len).
20 - sipit: uri == myself doesn't match tls port = 5061
21 - sipit: fix check_self & *_alias to work with tcp & tls
22 x sipit: fix ipv6 references in check_self
23 x regex subst on uris?
24 x port receive.c pre_script_cb fix from stable
25 - extend alias to include port numbers :
26     something like alias= foo1.bar:5080 foo2.bar foo3.bar:*
27 - extend listen and alias to include port numbers and protocol:
28        tcp foo.bar:5063, udp foo.bar:5062, foo2.bar
29 x added set_advertised_{address,port} -- was: add force_via, force_srcip a.s.o
30 (the advertised addresses should be overwritable from the script).
31 - ? add force_outbound_socket(ip)? (choose an apropriate socket from the
32  listen list for sending the msg; works on udp only)
33
34 release:
35 - unlink_timer_lists -- unsafe ???
36 x print_cseq_num max. size fix.
37 x backport: tcp conn id fix to stable + destroy_tcp 
38 x backport: acc mem. leak fixes
39 x backport: dns mem. leak fixes (resolve.[ch])
40 x backport: id_builder receive_msg mem. leak (msg_translator.c)
41 x backport: check_self ipv6/case fixes (forward.c)
42 x change tcp timeouts to 2 or 3 min?
43 x check via ipv6 fixes and backport to stable
44 x fix kill(0, SIGTERM) on startup error (will kill also the launching shell
45  if non-interactive)
46 - fix modules destroy (some modules will try to free uninitialized resources
47    if modules_init was not called first)
48 x fix CC_VER bug in newer Makefile (move DEFS after CC?)
49 x openbsd 3.2 packages -> doc in share/doc (and not in doc)
50 - openbsd 3.2 -> add jabber and mysql to the package
51 x fix modules makefiles (so that cd modules/foo; make will also link the proper
52    libs)
53 x fix -march=..., or compile w/ i386 for the release
54 x resolver should resolve [ipv6]
55 x remove parse_uri debugging info
56 - fix DBG("<%.*s>", len, _null_)
57 x add -t, -w, -u -g equivalents to the config file
58 x force add rport : force_rport()
59 - kill all the fprintf
60 see also tcp & tm
61
62
63
64 not so critical:
65 x replace  remaining mallocs/frees at least in msg_translator.c
66 - add $(INCLUDES) to the Makefiles
67 x make ser suncc ready
68 - fix parse_cseq!!! (it doesnt parse 1234\n INVITE a.s.o)
69 x fix 0 parameter module f. call
70 x better Via parsing (handle ' ' in uri, eg: foo.bar : 1234 ; received=) and
71  ipv6 addresses ([fec0:aa::01]).
72 - fix format string vulnerability in log()
73 - fix alignment access problems (warning on Sun)
74 x (different way) add request header bitmap field for the modules
75 - introduce variables & function in the script language (cfg. file)
76 - ? variable number of params functions in script (no longer limited to 2)?
77 - kill bind_idx
78 x fix bind_address for tcp (in some  way)
79 x add conflict in debs/rpms/etc (conflict w/ older ser-mysql, ser-jabber)
80 x new packages ser-radius etc
81 x tcp_destroy (called on ser exit)
82 - BUG:?? ipv6 only and try to send to ipv4 => getsendsocket=>0 (send_ipv6=0)
83   the reverse is also true
84 - SUBST lumps for replies (involves setting the send_socket in forward_reply, 
85   before build_res_from_res, & adding it to buid_res_from_res).
86
87
88 High priority:
89 x- parse_uri should not copy anymore the uri members (and it should not 0
90  terminate them anylonger).
91 x fix/replace T_REF/T_UNREF
92 x review all the tm locking
93 x if () {} else {}
94 x plugin interface
95 x ipv6 support
96 x reply ("response line")
97 x drop ACKs for our replies
98 - icmp error handling
99 x add To-tag (for the replies)
100 x add User-Agent (for the replies)
101
102 Low priority:
103 x fix via address someday
104 - fix listen=0.0.0.0 case
105 x forward to received= if present
106 - make it easier to register a statically linkable module.
107 x add support for -u user and -g group (not only -u uid, -g uid)
108 - change uid/gid after opening the sockets
109 - exec improvments (add format strings to it)
110 x command line switch for checking the config file syntax
111 - config file version (a la sendmail)
112 0 loop detection
113 - cfg. file reload
114 - flags for using names or ip adresses in Via ?
115
116 x handle SIGCHLD, SIGHUP
117 - use a  standard lex compatible .lex format (instead of flex)
118 x try & use native compiler & ld if possible
119
120 x make install
121 x init.d scripts (and rc.local? for *BSD or Slackware)
122 x man page
123 - autoconf scripts
124 x Debian package build files
125 x the same for rpm
126 - the same for FreeBSD and Slackware
127
128
129 x jku: branch hash computation over canonical values
130 0 jku: loop checking
131 - jku: try CRC as opposed to MD5
132
133
134 x freopen stdin, stdout, stderr to /dev/null
135 - add a section on building ser & configuring it for maximum performance
136  (-DF_MALLOC, -DNO_DBG, ... sip_warning=0, a.s.o)
137 x add src_port, dst_port, proto to cfg.{y,lex}
138 x generic locking lib
139 x convert tm to use new locking lib
140
141 optimizations:
142 - better timer interface with hashes (a la openbsd)
143 - change lumps (flags for malloc type, recursive? see COND lumps )
144 - atomic ops?
145 - assembly for some very common used function
146 - getsock* cache
147 - fd cache for tcp_send
148 - dns cache? (see DNS)
149 - make option to use openssl MD5 (HMAC_Init(hmac_ctx, (void*)key, 16, md5_md))
150  [ 0.9.7 version is really fast ]
151
152
153 tcp stuff:
154 - timeout on long sends
155 x tcp disable nagle 
156 x set TOS to minimize delay
157 - tcp locking/atomic ops review
158 - tcp fix simultaneous connects (ser process is blocked until connect timeouts
159  => possible DOS)
160
161 tm optimizations:
162
163 - inline/macro/drop for: get_tm_table, set_kr, lock_hash, unlock_hash,
164   set_t, get_t
165 - replace snprintfs int build_uac_request, *_dlg
166 - fix the huge param no. in this functions (use structs if neccessary):
167   build_uac_request, build_uac_request_dlg, t_uac, t_uac_dlg
168 - uri2proxy - t_uac_dlg => extra malloc/free (no ├╝roxy needed here)
169   
170 dns stuff:
171  - dns cache
172  - support for NAPTR (naptr(domain, pref_proto)=> srv_rec + proto => srv(srv_rec, proto) => A or AAAA => A/AAAA(name))
173  - support for fallback (inside the same A/AAAA record, other ip; if fails => other SRV ; if it fails too other NAPTR
174 [see rfc3263]