Sponsored Content
Full Discussion: attach message at runtime
Top Forums Programming attach message at runtime Post 302653225 by Corona688 on Friday 8th of June 2012 02:34:42 PM
Old 06-08-2012
Yes and no. LD_PRELOAD is a very ugly hack, and shouldn't be used if there's any other possible way. Why can't you just modify your original program to send headers?

LD_PRELOAD can replace entire system calls with your own code -- indiscriminately. If you override write(), you override every single write and any program probably calls write() for quite a few things other than that socket. It might even open sockets you're not aware of, like a UNIX domain socket for logging and that sort of thing.

So it's not as simple as "add header". You need to check if the file descriptor for your fake send() call is a socket or not, and if it is, send headers. Afterwards, call send() directly.

But, if it's not your program, how do you know it calls send() once for per data item? What if it packs ten into one send()? Then you'll have to actually process the data yourself in your fake send() call, inserting 10 headers.

What if it sends in indiscriminate blocks, or worse, one number at a time? Your fake send() call might get three and a half chunks, half a chunk, a single integer, and have to remember these jumbles for later somehow, making you have to worry about threading and all sorts of IPC junk.

Would it be possible to have this program just connect to a different socket instead? Have that program connect to the actual destination, and process data on the way through. This will be far more straightforward than LD_PRELOAD.

Last edited by Corona688; 06-08-2012 at 03:42 PM..
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to attach a file in mail?

Hi, I want to know how to send a mail in unix using mailx or mail or sendmail to send a mail with a file attached. I have read the answers from the other threads but I still don't understand. I want to do it in the command line as well as in script. Can anyone help? DO I need to use... (1 Reply)
Discussion started by: firebirdonfire
1 Replies

2. AIX

Printers.hpJetDirect.attach

Can someone email me a copy of this file? Our AIX 5 cds are at our hotsite and I need a copy to try a fix on a printer. flyingdutchman1978@gmail.com Thanks! (0 Replies)
Discussion started by: schism25
0 Replies

3. Shell Programming and Scripting

attach 2 files using mailx

if test.dat is the file cat test.dat|uuencode test.dat|mailx -s "subject" mailid can be used for attaching test.dat how can i attach more than one file to a mail using mailx (2 Replies)
Discussion started by: anumkoshy
2 Replies

4. Programming

How to limit max no of message in a posix message queue

Hii can anyone pls tell how to limit the max no of message in a posix message queue. I have made changes in proc/sys/fs/mqueue/msg_max But still whenever i try to read the value of max. message in the queue using attr.mq_curmsgs (where struct mq_attr attr) its giving the default value as 10.... (0 Replies)
Discussion started by: mohit3884
0 Replies

5. Shell Programming and Scripting

Can not attach using mailx

hi I know this topic has been discussed a lot in the forum but still couldnt get a exact solution to problem i am facing I have a CSV file genertaed on Unix box and want to be sent to my email . mailx -s "TEST" "xyz@hotmail.com" < 1.csv cat 1.csv | mailx -s "TEST" "xyz@hotmail.com" ... (10 Replies)
Discussion started by: ultimatix
10 Replies

6. Solaris

Help with Update on attach

Hi All, Can any-one explain me how update on attach works on solaris zones. Here is the situation . I am trying to migrate a zones xx-xxx-xxx from Global zone A to Global zone B. Here is the error message zoneadm is displaying zoneadm: zone 'xx-xx-xxx': ERROR: attempt to downgrade... (0 Replies)
Discussion started by: rama krishna
0 Replies

7. Programming

attach is not a member of ofstream

Hi, Code written in C++ got compiled successfully using Sun 4.2 Compiler on Solaris 6. As part of migration, i am using same code and trying to compile using Sun 5.8 C++ compiler(Sun Studio11) on Solaris 10 and could not compile the below line, outStr.attach(1); // here outStr is declared... (1 Reply)
Discussion started by: shafi2all
1 Replies

8. Emergency UNIX and Linux Support

xm block-attach

Hi guys. I'm studding XEN virtualization with 'The Book Of XEN'. in page 46 it has a statement about how to use xm block-attach command that I don't understand. here is the command: xm block-attach 0 tap:aio:/opt/xen/anthony.img /dev/xvda1 w 0and here is sentence: we are attaching anthony.img... (1 Reply)
Discussion started by: majid.merkava
1 Replies

9. Solaris

Metadevice Too Small To Attach

Hi All, I am having trouble with my metadevices and I hope someone can help. when i try to attach my submirror i get the following error: root@xxxx>metattach d31 d21 metattach: tbair1: d21: submirror too small to attach root@xxxx> However, There is a submirror on the other disk which is... (3 Replies)
Discussion started by: A-Train
3 Replies
UDP(4P) 																   UDP(4P)

NAME
udp - Internet User Datagram Protocol SYNOPSIS
#include <sys/socket.h> #include <netinet/in.h> s = socket(AF_INET, SOCK_DGRAM, 0); DESCRIPTION
UDP is a simple, unreliable datagram protocol which is used to support the SOCK_DGRAM abstraction for the Internet protocol family. UDP sockets are connectionless, and are normally used with the sendto and recvfrom calls, though the connect(2) call may also be used to fix the destination for future packets (in which case the recv(2) or read(2) and send(2) or write(2) system calls may be used). UDP address formats are identical to those used by TCP. In particular UDP provides a port identifier in addition to the normal Internet address format. Note that the UDP port space is separate from the TCP port space (i.e. a UDP port may not be "connected" to a TCP port). In addition broadcast packets may be sent (assuming the underlying network supports this) by using a reserved "broadcast address"; this address is network interface dependent. Options at the IP transport level may be used with UDP; see ip(4P). DIAGNOSTICS
A socket operation may fail with one of the following errors returned: [EISCONN] when trying to establish a connection on a socket which already has one, or when trying to send a datagram with the destina- tion address specified and the socket is already connected; [ENOTCONN] when trying to send a datagram, but no destination address is specified, and the socket hasn't been connected; [ENOBUFS] when the system runs out of memory for an internal data structure; [EADDRINUSE] when an attempt is made to create a socket with a port which has already been allocated; [EADDRNOTAVAIL] when an attempt is made to create a socket with a network address for which no network interface exists. SEE ALSO
getsockopt(2), recv(2), send(2), socket(2), intro(4N), inet(4F), ip(4P) 4.2 Berkeley Distribution May 16, 1986 UDP(4P)
All times are GMT -4. The time now is 04:22 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy