1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
|
( - todo, x - done)
x change subst_run/str to return error (different from not found)
x change subst_user as on serdev
x tm : fake_env: fake also bind_address (else the default will be used
in the failure route)
- [core] parse_uri support for new uri params
x [core] on sig_child, kill the processes if they don't exit in a
reasonable time
- [doc] document force_rport()
- [fifo] fix fgets error handling (it does not set errno always,
, right now kills all ser if interrupted by a signal on ?solaris?)
- [mem] make shm_realloc be fragmentation friendly: call shm_compact_frags
for the small frags?, don't produce smaller frags -- be wastefull?
- [mem] qm_compact_frags (compacts frags if possible), keep a
fragment count/bucket and if too much mem. is blocked in one bucket
de-frag.
x [mem] investigate: don't produce frag if frag size < request
(should reduce the unrequested fragments number)
x [mem] investigate: keep an used/unused flag per fragment, on free
check if neighboring frags were not used and if so defragment
- [timer] multiple timers? at least ticks should no be affected by the amount
of work done in the timer handlers
- [tcp] ser intiated tcp connections use INADDR_ANY (they should be bound first
to some ip/port ?function of the dest?)
- [tcp] need to confirm fd receipt after send_fd, before closing it (this might
happen in tcp_send new conn.) (see FreeBSD send BUGS for more info)
x [tcp] make send_all, send non-blocking ready ?
x [tcp] tcp_send w/ timeout (to avoid waiting forever to send DOS)
- forward port fixes from testing
- [udp] use recvmsg to get the dst ip address in udp_rcv_loop
(it won't work on solaris, but...)
x nathelper: extract_body broken-> uses content_length value form the
message instead of recalculating it + duplicate code for get_body()
- fix check_sel_op -- add proto for uri proto checks
- [tcp] add setting for infinite tcp conn life?
- fix 2 different fixups for diff. no of parameter
(add no of params to struct action?) -- linked to var. no. of params
x alias support fot tcp/tls port numbers
- warning builder set_advertised address support
- grep parse_uri & replace with parse_sip_msg_uri (e.g do_action!)
x update AUTHORS, debian/copyright, ser.8, ser.cfg.5 from stable
x update Makefile* from stable
x update all package specs from stable
- [tcp] add BUG checks for fd > 0 && fd <= maxfd to all selects?
- [tcp] switch to poll if HAVE_POLL defined (it's unifix so everybody
should have it, but it would be slower on systems emulating it, like
older linuxes)
- [tcp] switch to epoll if HAVE_EPOLL defined (linux 2.6.*)
- [tcp] switch to SIGIO if no epoll (linux only, better than poll)
x tcp_main_loop: BUG cases should "conitnue;"
x change len_gt into and expr (e.g msg:len).
x sipit: uri == myself doesn't match tls port = 5061
-- updated: new socket_info list code should fix it
x sipit: fix check_self & *_alias to work with tcp & tls
-- updated: new socket_info list code should fix it
x sipit: fix ipv6 references in check_self
x regex subst on uris?
x port receive.c pre_script_cb fix from stable
x extend alias to include port numbers :
something like alias= foo1.bar:5080 foo2.bar foo3.bar:*
x extend listen and alias to include port numbers and protocol:
tcp foo.bar:5063, udp foo.bar:5062, foo2.bar
x added set_advertised_{address,port} -- was: add force_via, force_srcip a.s.o
(the advertised addresses should be overwritable from the script).
x ? add force_outbound_socket(ip)? (choose an apropriate socket from the
listen list for sending the msg; works on udp only)
release:
- unlink_timer_lists -- unsafe ???
x print_cseq_num max. size fix.
x backport: tcp conn id fix to stable + destroy_tcp
x backport: acc mem. leak fixes
x backport: dns mem. leak fixes (resolve.[ch])
x backport: id_builder receive_msg mem. leak (msg_translator.c)
x backport: check_self ipv6/case fixes (forward.c)
x change tcp timeouts to 2 or 3 min?
x check via ipv6 fixes and backport to stable
x fix kill(0, SIGTERM) on startup error (will kill also the launching shell
if non-interactive)
- fix modules destroy (some modules will try to free uninitialized resources
if modules_init was not called first)
x fix CC_VER bug in newer Makefile (move DEFS after CC?)
x openbsd 3.2 packages -> doc in share/doc (and not in doc)
- openbsd 3.2 -> add jabber and mysql to the package
x fix modules makefiles (so that cd modules/foo; make will also link the proper
libs)
x fix -march=..., or compile w/ i386 for the release
x resolver should resolve [ipv6]
x remove parse_uri debugging info
- fix DBG("<%.*s>", len, _null_)
x add -t, -w, -u -g equivalents to the config file
x force add rport : force_rport()
- kill all the fprintf
see also tcp & tm
not so critical:
x replace remaining mallocs/frees at least in msg_translator.c
- add $(INCLUDES) to the Makefiles
x make ser suncc ready
- fix parse_cseq!!! (it doesnt parse 1234\n INVITE a.s.o)
x fix 0 parameter module f. call
x better Via parsing (handle ' ' in uri, eg: foo.bar : 1234 ; received=) and
ipv6 addresses ([fec0:aa::01]).
- fix format string vulnerability in log()
- fix alignment access problems (warning on Sun)
x (different way) add request header bitmap field for the modules
- introduce variables & function in the script language (cfg. file)
- ? variable number of params functions in script (no longer limited to 2)?
- kill bind_idx
x fix bind_address for tcp (in some way)
x add conflict in debs/rpms/etc (conflict w/ older ser-mysql, ser-jabber)
x new packages ser-radius etc
x tcp_destroy (called on ser exit)
- BUG:?? ipv6 only and try to send to ipv4 => getsendsocket=>0 (send_ipv6=0)
the reverse is also true
- SUBST lumps for replies (involves setting the send_socket in forward_reply,
before build_res_from_res, & adding it to buid_res_from_res).
High priority:
x- parse_uri should not copy anymore the uri members (and it should not 0
terminate them anylonger).
x fix/replace T_REF/T_UNREF
x review all the tm locking
x if () {} else {}
x plugin interface
x ipv6 support
x reply ("response line")
x drop ACKs for our replies
x add To-tag (for the replies)
x add User-Agent (for the replies)
Low priority:
- icmp error handling
x fix via address someday
- fix listen=0.0.0.0 case (see [udp] use recvmsg...)
x forward to received= if present
- make it easier to register a statically linkable module.
x add support for -u user and -g group (not only -u uid, -g uid)
x change uid/gid after opening the sockets
- exec improvments (add format strings to it)
x command line switch for checking the config file syntax
- config file version (a la sendmail)
0 loop detection
- cfg. file reload
- flags for using names or ip adresses in Via ?
- escape char injection/printing fix (verify all log/printed messages
for terminal escapes and remove them)
x handle SIGCHLD, SIGHUP
- use a standard lex compatible .lex format (instead of flex)
x try & use native compiler & ld if possible
x make install
x init.d scripts (and rc.local? for *BSD or Slackware)
x man page
- autoconf scripts
x Debian package build files
x the same for rpm
x the same for *BSD
x jku: branch hash computation over canonical values
0 jku: loop checking
- jku: try CRC as opposed to MD5
x freopen stdin, stdout, stderr to /dev/null
- add a section on building ser & configuring it for maximum performance
(-DF_MALLOC, -DNO_DBG, ... sip_warning=0, a.s.o)
x add src_port, dst_port, proto to cfg.{y,lex}
x generic locking lib
x convert tm to use new locking lib
optimizations:
- better timer interface with hashes (a la openbsd)
- change lumps (flags for malloc type, recursive? see COND lumps )
- atomic ops?
- assembly for some very common used function
- getsock* cache
- fd cache for tcp_send
- dns cache? (see DNS)
- make option to use openssl MD5 (HMAC_Init(hmac_ctx, (void*)key, 16, md5_md))
[ 0.9.7 version is really fast ]
tcp stuff:
x timeout on long sends
x tcp disable nagle
x set TOS to minimize delay
x tcp locking/atomic ops review
- tcp fix simultaneous connects (ser process is blocked until connect timeouts
=> possible DOS)
tm optimizations:
- inline/macro/drop for: get_tm_table, set_kr, lock_hash, unlock_hash,
set_t, get_t
- replace snprintfs int build_uac_request, *_dlg
- fix the huge param no. in this functions (use structs if neccessary):
build_uac_request, build_uac_request_dlg, t_uac, t_uac_dlg
- uri2proxy - t_uac_dlg => extra malloc/free (no roxy needed here)
dns stuff:
- dns cache
- support for NAPTR (naptr(domain, pref_proto)=> srv_rec + proto => srv(srv_rec, proto) => A or AAAA => A/AAAA(name))
- support for fallback (inside the same A/AAAA record, other ip; if fails => other SRV ; if it fails too other NAPTR
[see rfc3263]
|