- struct message *message;
- unsigned long tosend;
- unsigned char buffer[ISDN_TRANSMIT];
- time_t currenttime;
- class Endpoint *epoint;
- int ret;
-
- if ((ret = Port::handler()))
- return(ret);
-
- if (p_vbox_record_start && p_vbox_record_limit)
- {
- time(¤ttime);
- if (currenttime > (p_vbox_record_limit+p_vbox_record_start))
- {
- while(p_epointlist)
- {
- /* send release */
- message = message_create(p_serial, p_epointlist->epoint_id, PORT_TO_EPOINT, MESSAGE_RELEASE);
- message->param.disconnectinfo.cause = 16;
- message->param.disconnectinfo.location = LOCATION_PRIVATE_LOCAL;
- message_put(message);
- /* remove epoint */
- free_epointlist(p_epointlist);
- }
- /* recording is close during destruction */
- delete this;
- return(-1); /* must return because port is gone */
- }
+ /* init trace with given values */
+ start_trace(-1,
+ NULL,
+ vbox?numberrize_callerinfo(vbox->p_callerinfo.id, vbox->p_callerinfo.ntype, options.national, options.international):NULL,
+ vbox?vbox->p_dialinginfo.id:NULL,
+ direction,
+ CATEGORY_CH,
+ vbox?vbox->p_serial:0,
+ message);
+}
+
+
+int record_timeout(struct lcr_timer *timer, void *instance, int index)
+{
+ class VBoxPort *vboxport = (class VBoxPort *)instance;
+ struct lcr_msg *message;
+
+ while(vboxport->p_epointlist) {
+ /* send release */
+ message = message_create(vboxport->p_serial, vboxport->p_epointlist->epoint_id, PORT_TO_EPOINT, MESSAGE_RELEASE);
+ message->param.disconnectinfo.cause = 16;
+ message->param.disconnectinfo.location = LOCATION_PRIVATE_LOCAL;
+ message_put(message);
+ vbox_trace_header(vboxport, "RELEASE from VBox (recoding limit reached)", DIRECTION_IN);
+ add_trace("cause", "value", "%d", message->param.disconnectinfo.cause);
+ add_trace("cause", "location", "%d", message->param.disconnectinfo.location);
+ end_trace();
+ /* remove epoint */
+ vboxport->free_epointlist(vboxport->p_epointlist);