[prev in list] [next in list] [prev in thread] [next in thread] 

List:       python-dev
Subject:    Re: [Python-Dev] Python 2.6 and 3.0 ...and applink.c?
From:       "Bugbee, Larry" <larry.bugbee () boeing ! com>
Date:       2008-02-26 22:06:20
Message-ID: 9418DB6C0B9D434190E54A78E931C3D1036F8BED () XCH-NW-7V1 ! nw ! nos ! boeing ! com
[Download RAW message or body]

I won't pretend to know where the *best* place to put the include is, but python.c \
was suggested to me some time ago.  Just so you know, we tried putting the include in \
some C code that is part of M2Crypto and it did not work because, as we discovered, \
the applink table needs to be part of main().  

Extending that thought...  If somebody wanted to somehow embed python is part of the \
same process in their program as with perhaps IIS, I submit it would not be part of \
main() and therefore benign.

Now, I would like very much to be in a position to experiment with all the \
combinations and prepare a patch that worked, but I do not have the requisite \
Microsoft toolset.  I primarily work with gcc under OSX, Linux, cygwin/mingw.  

This last raises a curiosity question.  Is there a reason why Python.exe cannot be \
built using gcc instead of Visual Studio?  Would not requiring the same VS version \
cause a problem in the field if someone were to receive an extension but had their \
Python built using a different version of VS?  It seems building everything with gcc \
would get around the problem of having to match VS versions.  ...or are we dependent \
on some specific Microsoft library?  I dunno, I gotta ask.

Larry


  -----Original Message-----
  From: "Martin v. Löwis" [mailto:martin@v.loewis.de] 
  Sent: Tuesday, February 26, 2008 1:10 PM
  To: Christian Heimes
  Cc: Bill Janssen; Bugbee, Larry; python-dev@python.org
  Subject: Re: [Python-Dev] Python 2.6 and 3.0 ...and applink.c?
  
  > Do you have an opinion on the initial proposal of applink.c? 
  > The proposal does neither seem harmful nor problematic but I 
  > also don't see how it is going to help the op.
  
  The specific change isn't going to help. What could help is the 
  inclusion of applink.c into dl_nt.c.
  
  This is not about somehow exposing SSL routines to other 
  libraries, but about exposing CRT stuff to openssl, 
  specifically stdin/stdout/stderr, fprintf, fgets, fwrite, 
  fsetmod, feof, ferror, clearerr, fileno, _open, _read, _write, 
  _lseek, _close.
  
  Actually, re-reading OpenSSL, adding it to python.exe (and 
  probably pythonw.exe) would help: They do GetModuleHandle(NULL) 
  (which is the handle to the executable), then GetProcAddress 
  for OPENSSL_Applink.
  
  So I think it's harmless and could help, except for the 
  maintenance burden of having to update our local copy of 
  applink.c every time OpenSSL adds a new slot to their applink 
  table (which they should rarely do).
  
  Of course, the entire approach breaks in cases where Python 
  gets embedded: if, e.g., IIS loads the Python interpreter as 
  a COM scripting host, it would be the IIS executable which 
  would have to include applink.c :-) As IIS doesn't, extension 
  modules that link with their own OpenSSL will continue to 
  produce a warning about the missing applink when they run in 
  the context of a COM server (or some other Python embedding).
  
  Regards,
  Martin
  
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/python-dev%40progressive-comp.com



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic